文章目录
- 3.1 更新yum
- 3.2 安装Docker
- 3.3 修改hosts文件
- 3.4 系统基础前提配置
- 3.5 安装 kubeadm, kubelet and kubectl
- 3.6 配置国内镜像
- 3.7 kube init初始化master
- 3.8 部署calico网络插件
- 3.9 kube join
- 3.10 新建Pod测试整个集群
- 四、尾声
一、前言
本文讲述从零开始搭建k8s集群,均使用国内镜像,版本均统一,使用两个虚拟机,一个主节点,一个从节点,保证k8s一次搭建成功。
注意:Kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。
二、Centos最小化安装
安装K8S需要使用Centos7,每个机器至少2个处理器和2G,这是k8s官网是要求的。
2.1 vmware最小化安装centos7
vmware最小化安装centos7,下载好镜像,不断下一步,直到完成。
先到官网 https://www.centos.org/download/ 下载centos.iso,如下:
国内的,直接选阿里云镜像就好 http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
具体安装可以参见
其实没这么麻烦,只需要配置磁盘这个必选就好了,其他都不用配置,不断下一步,最好就安装好了。
2.2 配置静态IP
创建好的虚拟机 ping www.baidu.com 失败,需要配置好静态ip,才能连同外网。
输入 vi /etc/sysconfig/network-scripts/ifcfg-ens33 然后按照如下图编辑,最后 service network restart 保存即可
BOOTPROTO=static ONBOOT=yes DNS1=114.114.114.114 这三个是写死的,那么其他三个ip 子网掩码 网关是如何确定的呢?这个和本机的ip无关,只和vmware的虚拟网络编辑器有关。
vware的虚拟网络编辑器,需要配置子网掩码、子网ip、网关ip
首先是子网掩码,一般都是C类,配置为 255.255.255.0 ,没什么好说的,然后是子网ip,这个子网ip要受到子网掩码的限制,只有前面三个字节,最后一个字节为0,一般是 xxx.xxx.xxx.0,这里子网IP配置为192.168.100.0,然后再是网关(就是虚拟网络编辑器的ip),网关ip又受到子网ip的限制,前面三个字节需要和子网ip一样,表示是这个子网段内的ip,这里配置为192.168.100.2,其他可以配置为该子网内任意一个 192.168.100.1 - 192.168.100.127,如下图:
配置好虚拟网络编辑器之后,再来看静态ip的三个字段,NETMASK=255.255.255.0 没问题,c类都是这样配置,然后是网关ip GATEWAY,这里必须和虚拟网络编辑器的那个网关ip一致就是192.168.100.2,所以配置GATEWAY=192.168.100.2,然后就是自己的IPADDR了,要保证两点,在子网段内 且 不和网关ip及该子网段内其他ip冲突,在子网段内就是 192.168.100 开头,不和网关ip及该子网段内其他ip冲突,就是最后一个不能为 2 或者其他用过的,所以一个是 150 一个是151,即 192.168.100.150 和 192.168.100.151 。
配置静态ip之后,就可以用xshell连接并操作了,不用再使用vmware敲命令,也有yum命令,缺少什么都可以随时下载,比如最小安装没有wget命令,可以yum -y install wget。
因为我们的两个虚拟机需要作为K8S的两个节点,每个虚拟机处理数量一定要大于等于2,每个虚拟机内存数量一定要大于等于2G,vmware默认是每个虚拟机处理器数量是1,内存是1G,需要手动设置一下,
三、K8S集群搭建
从3.1到3.6,所有机器都执行
3.7和3.8只在主节点上执行
3.9的kube join只在从节点上执行(测试kubectl get nodes在主节点上执行,因为从节点没有.kube/,无法通过kubectl操作k8s集群)
3.10集群新建pod测试,在主节点上执行,因为从节点没有.kube/,无法通过kubectl操作k8s集群
3.1 更新yum
3台机器都需要执行
3.2 安装Docker
在每一台机器上都安装好Docker,版本为18.09.0
01 安装必要的依赖
02 设置docker仓库
然后设置一下阿里云镜像加速器
03 安装docker
04 启动docker
05 检查docker是否安装并启动好了
3.3 修改hosts文件
01 机器192.168.100.150执行两句
02 机器192.168.100.151执行两句
03 每天机器上都要测试
每个步骤配置完成之后,都要局部测试,这样才不会出问题
3.4 系统基础前提配置
每个机器上都要执行(机器192.168.100.150 和 机器192.168.100.151),如下:
3.5 安装 kubeadm, kubelet and kubectl
每个机器上都要执行(机器192.168.100.150 和 机器192.168.100.151),如下:
(1)配置yum源
(2)安装kubeadm&kubelet&kubectl
这三个东西一定要保证版本统一,一定要安装这个安装顺序来完成
因为kubeadm依赖kubelet,如果先安装kubeadm,则kubelet的1.23版本就会被安装上去,然后再执行 yum install -y kubelet-1.14.0-0
会安装不上去,然后版本不统一,主节点初始化init报错
这才是正确的
及时测试:
版本必须都是 1.4.0,如果版本错了要删除
(3) docker和k8s设置同一个cgroup
3.6 配置国内镜像
(1) 创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像
(2) 运行脚本和查看镜像
至此,上面的3.1到3.6是每个节点都要执行的,就是机器 192.168.100.150 和 192.168.100.151 都要同时执行的,在Xshell里面,通过
3.7 kube init初始化master
到此为止,两个机器 192.168.100.150 和 192.168.100.151 还需要没有主次之分,还没有说哪个是k8s的主节点,现在 3.7 这个步骤只需要在 192.168.100.150 节点执行,让这个机器成为k8s主节点。
(2)初始化master节点
在 192.168.100.150 机器上执行,然后这个 --apiserver-advertise-address=192.168.100.150 这样写
会得到一句
kubeadm join 192.168.100.150:6443 --token 7oahxf.bk0rywevgu0xjouy
–discovery-token-ca-cert-hash sha256:4f84a48cc41343848d0b2f807c38937bc96d3d43e821f06b0c143a5282a38204
一定要复制粘贴出来,下一个步骤在 192.168.100.151 机器上执行这句。
初始化完成执行后,继续只在 主节点 上执行,这三句,如下:
注意:我们所说的只有主节点才能通过 kubectl 命令操作k8s集群是因为,只有主节点上才完成这三步操作,才有 .kube 目录,如果从节点上也完成了这三句,也有 .kube 目录,也是可以通过 kubectl 命令操作k8s集群的。
(4) 测试:验证pod和健康检查(这两句也是只在master节点上执行)
3.8 部署calico网络插件
k8s中,网络插件是为了k8s集群内部通信,所以必须安装一个网络插件,有很多选择,这里选择calico,同样在master节点上操作
测试验证是否安装成功,这里的calico两个显示Running就表示安装成功了。
从3.1到3.6,所有机器都执行,3.7和3.8只在主节点上执行,接下来的3.9的kube join只在从节点上执行(测试kubectl get nodes在主节点上执行,因为从节点没有.kube/,无法通过kubectl操作k8s集群)
3.9 kube join
(1) 在从节点上执行kube join命令,如下
记得保存初始化master节点的最后打印信息,注意这边大家要自己的,下面我的只是一个参考
(2)在master节点上检查集群信息(node的正常状态是ready,pod的正常状态是running)
当每个节点都是Ready,表示完成。
3.10 新建Pod测试整个集群
(1)定义pod.yml文件,比如pod_nginx_rs.yaml
(2)根据pod_nginx_rs.yml文件创建pod
(3)查看pod
(4)感受通过rs将pod扩容
(5)删除pod
四、尾声
从零开始搭建k8s集群,完成了。
天天打码,天天进步!!