基于docker和cri-dockerd部署kubernetes v1.25.3

基于docker和cri-dockerd部署kubernetes v1.25.3

1、环境准备

1-1、主机清单

主机名IP地址系统版本k8s-master01 k8s-master01.wang.org kubeapi.wang.org kubeapi 10.0.0.101 Ubuntu2004 k8s-master02 k8s-master02.wang.org 10.0.0.102 Ubuntu2004 k8s-master03 k8s-master03.wang.org 10.0.0.103 Ubuntu2004 k8s-node01 k8s-node01.wang.org 10.0.0.111 Ubuntu2004 k8s-node02 k8s-node02.wang.org 10.0.0.112 Ubuntu2004 k8s-node03 k8s-node03.wang.org 10.0.0.113 Ubuntu2004

1-2、软件清单
 docker-ce    20.10.21
 cri-dockerd  0.2.6
 kubeadm      1.25.3
 flannel      0.20.1
1-3、系统基础环境
1-3-1、关闭防火墙
 #所有节点执行:
 [root@k8s-master01 ~]# ufw disable
 [root@k8s-master01 ~]# ufw status
1-3-2、时间同步
 #所有节点执行:
 [root@k8s-master01 ~]# apt install -y chrony
 [root@k8s-master01 ~]# systemctl restart chrony
 [root@k8s-master01 ~]# systemctl status chrony
 [root@k8s-master01 ~]# chronyc sources
1-3-3、主机名互相解析
 #所有节点执行:
 [root@k8s-master01 ~]# vim /etc/hosts
 10.0.0.101 k8s-master01 k8s-master01.wang.org kubeapi.wang.org kubeapi
 10.0.0.102 k8s-master02 k8s-master02.wang.org
 10.0.0.103 k8s-master03 k8s-master03.wang.org
 10.0.0.111 k8s-node01 k8s-node01.wang.org
 10.0.0.112 k8s-node02 k8s-node02.wang.org
 10.0.0.113 k8s-node03 k8s-node03.wang.org
 ​
 [root@k8s-master01 ~]# cat /etc/hosts        
1-3-4、禁用swap
 #所有节点执行:
 [root@k8s-master01 ~]# sed -r -i '/\/swap/s@^@#@' /etc/fstab
 [root@k8s-master01 ~]# swapoff -a
 [root@k8s-master01 ~]# systemctl --type swap
 ​
 #若不禁用Swap设备,需要在后续编辑kubelet的配置文件/etc/default/kubelet,设置其忽略Swap启用的状态错误,内容:KUBELET_EXTRA_ARGS="--fail-swap-on=false"

2、安装docker

 #所有节点执行:
 ​
 #安装必要的一些系统工具
 [root@k8s-master01 ~]# apt update
 [root@k8s-master01 ~]# apt -y install apt-transport-https ca-certificates curl software-properties-common
 ​
 #安装GPG证书
 [root@k8s-master01 ~]# curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
 OK
 #写入软件源信息
 [root@k8s-master01 ~]# add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
 ​
 #更新并安装Docker-CE
 [root@k8s-master01 ~]# apt update
 [root@k8s-master01 ~]# apt install -y docker-ce
 #所有节点执行:
 kubelet需要让docker容器引擎使用systemd作为CGroup的驱动,其默认值为cgroupfs,因而,我们还需要编辑docker的配置文件/etc/docker/daemon.json,添加如下内容,其中的registry-mirrors用于指明使用的镜像加速服务。
 ​
 [root@k8s-master01 ~]# vim /etc/docker/daemon.json
 {
     "registry-mirrors": [
         "https://docker.mirrors.ustc.edu.cn",
         "https://hub-mirror.c.163.com",
         "https://reg-mirror.qiniu.com",
         "https://registry.docker-cn.com"
 ],
     "exec-opts": ["native.cgroupdriver=systemd"],
     "log-driver": "json-file",
     "log-opts": {
     "max-size": "200m"
 },
     "storage-driver": "overlay2"
 }
 ​
 [root@k8s-master01 ~]# systemctl daemon-reload
 [root@k8s-master01 ~]# systemctl start docker
 [root@k8s-master01 ~]# systemctl enable docker
 [root@k8s-master01 ~]# docker version
 Client: Docker Engine - Community
  Version:           20.10.21
 #注:kubeadm部署Kubernetes集群的过程中,默认使用Google的Registry服务k8s.gcr.io上的镜像,由于2022年仓库已经改为registry.k8s.io,国内可以直接访问,所以现在不需要镜像加速或者绿色上网就可以拉镜像了,如果使用国内镜像请参考https://blog.51cto.com/dayu/5811307

3、安装cri-dockerd

 #所有节点执行:
 #下载地址:https://github.com/Mirantis/cri-dockerd
 [root@k8s-master01 ~]# apt install ./cri-dockerd_0.2.6.3-0.ubuntu-focal_amd64.deb -y
 ​
 #完成安装后,相应的服务cri-dockerd.service便会自动启动
 [root@k8s-master01 ~]#systemctl status cri-docker.service

4、安装kubeadm、kubelet和kubectl

 #所有节点执行:
 #在各主机上生成kubelet和kubeadm等相关程序包的仓库,可参考阿里云官网
 [root@k8s-master01 ~]# apt update
 [root@k8s-master01 ~]# apt install -y apt-transport-https curl
 [root@k8s-master01 ~]# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
&#xA0;[root@k8s-master01 ~]#cat <<eof>/etc/apt/sources.list.d/kubernetes.list
&#xA0;> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
&#xA0;> EOF
&#xA0;&#x200B;
&#xA0;&#x200B;
&#xA0;#&#x66F4;&#x65B0;&#x4ED3;&#x5E93;&#x5E76;&#x5B89;&#x88C5;
&#xA0;[root@k8s-master01 ~]# apt update
&#xA0;[root@k8s-master01 ~]# apt install -y kubelet kubeadm kubectl
&#xA0;&#x200B;
&#xA0;#&#x6CE8;&#x610F;&#xFF1A;&#x5148;&#x4E0D;&#x8981;&#x542F;&#x52A8;&#xFF0C;&#x53EA;&#x662F;&#x8BBE;&#x7F6E;&#x5F00;&#x673A;&#x81EA;&#x542F;&#x52A8;
&#xA0;[root@k8s-master01 ~]# systemctl enable kubelet
&#xA0;&#x200B;
&#xA0;#&#x786E;&#x5B9A;kubeadm&#x7B49;&#x7A0B;&#x5E8F;&#x6587;&#x4EF6;&#x7684;&#x7248;&#x672C;
&#xA0;[root@k8s-master01 ~]# kubeadm version
&#xA0;kubeadm version: &version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:55:36Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
&#xA0;&#x200B;</eof>

5、整合kubelet和cri-dockerd

5-1、配置cri-dockerd
&#xA0;#&#x6240;&#x6709;&#x8282;&#x70B9;&#x6267;&#x884C;&#xFF1A;
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]# vim /usr/lib/systemd/system/cri-docker.service
&#xA0;&#x200B;
&#xA0;#ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://
&#xA0;ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d
&#xA0;&#x200B;
&#xA0;&#x200B;
&#xA0;&#x200B;
&#xA0;#&#x8BF4;&#x660E;&#xFF1A;
&#xA0;&#x9700;&#x8981;&#x6DFB;&#x52A0;&#x7684;&#x5404;&#x914D;&#x7F6E;&#x53C2;&#x6570;&#xFF08;&#x5404;&#x53C2;&#x6570;&#x7684;&#x503C;&#x8981;&#x4E0E;&#x7CFB;&#x7EDF;&#x90E8;&#x7F72;&#x7684;CNI&#x63D2;&#x4EF6;&#x7684;&#x5B9E;&#x9645;&#x8DEF;&#x5F84;&#x76F8;&#x5BF9;&#x5E94;&#xFF09;&#xFF1A;
&#xA0;    --network-plugin&#xFF1A;&#x6307;&#x5B9A;&#x7F51;&#x7EDC;&#x63D2;&#x4EF6;&#x89C4;&#x8303;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x8FD9;&#x91CC;&#x8981;&#x4F7F;&#x7528;CNI&#xFF1B;
&#xA0;    --cni-bin-dir&#xFF1A;&#x6307;&#x5B9A;CNI&#x63D2;&#x4EF6;&#x4E8C;&#x8FDB;&#x5236;&#x7A0B;&#x5E8F;&#x6587;&#x4EF6;&#x7684;&#x641C;&#x7D22;&#x76EE;&#x5F55;&#xFF1B;
&#xA0;    --cni-cache-dir&#xFF1A;CNI&#x63D2;&#x4EF6;&#x4F7F;&#x7528;&#x7684;&#x7F13;&#x5B58;&#x76EE;&#x5F55;&#xFF1B;
&#xA0;    --cni-conf-dir&#xFF1A;CNI&#x63D2;&#x4EF6;&#x52A0;&#x8F7D;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x7684;&#x76EE;&#x5F55;&#xFF1B;
&#xA0;&#x914D;&#x7F6E;&#x5B8C;&#x6210;&#x540E;&#xFF0C;&#x91CD;&#x8F7D;&#x5E76;&#x91CD;&#x542F;cri-docker.service&#x670D;&#x52A1;&#x3002;
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]# systemctl daemon-reload && systemctl restart cri-docker.service
&#xA0;[root@k8s-master01 ~]# systemctl status cri-docker
&#xA0;&#x200B;
5-2、配置kubelet
&#xA0;#&#x6240;&#x6709;&#x8282;&#x70B9;&#x6267;&#x884C;&#xFF1A;
&#xA0;&#x200B;
&#xA0;#&#x914D;&#x7F6E;kubelet&#xFF0C;&#x4E3A;&#x5176;&#x6307;&#x5B9A;cri-dockerd&#x5728;&#x672C;&#x5730;&#x6253;&#x5F00;&#x7684;Unix Sock&#x6587;&#x4EF6;&#x7684;&#x8DEF;&#x5F84;&#xFF0C;&#x8BE5;&#x8DEF;&#x5F84;&#x4E00;&#x822C;&#x9ED8;&#x8BA4;&#x4E3A;&#x201C;/run/cri-dockerd.sock&#x201C;
&#xA0;[root@k8s-master01 ~]# mkdir /etc/sysconfig
&#xA0;[root@k8s-master01 ~]# vim /etc/sysconfig/kubelet
&#xA0;KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"
&#xA0;[root@k8s-master01 ~]# cat /etc/sysconfig/kubelet
&#xA0;KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"
&#xA0;&#x200B;
&#xA0;#&#x8BF4;&#x660E;&#xFF1A;&#x8BE5;&#x914D;&#x7F6E;&#x4E5F;&#x53EF;&#x4E0D;&#x8FDB;&#x884C;&#xFF0C;&#x800C;&#x662F;&#x76F4;&#x63A5;&#x5728;&#x540E;&#x9762;&#x7684;&#x5404;kubeadm&#x547D;&#x4EE4;&#x4E0A;&#x4F7F;&#x7528;&#x201C;--cri-socket unix:///run/cri-dockerd.sock&#x201D;&#x9009;&#x9879;

6、初始化第一个主节点

&#xA0;#&#x7B2C;&#x4E00;&#x4E2A;&#x4E3B;&#x8282;&#x70B9;&#x6267;&#x884C;&#xFF1A;
&#xA0;&#x200B;
&#xA0;#&#x5217;&#x51FA;k8s&#x6240;&#x9700;&#x8981;&#x7684;&#x955C;&#x50CF;
&#xA0;[root@k8s-master01 ~]# kubeadm config images list
&#xA0;registry.k8s.io/kube-apiserver:v1.25.3
&#xA0;registry.k8s.io/kube-controller-manager:v1.25.3
&#xA0;registry.k8s.io/kube-scheduler:v1.25.3
&#xA0;registry.k8s.io/kube-proxy:v1.25.3
&#xA0;registry.k8s.io/pause:3.8
&#xA0;registry.k8s.io/etcd:3.5.4-0
&#xA0;registry.k8s.io/coredns/coredns:v1.9.3
&#xA0;&#x200B;
&#xA0;#&#x4F7F;&#x7528;&#x963F;&#x91CC;&#x4E91;&#x62C9;&#x53D6;&#x6240;&#x9700;&#x955C;&#x50CF;
&#xA0;[root@k8s-master01 ~]# kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]# docker images
&#xA0;REPOSITORY &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;  TAG &#xA0; &#xA0; &#xA0; IMAGE ID &#xA0; &#xA0; &#xA0; CREATED &#xA0; &#xA0;
&#xA0;registry.aliyuncs.com/google_containers/kube-apiserver &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;  v1.25.3 &#xA0; 0346dbd74bcb &#xA0; 3 weeks ago
&#xA0;registry.aliyuncs.com/google_containers/kube-scheduler &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;  v1.25.3 &#xA0; 6d23ec0e8b87 &#xA0; 3 weeks ago
&#xA0;registry.aliyuncs.com/google_containers/kube-controller-manager &#xA0; v1.25.3 &#xA0; 603999231275 &#xA0; 3 weeks ago
&#xA0;registry.aliyuncs.com/google_containers/kube-proxy &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;  v1.25.3 &#xA0; beaaf00edd38 &#xA0; 3 weeks ago
&#xA0;registry.aliyuncs.com/google_containers/pause &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; 3.8 &#xA0; &#xA0; &#xA0; 4873874c08ef &#xA0; 4 months ago
&#xA0;registry.aliyuncs.com/google_containers/etcd &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;3.5.4-0 &#xA0; a8a176a5d5d6 &#xA0; 5 months ago
&#xA0;registry.aliyuncs.com/google_containers/coredns &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; v1.9.3 &#xA0;  5185b96f0bec &#xA0; 5 months ago
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]# kubeadm init --control-plane-endpoint="kubeapi.wang.org" --kubernetes-version=v1.25.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --token-ttl=0 --cri-socket unix:///run/cri-dockerd.sock --upload-certs --image-repository registry.aliyuncs.com/google_containers
&#xA0;&#x200B;
&#xA0;#&#x5982;&#x63D0;&#x793A;&#x4EE5;&#x4E0B;&#x4FE1;&#x606F;&#xFF0C;&#x4EE3;&#x8868;&#x521D;&#x59CB;&#x5316;&#x5B8C;&#x6210;&#xFF0C;&#x8BF7;&#x8BB0;&#x5F55;&#x4FE1;&#x606F;&#xFF0C;&#x4EE5;&#x4FBF;&#x540E;&#x7EED;&#x4F7F;&#x7528;&#xFF1A;
&#xA0;.....

&#xA0;&#x200B;
&#xA0;Your Kubernetes control-plane has initialized successfully!

&#xA0;&#x200B;
&#xA0;To start using your cluster, you need to run the following as a regular user:
&#xA0;&#x200B;
&#xA0; &#xA0;mkdir -p $HOME/.kube
&#xA0; &#xA0;sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
&#xA0; &#xA0;sudo chown $(id -u):$(id -g) $HOME/.kube/config
&#xA0;&#x200B;
&#xA0;Alternatively, if you are the root user, you can run:
&#xA0;&#x200B;
&#xA0; &#xA0;export KUBECONFIG=/etc/kubernetes/admin.conf
&#xA0;&#x200B;
&#xA0;You should now deploy a pod network to the cluster.

&#xA0;Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
&#xA0;  https://kubernetes.io/docs/concepts/cluster-administration/addons/
&#xA0;&#x200B;
&#xA0;You can now join any number of the control-plane node running the following command on each as root:
&#xA0;&#x200B;
&#xA0;  kubeadm join kubeapi.wang.org:6443 --token s800nl.dtylo6tpgghpre7p \
&#xA0;    --discovery-token-ca-cert-hash sha256:a13ee9d0212edbd255fe0c5929186725b217a650f0b04ba75c6a1d6e67576aea \
&#xA0;    --control-plane --certificate-key 185090182962d3e322ff37a902734bfdd769e8e6e82d796bc882d0b1967c9886
&#xA0;&#x200B;
&#xA0;Please note that the certificate-key gives access to cluster sensitive data, keep it secret!

&#xA0;As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
&#xA0;"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

&#xA0;&#x200B;
&#xA0;Then you can join any number of worker nodes by running the following on each as root:
&#xA0;&#x200B;
&#xA0;kubeadm join kubeapi.wang.org:6443 --token s800nl.dtylo6tpgghpre7p \
&#xA0;    --discovery-token-ca-cert-hash sha256:a13ee9d0212edbd255fe0c5929186725b217a650f0b04ba75c6a1d6e67576aea
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#  mkdir -p $HOME/.kube
&#xA0;[root@k8s-master01 ~]#  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
&#xA0;[root@k8s-master01 ~]#  sudo chown $(id -u):$(id -g) $HOME/.kube/config
&#xA0;&#x200B;
&#xA0;#&#x5982;&#x679C;&#x521D;&#x59CB;&#x5316;&#x62A5;&#x5982;&#x4E0B;&#x9519;&#x8BEF;&#xFF1A;
&#xA0;Error getting node" err="node \"k8s-master01\" not found
&#xA0;&#x200B;
&#xA0;#1&#x3001;&#x5728;cri-docker.service&#x6587;&#x4EF6;&#x6307;&#x5B9A;&#x4E0B;pause&#x7248;&#x672C;&#xFF1A;
&#xA0;[root@k8s-master01 ~]# vim /usr/lib/systemd/system/cri-docker.service
&#xA0;ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d
&#xA0;#2&#x3001;&#x91CD;&#x542F;&#x670D;&#x52A1;&#xFF1A;
&#xA0;systemctl daemon-reload
&#xA0;systemctl restart cri-docker.service
&#xA0;&#x200B;
&#xA0;#3&#x3001;&#x91CD;&#x7F6E;&#x96C6;&#x7FA4;&#xFF1A;
&#xA0;kubeadm reset --cri-socket unix:///run/cri-dockerd.sock && rm -rf /etc/kubernetes/ /var/lib/kubelet /var/lib/dockershim /var/run/kubernetes /var/lib/cni /etc/cni/net.d

7、部署网络插件

&#xA0;#&#x6240;&#x6709;&#x8282;&#x70B9;&#x6267;&#x884C;&#xFF1A;
&#xA0;#&#x4E0B;&#x8F7D;&#x94FE;&#x63A5;&#xFF1A;
&#xA0;https://github.com/flannel-io/flannel/releases
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]# cp flanneld-amd64 /opt/bin/flanneld
&#xA0;[root@k8s-master01 ~]# chmod +x /opt/bin/flanneld
&#xA0;[root@k8s-master01 ~]# ll /opt/bin/flanneld
&#xA0;-rwxr-xr-x 1 root root 39358256 11&#x6708; &#xA0;4 22:46 /opt/bin/flanneld*
&#xA0;&#x200B;
&#xA0;&#x200B;
&#xA0;#&#x7B2C;&#x4E00;&#x4E2A;&#x4E3B;&#x8282;&#x70B9;&#x6267;&#x884C;&#xFF1A;
&#xA0;#&#x90E8;&#x7F72;kube-flannel
&#xA0;[root@k8s-master01 ~]# kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
&#xA0;namespace/kube-flannel created
&#xA0;clusterrole.rbac.authorization.k8s.io/flannel created
&#xA0;clusterrolebinding.rbac.authorization.k8s.io/flannel created
&#xA0;serviceaccount/flannel created
&#xA0;configmap/kube-flannel-cfg created
&#xA0;daemonset.apps/kube-flannel-ds created
&#xA0;&#x200B;
&#xA0;#&#x786E;&#x8BA4;Pod&#x7684;&#x72B6;&#x6001;&#x4E3A;&#x201C;Running&#x201D;
&#xA0;[root@k8s-master01 ~]# kubectl get pods -n kube-flannel
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0;  READY &#xA0; STATUS &#xA0;  RESTARTS &#xA0; AGE
&#xA0;kube-flannel-ds-9bkgl &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  50s
&#xA0;&#x200B;
&#xA0;#&#x6B64;&#x65F6;&#xFF0C;k8s-master01&#x5DF2;&#x7ECF;&#x5C31;&#x7EEA;
&#xA0;[root@k8s-master01 ~]# kubectl get nodes
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; STATUS &#xA0; ROLES &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; AGE &#xA0; VERSION
&#xA0;k8s-master01 &#xA0; Ready &#xA0;  control-plane &#xA0; 20m &#xA0; v1.25.3

8、添加其他节点到集群中

&#xA0;#k8s-master02&#x548C;k8s-master03&#x6267;&#x884C;&#xFF1A;
&#xA0;#k8s-master02&#x548C;k8s-master03&#x52A0;&#x5165;&#x96C6;&#x7FA4;
&#xA0;[root@k8s-master02 ~]# kubeadm join kubeapi.wang.org:6443 --token s800nl.dtylo6tpgghpre7p --discovery-token-ca-cert-hash sha256:a13ee9d0212edbd255fe0c5929186725b217a650f0b04ba75c6a1d6e67576aea --control-plane --certificate-key 185090182962d3e322ff37a902734bfdd769e8e6e82d796bc882d0b1967c9886 --cri-socket unix:///run/cri-dockerd.sock
&#xA0;&#x200B;
&#xA0;#&#x6CE8;&#x610F;&#xFF0C;&#x547D;&#x4EE4;&#x9700;&#x8981;&#x52A0;&#x4E0A;--cri-socket unix:///run/cri-dockerd.sock
&#xA0;#k8s-node01&#x3001;k8s-node02&#x3001;k8s-node03&#x6267;&#x884C;
&#xA0;#node&#x8282;&#x70B9;&#x52A0;&#x5165;&#x96C6;&#x7FA4;
&#xA0;&#x200B;
&#xA0;[root@k8s-node01 ~]# kubeadm join kubeapi.wang.org:6443 --token s800nl.dtylo6tpgghpre7p --discovery-token-ca-cert-hash sha256:a13ee9d0212edbd255fe0c5929186725b217a650f0b04ba75c6a1d6e67576aea --cri-socket unix:///run/cri-dockerd.sock
&#xA0;&#x200B;
&#xA0;#&#x6CE8;&#x610F;&#xFF0C;&#x547D;&#x4EE4;&#x9700;&#x8981;&#x52A0;&#x4E0A;--cri-socket unix:///run/cri-dockerd.sock
&#xA0;#&#x7B2C;&#x4E00;&#x8282;&#x70B9;&#x9A8C;&#x8BC1;&#x8282;&#x70B9;&#x6DFB;&#x52A0;&#x7ED3;&#x679C;
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#kubectl get nodes
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; STATUS &#xA0; ROLES &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; AGE &#xA0; &#xA0; VERSION
&#xA0;k8s-master01 &#xA0; Ready &#xA0;  control-plane &#xA0; 25m &#xA0; &#xA0; v1.25.3
&#xA0;k8s-master02 &#xA0; Ready &#xA0;  control-plane &#xA0; 10m &#xA0; &#xA0; v1.25.3
&#xA0;k8s-master03 &#xA0; Ready &#xA0;  control-plane &#xA0; 8m41s &#xA0; v1.25.3
&#xA0;k8s-node01 &#xA0; &#xA0; Ready &#xA0;  <none> &#xA0; &#xA0; &#xA0; &#xA0;  6m54s &#xA0; v1.25.3
&#xA0;k8s-node02 &#xA0; &#xA0; Ready &#xA0;  <none> &#xA0; &#xA0; &#xA0; &#xA0;  6m31s &#xA0; v1.25.3
&#xA0;k8s-node03 &#xA0; &#xA0; Ready &#xA0;  <none> &#xA0; &#xA0; &#xA0; &#xA0;  6m5s &#xA0;  v1.25.3
&#xA0;&#x200B;</none></none></none>

9、部署nginx测试

&#xA0;[root@k8s-master01 ~]#kubectl create deployment nginx --image nginx:alpine --replicas=3
&#xA0;deployment.apps/nginx created
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#kubectl get pods
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; READY &#xA0; STATUS &#xA0;  RESTARTS &#xA0; AGE
&#xA0;nginx-55f494c486-4js9n &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  58s
&#xA0;nginx-55f494c486-fsgxq &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  58s
&#xA0;nginx-55f494c486-z2gzv &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  58s
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#kubectl get pods -o wide
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; READY &#xA0; STATUS &#xA0;  RESTARTS &#xA0; AGE &#xA0; &#xA0; IP &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; NODE &#xA0; &#xA0; &#xA0; &#xA0; NOMINATED NODE &#xA0; READINESS GATES
&#xA0;nginx-55f494c486-4js9n &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  4m31s &#xA0; 10.244.3.2 &#xA0; k8s-node01 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; <none>
&#xA0;nginx-55f494c486-fsgxq &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  4m31s &#xA0; 10.244.4.2 &#xA0; k8s-node02 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; <none>
&#xA0;nginx-55f494c486-z2gzv &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  4m31s &#xA0; 10.244.5.2 &#xA0; k8s-node03 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; <none>
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#curl 10.244.4.2
&#xA0;<!DOCTYPE html>
&#xA0;<html>
&#xA0;<head>
&#xA0;<title>Welcome to nginx!</title>
&#xA0;<style>
 html { color-scheme: light dark; }
 body { width: 35em; margin: 0 auto;
 font-family: Tahoma, Verdana, Arial, sans-serif; }
 </style>
&#xA0;</head>
&#xA0;<body>
&#xA0;<h1>Welcome to nginx!</h1>
&#xA0;<p>If you see this page, the nginx web server is successfully installed and
&#xA0;working. Further configuration is required.</p>
&#xA0;&#x200B;
&#xA0;<p>For online documentation and support please refer to
&#xA0;<a href="http://nginx.org/">nginx.org</a>.

&#xA0;Commercial support is available at
&#xA0;<a href="http://nginx.com/">nginx.com</a>.</p>
&#xA0;&#x200B;
&#xA0;<p><em>Thank you for using nginx.</em></p>
&#xA0;</body>
&#xA0;</html>
&#xA0;&#x200B;
&#xA0;&#x200B;
&#xA0;#&#x5220;&#x9664;pod&#xFF0C;&#x81EA;&#x52A8;&#x62C9;&#x8D77;
&#xA0;[root@k8s-master01 ~]#kubectl delete pods nginx-55f494c486-fsgxq
&#xA0;pod "nginx-55f494c486-fsgxq" deleted
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#kubectl get pods -owide
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; READY &#xA0; STATUS &#xA0;  RESTARTS &#xA0; AGE &#xA0; IP &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; NODE &#xA0; &#xA0; &#xA0; &#xA0; NOMINATED NODE &#xA0; READINESS GATES
&#xA0;nginx-55f494c486-4js9n &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  11m &#xA0; 10.244.3.2 &#xA0; k8s-node01 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; <none>
&#xA0;nginx-55f494c486-xqcph &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  16s &#xA0; 10.244.4.3 &#xA0; k8s-node02 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; <none>
&#xA0;nginx-55f494c486-z2gzv &#xA0; 1/1 &#xA0; &#xA0; Running &#xA0; 0 &#xA0; &#xA0; &#xA0; &#xA0;  11m &#xA0; 10.244.5.2 &#xA0; k8s-node03 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0; &#xA0; <none>
&#xA0;&#x200B;</none></none></none></none></none></none></none></none></none></none></none></none>
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#kubectl create service nodeport nginx --tcp=80:80
&#xA0;service/nginx created
&#xA0;&#x200B;
&#xA0;[root@k8s-master01 ~]#kubectl get svc
&#xA0;NAME &#xA0; &#xA0; &#xA0; &#xA0; TYPE &#xA0; &#xA0; &#xA0;  CLUSTER-IP &#xA0; &#xA0;  EXTERNAL-IP &#xA0; PORT(S) &#xA0; &#xA0; &#xA0;  AGE
&#xA0;kubernetes &#xA0; ClusterIP &#xA0; 10.96.0.1 &#xA0; &#xA0; &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0;443/TCP &#xA0; &#xA0; &#xA0;  89m
&#xA0;nginx &#xA0; &#xA0; &#xA0;  NodePort &#xA0; &#xA0;10.103.151.47 &#xA0; <none> &#xA0; &#xA0; &#xA0; &#xA0;80:31901/TCP &#xA0; 18s
&#xA0;[root@k8s-master01 ~]#curl 10.103.151.47
&#xA0;<!DOCTYPE html>
&#xA0;<html>
&#xA0;<head>
&#xA0;<title>Welcome to nginx!</title>
&#xA0;<style>
 html { color-scheme: light dark; }
 body { width: 35em; margin: 0 auto;
 font-family: Tahoma, Verdana, Arial, sans-serif; }
 </style>
&#xA0;</head>
&#xA0;<body>
&#xA0;<h1>Welcome to nginx!</h1>
&#xA0;<p>If you see this page, the nginx web server is successfully installed and
&#xA0;working. Further configuration is required.</p>
&#xA0;&#x200B;
&#xA0;<p>For online documentation and support please refer to
&#xA0;<a href="http://nginx.org/">nginx.org</a>.

&#xA0;Commercial support is available at
&#xA0;<a href="http://nginx.com/">nginx.com</a>.</p>
&#xA0;&#x200B;
&#xA0;<p><em>Thank you for using nginx.</em></p>
&#xA0;</body>
&#xA0;</html>
&#xA0;&#x200B;
&#xA0;#&#x5916;&#x90E8;&#x8BBF;&#x95EE;&#x4EFB;&#x610F;node&#x51E0;&#x70B9;ip&#x52A0;&#x7AEF;&#x53E3;&#xFF08;&#x6CE8;&#x610F;&#xFF0C;&#x968F;&#x673A;&#x4EA7;&#x751F;&#xFF09;&#x90FD;&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;</none></none>

Original: https://www.cnblogs.com/wdy001/p/16859931.html
Author: 大雨转暴雨
Title: 基于docker和cri-dockerd部署kubernetes v1.25.3

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/799327/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球