02: kubernetes安装
参考官网:http://docs.kubernetes.org.cn/
1.1 集群部署
1、集群结构
192.168.56.11 linux-node1 linux-node1.example.com # master
192.168.56.12 linux-node2 linux-node2.example.com # node1
192.168.56.13 linux-node3 linux-node3.example.com # node2
2、初始化环境
'''1、关闭防火墙与内核'''
[root@linux-node1 ~]# setenforce 0
[root@linux-node1 ~]# sed -i "/^SELINUX/s/enforcing/disabled/" /etc/selinux/config
[root@linux-node1 ~]# systemctl stop firewalld && systemctl disable firewalld '''2、配置hosts记录解析(三台机器都需要配置)'''
[root@linux-node1 ~]# vi /etc/hosts
'''
192.168.56.11 linux-node1 linux-node1.example.com
192.168.56.12 linux-node2 linux-node2.example.com
192.168.56.13 linux-node3 linux-node3.example.com
'''
[root@linux-node1 ~]# scp /etc/hosts 192.168.56.12:/etc/
[root@linux-node1 ~]# scp /etc/hosts 192.168.56.13:/etc/ '''3、添加kubernetes镜像,阿里云yum源'''
[root@linux-node1 ~]# vi /etc/yum.repos.d/kubernetes.repo
'''
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
''' '''4、下载docker镜像,阿里云yum源(三台机器都需要配置)'''
[root@linux-node1 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo '''5、将192.168.56.11中生成的kubernetes.repo和docker-ce.repo YUM源复制到另外两台机器 '''
[root@linux-node1 ~]# scp /etc/yum.repos.d/{kubernetes.repo,docker-ce.repo} 192.168.56.12:/etc/yum.repos.d/
[root@linux-node1 ~]# scp /etc/yum.repos.d/{kubernetes.repo,docker-ce.repo} 192.168.56.13:/etc/yum.repos.d/
3、软件安装:docker-ce kubeadm kubectl kubelet
'''1、软件安装docker-ce kubeadm kubectl kubelet(三台机器都要安装)'''
[root@linux-node1 ~]# yum -y install kubeadm-1.11.2 kubectl-1.11.2 kubelet-1.11.2 docker-ce
[root@linux-node1 ~]# systemctl enable docker kubelet # 设置开机自启动
[root@linux-node1 ~]# systemctl start docker
[root@linux-node1 ~]# systemctl status docker
### 注:如果报错:rpm -Va --nofiles --nodigest (清空yum缓存并更新域名源)
### yum clean all && rpm --rebuilddb && yum -y update '''2、配置镜像加速器:https://www.daocloud.io/mirror(三台机器都要安装)'''
[root@linux-node2 ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
[root@linux-node2 ~]# cat /etc/docker/daemon.json # 执行上面命令后就会将镜像源修改成国内的地址
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
[root@linux-node2 ~]# systemctl restart docker # 重启docker生效
'''3、先拉取镜像,如果有代理服务器,则不需要(三台机器都要拉取)'''
# curl https://raw.githubusercontent.com/aishangwei/kubernetes/master/scripts/pull_k8s_cluster_img.sh | bash
4、关闭系统交互分区(由于k8s不兼容交换分区)
'''三台机器都有关闭交换分区 '''
[root@linux-node1 ~]# swapoff -a
[root@linux-node1 ~]# vim /etc/fstab
#/dev/mapper/centos-swap .... # 注释掉交互分区
5、安装master(只需在master机器:192.168.56.11机器执行)
'''1. 使用kubernetes镜像安装master '''
###注:默认的dns地址为10.96.0.10 ,修改 service- cidr有可能导致无法解析
[root@linux-node1 ~]# kubeadm init --kubernetes-version=v1.11.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=all
--kubernetes-version=v1.11.2 # 指定kuberrnetes版本
--pod-network-cidr=10.244.0.0/16 # 指定 Pod 网络的范围
--service-cidr=10.96.0.0/12 # 指定service网络范围
--ignore-preflight-errors=all # 忽略版本报错
''' # 注:一定要记得把下面的信息保留,node加入master时需要此命令
kubeadm join 192.168.56.11:6443 --token awp38q.08w9u2ulo11hxl69 --discovery-token-ca-cert-hash sha256:c3892c27bb7d4cfd2cf90aaa34ff8e1b3dbd6620a24e13acf684673c02eb7419 --ignore-preflight-errors=all
''' '''2. 把认证配置文件拷贝到当前用户下,这样使用kubectl才能操作我们的集群 '''
[root@linux-node1 ~]# mkdir -p $HOME/.kube
[root@linux-node1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # 拷贝管理员配置文件
[root@linux-node1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config # 更改config配置文件权限 '''3. Master安装完成后使用下面命令查看集群信息 '''
[root@linux-node1 ~]# kubectl get cs # 获取集群状态
[root@linux-node1 ~]# kubectl get componentstatus # 查看Master状态
[root@linux-node1 ~]# kubectl get nodes # 查看节点信息
[root@linux-node1 ~]# kubectl get pods -n kube-system # master显示未准备好状态,因为是没有安装flannel
[root@linux-node1 ~]# kubectl get ns # 查看命名空间(NameSpace)
6、安装 Flannel 网络插件(只需在master机器:192.168.56.11机器执行)
### 注意:需要 kubeadm init 时设置 --pod-network-cidr=10.244.0.0/16
'''1. 安装 Flannel 网络插件 '''
[root@linux-node1 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml '''2. 可以看到master节点已经变成Ready状态 '''
[root@linux-node1 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
linux-node1.example.com Ready master 13m v1.11.2 '''3. 可以看到pods都变running状态 '''
[root@linux-node1 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-78fcdf6894-97mq2 1/1 Running 0 11m
coredns-78fcdf6894-cgmk7 1/1 Running 0 11m
7、将node节点加入master(在其他两台node节点中执行)
'''1. 在192.168.56.12和192.168.56.13中执行命令加入master '''
### 语法:kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-certhash sha256:<hash>
[root@linux-node1 ~]# kubeadm join 192.168.56.11:6443 --token awp38q.08w9u2ulo11hxl69 --discovery-token-ca-cert-hash sha256:c3892c27bb7d4cfd2cf90aaa34ff8e1b3dbd6620a24e13acf684673c02eb7419 --ignore-preflight-errors=all '''2. 执行完成后在master(192.168.56.11)看两台node节点接入状态 '''
[root@linux-node1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
linux-node1.example.com Ready master 39m v1.11.2
linux-node2.example.com Ready <none> 3m v1.11.2
linux-node3.example.com Ready <none> 2m v1.11.2
1.2 在k8s机器中创建pod
1、使用命令创建pod
'''1. 使用命令在集群中创建一个nginx镜像容器 '''
[root@linux-node1 ~]# kubectl run nginx --replicas=1 --labels="app=example" --image=nginx:1.10 --port=80
–replicas:指定副本数
nginx:名称
–labels:标签
–image:使用的镜像(默认从dockerhub拉取)
–port:容器的端口
[root@linux-node1 ~]# kubectl get pods # 获取默认namaspace(default)下的pod
NAME READY STATUS RESTARTS AGE
nginx-c65569d85-667bn 1/1 Running 0 7m
[root@linux-node1 ~]# kubectl describe pod nginx-c65569d85-667bn # 查看指定镜像详细信息
[root@linux-node1 ~]# kubectl delete deployment nginx-c65569d85-667bn # 删除指定pod
2、通过声明式语法定义Pods
### vim db.yml
### kubectl explain pod # 查看下面参数意义
apiVersion: v1 # 描述版本 (查看版本号命令:kubectl api-versions)
kind: Pod # 资源类型
metadata: # 原数据
name: db # pod名称
labels: # 便签名称
type: db # 值是db
vendor: MongoLabs # 标签
spec: # 描述容器信息
containers: # 指容器
- name: db # 指定pod里的一个db容器
image: mongo:3.3 # 镜像名称
command: ["mongod"] # 执行的命令
args: ["--rest", "--httpinterface"] # 执行启动命令的参数
'''1. 使用申明式语法创建pod并查看pod详细信息 '''
[root@linux-node1 ~]# vi db.yml # 新建定义pod文件
[root@linux-node1 ~]# kubectl create -f db.yml # 使用db.yml创建pod
[root@linux-node1 ~]# kubectl get pods # 查看创建的pod信息
[root@linux-node1 ~]# kubectl get pods -o wide # 显示pod详细信息
[root@linux-node1 ~]# kubectl get pods -o json # 以json格式显示pod信息
[root@linux-node1 ~]# kubectl describe pod db # 查看 pod名称为db的描述信息
[root@linux-node1 ~]# kubectl delete pod db # 使用yml安装的pod可以直接使用此命令删除
11111111111111
02: kubernetes安装的更多相关文章
- kubernetes安装-二进制
主要参考https://github.com/opsnull/follow-me-install-kubernetes-cluster,采用Flanel和docker 系统信息 角色 系统 CPU C ...
- Docker系列(九)Kubernetes安装
环境: A.B两天机器A机器IP:192.169.0.104,B机器IP:192.168.0.102,其中A为Master节点,B为Slave节点 操作系统:Centos7 Master与Slave节 ...
- 【CAS单点登录视频教程】 第02集 -- 安装CAS
目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...
- 轻松加愉快的 Kubernetes 安装教程
轻松加愉快的 Kubernetes 安装教程 马哥Linux运维 2 days ago 作者:无聊的学习者 来源:见文末 在国内安装 K8S,一直是大家很头痛的问题,各种麻烦,关键是还不知道需要下载什 ...
- Kuboard Kubernetes安装
一.简介 Kubernetes 容器编排已越来越被大家关注,然而使用 Kubernetes 的门槛却依然很高,主要体现在这几个方面: 集群的安装复杂,出错概率大 Kubernetes相较于容器化,引入 ...
- kubernetes安装-kubeadm
系统信息 角色 系统 CPU Core memory master 18.04.1-Ubuntu 4 8G slave 18.04.1-Ubuntu 4 4G 安装前准备(主节点和从节点都需要执行) ...
- 服务网格Istio入门-详细记录Kubernetes安装Istio并使用
我最新最全的文章都在南瓜慢说 www.pkslow.com,文章更新也只在官网,欢迎大家来喝茶~~ 1 服务网格Istio Istio是开源的Service Mesh实现,一般用于Kubernetes ...
- 假期作业02:安装JDK与文本编辑器并编写第一个Java程序
假期作业02:安装JDK与文本编辑器并编写第一个Java程序 一.安装JDK与文本编辑器并编写第一个java程序 首先在oracle官网(需要创建账号,进行登录后方可使用)按照自己的需求下载JDK(h ...
- kubernetes安装
本文主要参考自: https://blog.csdn.net/real_myth/article/details/78719244 还有一份更适合在生产环境使用的超强高可用(多master,nginx ...
随机推荐
- Python3学习笔记(十三):装饰器
装饰器就是一个闭包,它的主要作用是在不改变原函数的基础上对原函数功能进行扩展. 我们先来写一个简单的函数: from time import sleep def foo(): print(" ...
- phpexcel 导出数字类型字段导出错误或者为空解决办法 (原)
跟我们写excel时候一样,手机号或者较长的数字类型,或被科学计数法和谐,但是如果类型是字符串,长一些的数字就不受影响了. 解决导出被和谐的最简单易懂的,就是最前面拼接‘ ’ 空格,或者字母符号之类, ...
- JS框架_(JQuery.js)绚丽的3D星空动画
百度云盘: 传送门 密码:8ft8 绚丽的3D星空动画效果(纯CSS) (3D星空动画可以用作网页背景,Gary为文本文字) <!doctype html> <html lang=& ...
- [CSP-S模拟测试]:字符交换(贪心+模拟)
题目传送门(内部题136) 输入格式 输入文件第一行为两个正整数$n,k$,第二行为一个长度为$n$的小写字母字符串$s$. 输出格式 输出一个整数,为对字符串$s$进行至多$k$次交换相邻字符的操作 ...
- [CSP-S模拟测试]:小W的魔术(数学 or 找规律)
题目传送门(内部题130) 输入格式 第一行一个整数$n$,表示字符串的长度. 第二行一个只包含小写字母的字符串$s$. 输出格式 一行一个整数表示答案对$998244353$取模后的结果. 样例 样 ...
- idea为项目添加ignore文件忽略unversion的文件
最近初学Git,而且在使用的IDE是IntelliJ IDEA,发现IDEA在提交项目到本地仓库的时候,会把.idea文件夹中的内容也提交上去,这里面放的是一些项目的配置信息,包括历史记录,版本控制信 ...
- Java并发编程的艺术笔记(八)——线程池
一.线程池的主要处理流程 ThreadPoolExecutor执行execute方法分下面4种情况. 1)如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(注意,执行这一步需要获 ...
- line-height与vertical-align:简单的属性不简单
学习过CSS肯定对line-height与vertical-align两个属性有印象:line-height用来设置行高,vertical-align用来设置文本垂直方向的对齐方式,两种看似十分简单, ...
- 权重随机算法Java实现
权重随机算法在抽奖,资源调度等系统中应用还是比较广泛的,一个简单的按照权重来随机的实现,权重为几个随机对象(分类)的命中的比例,权重设置越高命中越容易,之和可以不等于100: 简单实现代码如下: ? ...
- no CUDA-capable device is detected,或者GPU is lost
出现以下问题,程序只能运行一次,而且每运行一次显卡就不见了,出现以下情况,只能重启才可以再次检测到: 最后解决: 我本来安装的是cuda9.0 但是(下面显示是10): 起初是因为说他表示最高可以到 ...