使用安装包本地部署k8s.v2.20250605
测试环境
xxx.xxx.xxx.101 prd-ms-k8s01 master节点
xxx.xxx.xxx.102 prd-ms-k8s02 node节点
xxx.xxx.xxx.103 prd-ms-k8s03 node节点
一、操作系统相关配置(所有服务器执行)
1、关闭swap
swapoff -a
sed -i '/swap/d' /etc/fstab
2、设置时区
timedatectl set-timezone Asia/Shanghai
3、每台服务器设置hostname,并且配置/etc/hosts
hostnamectl set-hostname <对应主机hostname名称>
cat >> /etc/hosts << EOF
xxx.xxx.xxx.101 prd-ms-k8s01
xxx.xxx.xxx.102 prd-ms-k8s02
xxx.xxx.xxx.103 prd-ms-k8s03
EOF
4、关闭服务器防火墙
systemctl stop firewalld
systemctl disable firewalld
5、安装conntrack、socat
yum install -y conntrack socat
二、安装基础依赖环境(所有服务器执行)
1、将压缩包解压后上传至所有节点的/opt目录(k8s安装包,请文末赞赏后,后台留言wx号,作者会稍后单独发出)
tar -zxvf k8s.packages.tgz -C /opt/
安装docker
1、 安装docker 环境
cd /opt/docker_installer
tar -zxvf docker-26.1.4.tgz
cp docker/* /usr/bin/
2、安装docker-compose(非必要)
chmod +x docker-compose
cp docker-compose /usr/bin/
3、docker.service文件
cp docker-config/docker.service /usr/lib/systemd/system
vim /usr/lib/systemd/system/docker.service 注释掉代理服务器
#Environment="HTTP_PROXY=http://192.168.3.111:8080"
#Environment="HTTPS_PROXY=http://192.168.3.111:8080"
4、daemon.json文件
mkdir /etc/docker
cp docker-config/daemon.json /etc/docker/
mkdir -p /home/docker_data
vim /etc/docker/daemon.json ,修改data_root 数据存放目录(先df -h,看你的主盘在哪,再调整)
"data-root": "/home/docker_data"
5、设置docker开机自启动
systemctl start docker
systemctl enable docker
6、 安装cri-docker容器运行时引擎
创建docker用户组
groupadd docker
解压二进制文件到: /usr/local/bin , 配置开机启动
cd /opt/cri-docker_installer
tar -zxvf cri-dockerd-0.3.14.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/local/bin/
cp cri-docker.service /etc/systemd/system/
cp cri-docker.socket /etc/systemd/system/
systemctl start cri-docker
systemctl enable cri-docker
三、k8s主体应用安装(所有服务器执行)
1、导入docker镜像
由于k8s镜像国内无法正常访问,安装包中已经打包了k8s主体需要的所有镜像文件,直接加载导入即可
cd /opt/k8s_installer
docker load -i k8s.images.tgz
2、k8s组件离线安装
安装cni
mkdir -p /opt/cni/bin
tar -zxvf cni-plugins-linux-amd64-v1.3.0.tgz -C /opt/cni/bin
systemctl restart cri-docker
安装crictl
tar -zxvf crictl-v1.30.0-linux-amd64.tar.gz
cp crictl /usr/local/bin
安装kubeadm、kubelet、kubectl
复制二进制文件到: /usr/local/bin
cp kubeadm /usr/local/bin/
cp kubectl /usr/local/bin/
cp kubelet /usr/local/bin/
上传/usr/lib/systemd/system/kubelet.service文件
cp kubelet.service /usr/lib/systemd/system/
上传/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf文件
cp -r kubelet.service.d/ /usr/lib/systemd/system/
上传/etc/sysconfig/kubelet文件
cp sysconfig/kubelet /etc/sysconfig/
启动kubelet
systemctl enable --now kubelet
systemctl status kubelet
系统会尝试启动kubelet并且配置开机自启动, 默认会不断重启,直到创建集群为止
为了方便后续的操作,建议配置一下k8s的自动补全功能,操作如下:
yum -y install bash-completion
kubectl completion bash
source /usr/share/bash-completion/bash_completion
echo "source /usr/share/bash-completion/bash_completion" >> ~/.bashrc
自此,k8s的基础环境已经安装完成。
下一步需要在master节点上创建k8s集群,并且在worker节点上将工作节点加入该集群
四、创建K8S集群(其中一台master机器上执行)
1、主节点创建集群:
kubeadm init \
--control-plane-endpoint="prd-ms-k8s01" \
--kubernetes-version v1.30.2 \
--cri-socket unix:///run/cri-dockerd.sock
这里需要指定版本为v1.30.2,因为安装包中封装的k8s镜像是v1.30.2版本,若要安装其他版本,需要另行下载其他版本对应的docker镜像包。执行到这个地方的时候,可能会卡主一段时间(大约5分钟左右,根据电脑性能等待时间长度有所不同)
注意复制好 kubeadm join的回显内容,后面会用到
kubeadm join prd-ms-k8s01:6443 --token 886zto.jlvko62yfrlrymwu \
--discovery-token-ca-cert-hash sha256:053749d9ab0725d9bad5e09ee67637cb8593f63cd65f8d59ee57e96de7afed05 \
2、配置集群访问:
mkdir ~/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
安装网络插件
集群创建成功后,需要安装集群的网络插件,这里选择使用calico,相关镜像之前已经封装在安装包中,可以直接启动即可。
cd /opt/k8s_installer/
kubectl apply -f calico.yaml
kubectl get pods -n kube-system
主节点创建证书:
kubeadm init phase upload-certs --upload-certs
保存好上面的证书字符串,后面如果多个master节点,会用到
b2cf805959c144f5123202f349bf51712ca5723badbb473a1f98040787400587
五、 工作节点加入集群:
从第一个master节点创建好集群后,master节点获取worker节点join指令:
kubeadm token create --print-join-command
将其复制到其他所有worker服务器上执行即可
执行结束后,从任意master节点上即可看到所有节点以及对应节点状态
六、再来个master节点,加入集群
注意,加入 control-plane 还有步骤四生成的证书 certificate-key:
kubeadm join prd-ms-k8s01:6443 --token 886zto.jlvko62yfrlrymwu \
--discovery-token-ca-cert-hash sha256:053749d9ab0725d9bad5e09ee67637cb8593f63cd65f8d59ee57e96de7afed05 \
--control-plane \
--certificate-key b2cf805959c144f5123202f349bf51712ca5723badbb473a1f98040787400587 \
--cri-socket unix:///run/cri-dockerd.sock
配置通过kubelet查看所有节点:
mkdir ~/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
至此,k8s集群安装完成。

七、常见错误处理脚本
强制重新重建pods
kubectl delete pods --all -n kube-system --force --grace-period=0
kubectl delete pods -n kube-system podsnamexxxxx
查k8s或pods错误
kubectl describe pod -n kube-system podsnamexxxxx
journalctl -u kubelet -n 100 --no-pager
重启服务
systemctl daemon-reload
systemctl restart cri-docker docker kubelet
本地RPC服务不通
sudo iptables -I INPUT -s 127.0.0.1 -j ACCEPT

浙公网安备 33010602011771号