总结K8s集群部署的方法原理 📅 发布时间:2026/8/24 15:40:05 👁 浏览次数: 本次作业环境4台虚拟机使用kubeadm部署K8s集群。master 172.25.254.100node1 172.25.254.10node2 172.25.254.20私有镜像仓库 reg.timinglee.orgk8s域名解析指向172.25.254.254一关闭防火墙systemctl stop firewalld systemctl disable firewalldsetenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config二配置内核网络参数三安装前先删除红帽系统自带的盗版docker四配置 k8s 阿里云 yum 源所有节点五安装docker ce用国内镜像下载更快启动 docker、containerd设置开机自启systemctl enable --now dockersystemctl enable --now containerd六文件配置七接下来配置node1node2[rootnode1 ~]# tar xvf cri-dockerd-0.4.4.amd64.tgzcri-dockerd/cri-dockerd/cri-dockerd[rootnode1 ~]# cd cri-dockerd/[rootnode1 cri-dockerd]# mv cri-dockerd /usr/local/bin/mv是否覆盖/usr/local/bin/cri-dockerd y[rootnode1 cri-dockerd]# chmod x /usr/local/bin/cri-dockerd[rootnode1 cri-dockerd]# cat /etc/systemd/system/cri-docker.service EOF[Unit]DescriptionCRI Docker daemon for KubernetesAfterdocker.serviceRequiresdocker.service[Service]ExecStart/usr/local/bin/cri-dockerd --container-runtime-endpointunix:///var/run/cri-dockerd.sockRestartalwaysRestartSec5[Install]WantedBymulti-user.targetEOF[rootnode1 cri-dockerd]# cat /etc/systemd/system/cri-docker.socket EOF[Unit]DescriptionCRI Docker Socket for KubernetesPartOfcri-docker.service[Socket]ListenStream/var/run/cri-dockerd.sockSocketMode0660SocketUserrootSocketGroupdocker[Install]WantedBysockets.targetEOF[rootnode1 cri-dockerd]# systemctl daemon-reload[rootnode1 cri-dockerd]# systemctl enable cri-docker --now[rootnode1 cri-dockerd]# cat /etc/yum.repos.d/kubernetes.repo EOF[kubernetes]nameKubernetesbaseurlhttps://pkgs.k8s.io/core:/stable:/v1.35/rpm/enabled1gpgcheck1gpgkeyhttps://pkgs.k8s.io/core:/stable:/v1.35/rpm/repodata/repomd.xml.keyEOF[rootnode1 cri-dockerd]# dnf install -y kubeadm-1.35.7 kubelet-1.35.7[rootnode1 cri-dockerd]# systemctl enable kubelet --now[rootnode1 cri-dockerd]# docker login reg.timinglee.org -u admin -p leeWARNING! Using --password via the CLI is insecure. Use --password-stdin.Login Succeeded[rootnode1 cri-dockerd]# kubeadm join 172.25.254.100:6443 --token xxxxx --^Cscovery-token-ca-cert-hash sha256:xxxxx[rootnode1 cri-dockerd]# kubeadm join 172.25.254.100:6443 --token to^Cn \--discovery-token-ca-cert-hash sha256:hash \--cri-socket unix:///var/run/cri-dockerd.sock[rootnode1 cri-dockerd]# kubeadm join 172.25.254.100:6443 --token zppv87.t4kx9ugaviz7faqb \--discovery-token-ca-cert-hash sha256:5dc6a185e6e36825889178763d5453e53c082e77374968aa0edcb5003b6a7976 \--cri-socket unix:///var/run/cri-dockerd.sock[preflight] Running pre-flight checks[WARNING SystemVerification]: kernel release 5.14.0-687.5.3.el9_8.x86_64 is unsupported. Supported LTS versions from the 5.x series are 5.4, 5.10 and 5.15. Any 6.x version is also supported. For cgroups v2 support, the recommended version is 5.10 or newer[preflight] Some fatal errors occurred:[ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists[ERROR Port-10250]: Port 10250 is in use[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors...error: error execution phase preflight: preflight checks failedTo see the stack trace of this error execute with --v5 or higher[rootnode1 cri-dockerd]# kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock[rootnode1 cri-dockerd]# rm -rf /etc/kubernetes /var/lib/kubelet[rootnode1 cri-dockerd]# netstat -tlnp | grep 10250[rootnode1 cri-dockerd]# systemctl restart kubelet[rootnode1 cri-dockerd]# kubeadm join 172.25.254.100:6443 --token zppv87.t4kx9ugaviz7faqb \--discovery-token-ca-cert-hash sha256:5dc6a185e6e36825889178763d5453e53c082e77374968aa0edcb5003b6a7976 \--cri-socket unix:///var/run/cri-dockerd.sock[rootnode1 cri-dockerd]# docker pull reg.timinglee.org/k8s/kube-proxy:v1.35.7v1.35.7: Pulling from k8s/kube-proxya6c8b26f7345: Pull complete3d17fab17123: Pull completeDigest: sha256:c77d584d0a5e075f33f2a72a7f45890ed450a0b6ebab86271671a7692825157bStatus: Downloaded newer image for reg.timinglee.org/k8s/kube-proxy:v1.35.7reg.timinglee.org/k8s/kube-proxy:v1.35.7node2配置方法一样八查看 Kubernetes 集群所有节点信息[rootmaster cri-dockerd]# kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster Ready control-plane 16m v1.35.7node1 Ready none 5m33s v1.35.7node2 Ready none 5s v1.35.7