使用安装包本地部署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集群安装完成。
assets/使用安装包本地部署k8s.v2.20250605/file-20250605185002332.png

七、常见错误处理脚本

强制重新重建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
posted @ 2025-05-30 17:39  中国的Amadeus  阅读(47)  评论(0)    收藏  举报