1.主机环境预设
本示例中的Kubernetes集群部署将基于以下环境进行。
-
OS: Rocky 8.5
-
Kubernetes:v1.24.3
-
Container Runtime: Docker CE 20.10.10
-
CRI:cri-dockerd v0.2.5
2.初始化
使用kubeadm部署Kubernetes集群的前提条件
◼ 支持Kubernetes运行的Linux主机,例如Debian、RedHat及其变体等
◼ 每主机2GB以上的内存,以及2颗以上的CPU
◼ 各主机间能够通过网络无障碍通信
◼ 独占的hostname、MAC地址以及product_uuid,主机名能够正常解析
◼ 放行由Kubernetes使用到的各端口,或直接禁用iptables
◼ 禁用各主机的上的Swap设备
◼ 各主机时间同步
设定时钟同步
若节点可直接访问互联网,安装chrony程序包后,可直接启动chronyd系统服务,并设定其随系统引导而启动。随后,chronyd服务即能够从默认的时间服务器同步时间。
~# yum -y install chrony
~# systemctl start chrony.service
建议用户配置使用本地的的时间服务器,在节点数量众多时尤其如此。存在可用的本地时间服务器时,修改节点的/etc/chrony/chrony.conf配置文件,并将时间服务器指向相应的主机即可,配置格式如下:
server CHRONY-SERVER-NAME-OR-IP iburst
主机名称解析
出于简化配置步骤的目的,本测试环境使用hosts文件进行各节点名称解析,文件内容如下所示。其中,我们使用kubeapi主机名作为API Server在高可用环境中的专用接入名称,也为控制平面的高可用配置留下便于配置的余地。
[root@master1 ~]#cat /etc/hosts
10.0.0.8 master1.yang.org
10.0.0.18 master2.yang.org
10.0.0.28 master3.yang.org
10.0.0.78 node1.yang.org
10.0.0.88 node2.yang.org
10.0.0.108 node3.yang.org
禁用Swap设备
部署集群时,kubeadm默认会预先检查当前主机是否禁用了Swap设备,并在未禁用时强制终止部署过程。因此,在主机内存资源充裕的条件下,需要禁用所有的Swap设备,否则,就需要在后文的kubeadm init及kubeadm join命令执行时额外使用相关的选项忽略检查错误。
~# sed -i 's/.*swap.*/#&/' /etc/fstab ;swapoff -a
禁用默认的防火墙服务
[root@master1 ~]#systemctl disable --now firewalld
3.在所有结点安装docker-ce
首先,生成docker仓库
#cat > /etc/yum.repos.d/docker.repo <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/8/x86_64/stable/
EOF
安装指定的docker版本
~# yum clean all
~# yum list docker-ce --showduplicates
~# yum -y install docker-ce-20.10.10
配置docker的镜像加速服务
[root@master1 ~]#cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.