集群信息
1. 节点规划
部署k8s集群的节点按照用途可以划分为如下2类角色:
- master:集群的master节点,集群的初始化节点,基础配置不低于2C4G
- slave:集群的slave节点,可以多台,基础配置不低于2C4G
本例为了演示slave节点的添加,会部署一台master+2台slave,节点规划如下:
主机名 | 节点ip | 角色 | 部署组件 |
k8s-master | 192.168.136.10 | master | etcd, kube-apiserver, kube-controller-manager, kubectl, kubeadm, kubelet, kube-proxy, flannel |
k8s-slave1 | 192.168.136.11 | slave | kubectl, kubelet, kube-proxy, flannel |
k8s-slave2 | 192.168.136.12 | slave | kubectl, kubelet, kube-proxy, flannel |
2. 组件版本
组件 | 版本 | 说明 |
CentOS | 7.8.2003 | |
Kernel | Linux 3.10.0-1062.9.1.el7.x86_64 | |
etcd | 3.3.15 | 使用容器方式部署,默认数据挂载到本地路径 |
coredns | 1.6.2 | |
kubeadm | v1.16.2 | |
kubectl | v1.16.2 | |
kubelet | v1.16.2 | |
kube-proxy | v1.16.2 | |
flannel | v0.11.0 |
安装前准备工作
1. 设置hosts解析
操作节点:所有节点(k8s-master,k8s-slave
)均需执行
- 修改hostname hostname必须只能包含小写字母、数字、","、"-",且开头结尾必须是小写字母或数字
- 添加hosts解析
2. 调整系统配置
操作节点: 所有的master和slave节点(k8s-master,k8s-slave
)需要执行
本章下述操作均以k8s-master为例,其他节点均是相同的操作(ip和hostname的值换成对应机器的真实值)
- 设置安全组开放端口
如果节点间无安全组限制(内网机器间可以任意访问),可以忽略,否则,至少保证如下端口可通: k8s-master节点:TCP:6443,2379,2380,60080,60081UDP协议端口全部打开 k8s-slave节点:UDP协议端口全部打开
- 设置iptables
- 关闭swap
- 关闭selinux和防火墙
- 修改内核参数
- 设置yum源
3. 安装docker
操作节点: 所有节点
部署kubernetes
1. 安装 kubeadm, kubelet 和 kubectl
操作节点: 所有的master和slave节点(k8s-master,k8s-slave
) 需要执行
2. 初始化配置文件
操作节点: 只在master节点(k8s-master
)执行
对于上面的资源清单的文档比较杂,要想完整了解上面的资源对象对应的属性,可以查看对应的 godoc 文档,地址: https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2。
3. 提前下载镜像
操作节点:只在master节点(k8s-master
)执行
重要更新:如果出现不可用的情况,请使用如下方式来代替:
- 还原kubeadm.yaml的imageRepository
- 使用docker hub中的镜像源来下载,注意上述列表中要加上处理器架构,通常我们使用的虚拟机都是amd64
4. 初始化master节点
操作节点:只在master节点(k8s-master
)执行
若初始化成功后,最后会提示如下信息:
接下来按照上述提示信息操作,配置kubectl客户端的认证
**⚠️注意:**此时使用 kubectl get nodes查看节点应该处于notReady状态,因为还未配置网络插件
若执行初始化过程中出错,根据错误信息调整后,执行kubeadm reset后再次执行init操作即可
5. 添加slave节点到集群中
操作节点:所有的slave节点(k8s-slave
)需要执行 在每台slave节点,执行如下命令,该命令是在kubeadm init成功后提示信息中打印出来的,需要替换成实际init后打印出的命令。
6. 安装flannel插件
操作节点:只在master节点(k8s-master
)执行
- 下载flannel的yaml文件
- 修改配置,指定网卡名称,大概在文件的190行,添加一行配置:
- (可选)修改flannel镜像地址,以防默认的镜像拉取失败,同样是在170和190行上下的位置
- 执行安装flannel网络插件
7. 设置master节点是否可调度(可选)
操作节点:k8s-master
默认部署成功后,master节点无法调度业务pod,如需设置master节点也可以参与pod的调度,需执行:
8. 验证集群
操作节点: 在master节点(k8s-master
)执行
创建测试nginx服务
查看pod是否创建成功,并访问pod ip测试是否可用
9. 部署dashboard
- 部署服务
- 查看访问地址,本例为30133端口
- 使用浏览器访问 https://192.168.136.10:30133,其中192.168.136.10为master节点的外网ip地址,chrome目前由于安全限制,测试访问不了,使用firefox可以进行访问。
- 创建ServiceAccount进行访问
10. 清理环境
如果你的集群安装过程中遇到了其他问题,我们可以使用下面的命令来进行重置: