目录
步骤 4 清空 iptables、关闭防火墙并禁用 selinux
1.1 实验介绍
1.1.1 关于本实验
本实验通过使用 kubeadm 实现自动化部署 Kubernetes 集群,并用 nginx+Keepalived 实现高
可用。
1.1.2 实验目的
理解 Kubernetes 集群的架构。
理解高可用集群的搭建方式。
掌握 kubeadm 搭建 Kubernetes 集群的方法。
1.2 环境准备
步骤 1 设置节点名
Hostname | Kubernetes集群IP | VIP |
---|---|---|
k8smaster1 | 192.168.186.100 | 192.168.186.50 |
k8smaster2 | 192.168.186.101 | 192.168.186.50 |
k8smaster3 | 192.168.186.102 | 192.168.186.50 |
k8snode1 | 192.168.186.103 | |
k8snode2 | 192.168.186.104 | |
k8snode3 | 192.168.186.105 |
依次在 6 台节点中执行以下命令设置节点名,节点名分别为 k8smaster1、k8smaster2、k8smaster3、k8snode1、k8snode2、k8snode3:
[root@localhost ~]# hostnamectl hostname k8smaster1
[root@localhost ~]# bash
Welcome to 5.10.0-182.0.0.95.oe2203sp3.x86_64
System information as of time: 2024年 04月 09日 星期二 10:17:46 CST
System load: 0.00
Processes: 154
Memory used: 5.6%
Swap used: 0%
Usage On: 9%
IP address: 192.168.186.100
Users online: 2
[root@k8smaster1 ~]#
步骤 2 配置 hosts 节点名解析
所有节点执行以下命令
[root@k8smaster1 ~]# cat <<EOF>>/etc/hosts
> 192.168.186.100 k8smaster1
> 192.168.186.101 k8smaster2
> 192.168.186.102 k8smaster3
> 192.168.186.103 k8snode1
> 192.168.186.104 k8snode2
> 192.168.186.105 k8snode3
> EOF
[root@k8smaster1 ~]#
步骤 3 配置免密登录
在 k8smaster1 节点执行以下命令,然后一直敲击回车,生成秘钥文件:
[root@k8smaster1 ~]# ssh-keygen
在 k8smaster1 节点拷贝秘钥到其他 5 台节点,例如 k8smaster2:
[root@k8smaster1 ~]# ssh-copy-id k8smaster2
[root@k8smaster1 ~]# ssh-copy-id k8smaster3
[root@k8smaster1 ~]# ssh-copy-id k8snode1
[root@k8smaster1 ~]# ssh-copy-id k8snode2
[root@k8smaster1 ~]# ssh-copy-id k8snode3
步骤 4 清空 iptables、关闭防火墙并禁用 selinux
所有节点执行以下命令:
iptables -F
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld && systemctl disable firewalld
步骤 5 关闭交换分区
所有节点执行以下命令:
[root@k8smaster1 ~]# swapoff -a
[root@k8smaster1 ~]# sed -i 's/.*swap.*/#&/' /etc/fstab
步骤 6 开启 ipvs
所有节点执行以下命令:
cat > /etc/sysconfig/modules/ipvs.modules <<END
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq
ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}; do
/sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
if [ 0 -eq 0 ]; then
/sbin/modprobe ${kernel_module}
fi
done
END
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
步骤 7 设置时间同步
所有节点执行以下命令:
yum install -y chrony
systemctl enable --now chronyd
chronyc sources
步骤 8 配置 yum 源
所有节点执行以下命令,配置 kubernetes 的 yum 源:
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
#exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
步骤 9 安装 docker
所有节点执行以下命令,安装启动 docker:
1、下载官方repo
cd /etc/yum.repos.d/
curl -O https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' docker-ce.repo
2. 安装docker
yum install -y docker-ce
# 设置国内镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
]
}
EOF
设置docker开机启动并启动
# systemctl enable --now docker
查看docker版本
# docker version
# 所有节点执行以下命令,将 docker 的 CgroupDriver 改成 systemd,在/etc/docker/daemon.json 中添加配置:
{
"exec-opts": ["native.cgroupdriver=systemd"