1. 设置系统主机名及hosts文件
记得将所有主机的主机名与IP的解析都写入/etc/hosts
文件。
2. 更新系统&设置存储库
yum update -y
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 相关设置
3.1. 禁用iptables和firewalld服务
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables
3.2. 禁用SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
3.3. 禁用swap分区
永久关闭swap分区,编辑/etc/fstab
文件,将swap行的内容注释掉。
# /dev/mapper/xxx swap xxx
3.4. 调整内核参数
往/etc/sysctl.d/k8s.conf
文件中追加如下三行内容:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
依次执行如下命令:
sysctl -p
modprobe br_netfilter
lsmod | grep br_netfilter
4. 安装docker和cri-dockerd(所有节点执行)
4.1. 安装docker
- 移除旧版docker。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装docker及其依赖库。
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动Docker,设置开机自启动。
# 启动docker
systemctl start docker
# 设置docker开机启动
systemctl enable docker
# 验证
systemctl status docker
4.2. 安装cri-dockerd
K8S 1.24版本后需要使用cri-dockerd和docker通信。
- 下载cri-dockerd。
# 若没有wget,则执行
yum install -y wget
# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el7.x86_64.rpm
# 安装
rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm
# 重载系统守护进程
systemctl daemon-reload
- 设置镜像加速。
Docker Hub 是 Docker 官方提供的一个公开的 Registry,里面存储了很多常用的镜像,当我们使用 Docker 运行容器时,如果本地没有这个镜像,它就会到 Docker Hub 去下载。但是,由于 Docker Hub 服务器在国外,所以在国内下载速度比较慢。而 Registry Mirror 也被称为 Docker 镜像加速器,它实际上就是一个代理服务器,能够提供更快的镜像下载速度。
为了从国内的镜像托管站点获得镜像加速支持,建议修改Docker的配置文件,增加Registry Mirror参数,将镜像配置写入配置参数中。
编辑/etc/docker/daemon.json
,设置:
{
"registry-mirrors": ["https://c12xt3od.mirror.aliyuncs.com"]
}
- 修改配置文件
/usr/lib/systemd/system/cri-docker.service
,修改第10行ExecStart=
为:
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
其中pause:3.9
版本是根据K8S的版本相关,当前安装v1.28.2版本的K8S时,通过如下命令得知pause的版本为3.9:
kubeadm config images list --kubernetes-version v1.28.2
- 自启动、重启Docker组件。
# 重载系统守护进程
systemctl daemon-reload
# 设置cri-dockerd自启动
systemctl enable cri-docker.socket cri-docker
# 启动cri-dockerd
systemctl start cri-docker.socket cri-docker
# 检查Docker组件状态
systemctl status docker cir-docker.socket cri-docker
5. 安装Kubernetes
5.1. 配置repo源
在/etc/yum.repos.d/
目录下创建kubernetes.repo文件,内容如下:
[kubernetes]
name=Kubernetes Repository
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
5.2. 安装kubectl&kubelet&kubeadm
执行如下命令安装:
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
5.3. 检查runc
执行:
runc -v
6. Node节点加入集群
6.1. 环境配置
- 将Master节点的
/etc/kubernetes/admin.conf
文件拷贝到Node节点的/etc/kubernetes/
目录下。
- 将admin.conf加入环境变量,直接使用永久生效。
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
6.2. 加入集群
- 在Master节点执行
kubeadm init
成功后,会出现kubeadm join xxx xxx
的命令,直接复制到Node节点执行就好。
- 若没有复制到
kubeadm join
的命令或者是想要在集群中加入新节点,则先在Master执行如下命令,获取token 和 discovery-token-ca-cert-hash。
- 获取 token 参数
kubeadm token list # 查看已有 token
kubeadm token create # 没有token则执行,创建新的 TOKEN
- 获取 discovery-token-ca-cert-hash 参数
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
- 修改获取的 token 和 discovery-token-ca-cert-hash 后,再在Node节点执行:
kubeadm join 192.168.3.61:6443 --token dz3s8l.8co7h567py8kbr1n --discovery-token-ca-cert-hash sha256:a7f52953d123a1c7fc6ccdb0ee6c0f0b0c52dbb06ea8592d3f85231c7d0e755a --cri-socket unix:///var/run/cri-dockerd.sock
至此,则加入集群成功:
7. 重新加入集群
如果需要重新执行加入集群,则执行:
kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
再获取TOKEN、discovery-token-ca-cert-hash 参数后,最后执行:
kubeadm join 192.168.3.61:6443 --token dz3s8l.8co7h567py8kbr1n --discovery-token-ca-cert-hash sha256:a7f52953d123a1c7fc6ccdb0ee6c0f0b0c52dbb06ea8592d3f85231c7d0e755a --cri-socket unix:///var/run/cri-dockerd.sock