Kubernetes集群部署史上最详细(一)Kubernetes集群安装

时间:2022-05-20 18:16:51

适用部署结构以及版本

本系列中涉及的部署方式和脚本适用于1.13.x和1.14,而且采取的是二进制程序部署方式。

脚本支持的部署模式

最小部署模式 3台主机,1台为k8s的master角色,其余2台为k8s的node角色,etcd以集群形式运行在3台上都部署(我在测试环境中使用的部署规模)

中等部署模式 6台主机,3台为k8s的master角色,其余3台为k8s的node角色,etcd以集群形式部署在3台master机器上

大型部署模式 9台主机,3台为k8s的master角色,3台为k8s的node角色,其余3台etcd以集群形式部署独立部署在单独的机器上

超大型部署 3+3+N台主机 3台为k8s的master角色 3台etcd以集群形式部署独立部署在单独的机器上 N台node角色

执行说明

  1. 所有主机配置免密登陆
  2. 操作系统版本保持一致(我的环境Centos 7.4)
  3. 网络设置保持一致,尤其是master和node角色主机相互通信的网卡名称要一致
  4. 所有脚本在任意一台master角色主机上执行
  5. 执行完1-system_initialization.sh脚本后,为了提高速度建议把所需要的安装包提前下载到/tmp/work_dir目录中无需解压
  6. 保证你下载的安装包版本和脚本中的一致,请提前查看每个组件的安装脚本
  7. 执行完5-installFlannel.sh之后建议把pod-infrastructure提前下载到本地镜像仓库中,这是k8s所需基础容器。否则后续因为下载很慢会导致你部署的POD失败。
  8. 在执行8-installAddons-CoreDNS.sh的时候建议先查看该脚本把里面所需要的镜像提前拉取下来,避免由于网络原因导致脚本执行出错
  9. 根据自己的环境修改environment.sh环境变量脚本
  10. 目前脚本还没有做如何加入现有集群的功能,所以如果一台主机要想加入现有k8s集群成为node角色需要手动部署
  11. 目前如果是多台master主机需要自行配置haproxy或者Nginx做代理
  12. 脚本中有大量注释其实就是为了说明语句或者参数或者这一步是做什么的,其目的也是为了便于理解和学习

kubernetes集群的master角色其实只需要安装kube-apiserver, kube-scheduler, kube-controller-manager;而Node角色只需要安装
kube-proxy、kubelet、docker、flannel组件;但是本版本的脚本中在Master角色上我们也安装了kube-proxy、kubelet、docker、flannel
这些组件这就变成Master主机其实也可提供Node角色的功能,但是为了避免非特殊说明的情况下POD被调度到Master主机上,我们在Master主机上
打了污点。之所以在Master上也安装那些组件主要是为了让Master可以访问service、POD的网络以及在需要的情况下在Master主机上运行POD。

其实部署脚本没有太多执行逻辑部署基本都是下载、解压、设置配置文件、拷贝、启动这些常规操作,另外安装kubernetes很多帖子都是kubeadm安装,这种方式的确安装方便,但是对于一些细节你将无法了解,所以为了理解这些组件通过二进制程序安装更合适。

关于bootstrap不太好理解,建议提前看看这篇文章:Kubernetes TLS bootstrapping 那点事

下图是我安装完成后的监控图

Kubernetes集群部署史上最详细(一)Kubernetes集群安装

Kubernetes集群部署史上最详细(一)Kubernetes集群安装

关于监控我会在另外一个文章中说明

代码下载

脚本代码从这里下载