k8s集群基于kubeadm部署超详细

28 阅读7分钟

引言

Kubernetes作为容器编排领域的事实标准,已经广泛应用于企业生产环境。kubeadm是Kubernetes官方提供的集群部署工具,能够快速、简单地部署符合最佳实践的Kubernetes集群。本文主要详细介绍了如何快速搭建k8s 1.23版本的集群

k8s部署方式

  1. 官方默认都有两种部署方式: (在生产环境中都可以使用,且都支持高可用环境。)

    • 二进制部署K8S集群 手动部署K8S各个组件,配置文件,启动脚本及证书生成,kubeconfig文件。 配置繁琐,对初学者极其不友好,尤其是证书管理。但是可以自定义配置信息。

    • kubeadm部署K8S集群

      是官方提供的一种快速部署K8S各组件的部署方式,如果镜像准备就绪的情况下,基于容器的方式部署。 需要提前安装kubelet,docker或者containerd,kubeadm组件。

      配置简单,适合新手。初学者在镜像准备好的情况下,仅需要2分钟部署完毕。

  2. 第三方提供的部署方式:

    • 国内产品: 青云科技: kubesphere 底层基于kubeadm快速部署K8S,提供了丰富的图形化管理界面。 kuboard 底层基于kubeadm快速部署K8S,提供了丰富的图形化管理界面。 kubeasz 底层基于二进制方式部署,结合ansible的playbook实现的快速部署管理K8S集群。

    • 国外的产品: rancher: 和国内的kubesphere很相似,也是K8S发行商,提供了丰富的图形化管理界面。 还基于K8S研发出来了K3S,号称轻量级的K8S。

    • 云厂商

      • 阿里云的ACK的SAAS产品
      • 腾讯云的TKE的SAAS产品
      • 华为云的CCE的SAAS产品
      • ucloud的UK8S的SAAS产品
      • 亚马逊的Amazon EKS的SAAS产品
      • 京东云,百度云的SAAS产品等。
  3. 其他部署方式

    • minikube

      • 适合在windows部署K8S,适合开发环境搭建的使用。不建议生产环境部署。
    • kind

      • 可以部署多套K8S环境,轻量级的命令行管理工具

k8s环境准备

1. 系统环境准备

推荐阅读: kubernetes.io/zh/docs/set…

本文所用系统环境配置如下(可参考):

  • 硬件配置: 2core 4GB
  • 磁盘: 100GB
  • 操作系统: Ubuntu 22.04.04 LTS
  • IP和主机名:
    • 10.0.0.51 master51
    • 10.0.0.52 worker52
    • 10.0.0.53 worker53

2. 关闭swap分区

 swapoff -a && sysctl -w vm.swappiness=0  # 临时关闭
 sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab  # 基于配置文件关闭
 ​
 #可能会出现重启主机后,swap分区会重新开启
 #在 Ubuntu 22.04 中禁用交换分区(swap)后重启仍自动启用,通常是因为 systemd 管理的 swap 单元未被禁用
 [root@master51 ~]# lsblk -f | grep swap
 ├─sda3 swap     1                                                fd276943-5b2d-4c0c-b635-b4c4983c030b    
 ​
 systemctl mask dev-sda3.swap
 systemctl stop  dev-sda3.swap   

3. 确保各个节点MAC地址或product_uuid唯一

 ifconfig  eth0  | grep ether | awk '{print $2}'
 cat /sys/class/dmi/id/product_uuid 
 ​
 一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 
 Kubernetes使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。
 ​

4. 检查网络节点是否互通

 检查k8s集群各节点是否可以互通,使用ping 命令验证即可
 检查主机能否上网 ping www.baidu.com

5. 允许iptable检查桥接流量

 cat <<EOF | tee /etc/modules-load.d/k8s.conf
 br_netfilter
 EOF
 ​
 cat <<EOF | tee /etc/sysctl.d/k8s.conf
 net.bridge.bridge-nf-call-ip6tables = 1
 net.bridge.bridge-nf-call-iptables = 1
 net.ipv4.ip_forward = 1
 EOF
 sysctl --system
 ​

6. 检查端口是否被占用

参考链接: kubernetes.io/zh-cn/docs/…

检查master节点和worker节点的各组件端口是否被占用。

ss -lntup

7. 所有节点修改cgroup的管理进程为systemd

 #安装docker环境 
 ​
 ​
 #检查cgroup驱动是否是systemd
 [root@master51 ~]# docker info  | grep "Cgroup Driver:"
  Cgroup Driver: systemd
 [root@master51 ~]# 
     
 [root@worker52 ~]# docker info  | grep "Cgroup Driver:"
  Cgroup Driver: systemd
 [root@worker52 ~]# 
 ​
 [root@worker53 ~]# docker info  | grep "Cgroup Driver:"
  Cgroup Driver: systemd
 [root@worker53 ~]# 
 ​

8. docker服务部署

参考链接:juejin.cn/post/758809…

9. 所有节点安装kubeadm,kubelet,kubectl

9.1 软件包说明

  • 需要在每台机器上安装以下的软件包: kubeadm: 用来初始化K8S集群的工具。 kubelet: 在集群中的每个节点上用来启动Pod和容器等。 kubectl: 用来与K8S集群通信的命令行工具。
  • kubeadm不能帮助安装或者管理kubelet或kubectl,所以需要确保它们与通过kubeadm安装的控制平面(master)的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。
  • 然而,控制平面与kubelet间的相差一个次要版本不一致是支持的,但kubelet的版本不可以超过"API SERVER"的版本。 例如,1.7.0版本的kubelet可以完全兼容1.8.0版本的"API SERVER",反之则不可以。

9.2 K8S所有节点配置软件源(建议拷贝2次)

 apt-get update && apt-get install -y apt-transport-https
 curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
 cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
 deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
 EOF
 apt-get update

9.3 查看一下当前环境支持的k8s版本

 [root@master51 ~]# apt-cache madison kubeadm
    kubeadm |  1.28.2-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    kubeadm |  1.28.1-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    kubeadm |  1.28.0-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    ...
    kubeadm | 1.23.17-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    kubeadm | 1.23.16-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    kubeadm | 1.23.15-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    kubeadm | 1.23.14-00 | https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial/main amd64 Packages
    ...

9.4 所有节点安装 kubelet kubeadm kubectl

 apt-get -y install kubelet=1.23.17-00 kubeadm=1.23.17-00 kubectl=1.23.17-00

9.5 检查各组件版本

 [root@worker51 ~]# kubeadm version
 kubeadm version: &version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.17", GitCommit:"953be8927218ec8067e1af2641e540238ffd7576", GitTreeState:"clean", BuildDate:"2023-02-22T13:33:14Z", GoVersion:"go1.19.6", Compiler:"gc", Platform:"linux/amd64"}
 [root@worker51 ~]# 
 [root@worker51 ~]# kubectl version
 Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.17", GitCommit:"953be8927218ec8067e1af2641e540238ffd7576", GitTreeState:"clean", BuildDate:"2023-02-22T13:34:27Z", GoVersion:"go1.19.6", Compiler:"gc", Platform:"linux/amd64"}
 The connection to the server localhost:8080 was refused - did you specify the right host or port?
 [root@worker51 ~]# 
 [root@worker51 ~]# kubelet --version
 Kubernetes v1.23.17
 [root@worker51 ~]# 
 ​
 温馨提示:
     其他两个节点都要检查下,避免你安装的版本不一致!
 ​
 参考链接:
     https://kubernetes.io/zh/docs/tasks/tools/install-kubectl-linux/

10. 检查时区

 [root@master51 ~]# ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
 '/etc/localtime' -> '/usr/share/zoneinfo/Asia/Shanghai'
 [root@master51 ~]# 
 [root@master51 ~]# ll /etc/localtime 
 lrwxrwxrwx 1 root root 33 Dec 10 11:26 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
 [root@master51 ~]# 
 [root@master51 ~]# date -R
 Sat, 27 Dec 2025 10:18:16 +0800
 [root@master51 ~]# 
 ​

11. 检查与快照

  • 可以在环境准备完成后拍个快照,以防万一。

基于kubeadm组件初始化K8S的master组件

1. 使用kubeadm初始化master节点

 [root@master51 ~]# kubeadm init --kubernetes-version=v1.23.17 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16  --service-dns-domain=geniusc.com
 ...
 ​
 Your Kubernetes control-plane has initialized successfully!
 ​
 To start using your cluster, you need to run the following as a regular user:
 ​
   mkdir -p $HOME/.kube
   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   sudo chown $(id -u):$(id -g) $HOME/.kube/config
 ​
 Alternatively, if you are the root user, you can run:
 ​
   export KUBECONFIG=/etc/kubernetes/admin.conf
 ​
 You should now deploy a pod network to the cluster.
 Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
   https://kubernetes.io/docs/concepts/cluster-administration/addons/
 ​
 Then you can join any number of worker nodes by running the following on each as root:
 ​
 kubeadm join 10.0.0.51:6443 --token r71tr6.gf1bevvv4wgrfmm9 \
     --discovery-token-ca-cert-hash sha256:2fbfb82f76dada0f3508aac957badda371b31959a448cc235aa0b45d4990fa9d 
 [root@master51 ~]# 
 ​
 ​
 温馨提示:
     若镜像拉取较慢或者无法拉取,可以提前拉取docker pull 并导入
     token请保存好,默认保留24小时,因此24小时内集群必须启动起来!
 ​
 相关参数说明:
     --kubernetes-version:
         指定K8S master组件的版本号。
         
     --image-repository:
         指定下载k8s master组件的镜像仓库地址。
         
     --pod-network-cidr:
         指定Pod的网段地址。
         
     --service-cidr:
         指定SVC的网段
 ​
     --service-dns-domain:
         指定service的域名。若不指定,默认为"cluster.local"。
         
 ​
 使用kubeadm初始化集群时,可能会出现如下的输出信息:
     [init] 
         使用初始化的K8S版本。
         
     [preflight] 
         主要是做安装K8S集群的前置工作,比如下载镜像,这个时间取决于你的网速。
 ​
     [certs] 
         生成证书文件,默认存储在"/etc/kubernetes/pki"目录哟。
 ​
     [kubeconfig]
         生成K8S集群的默认配置文件,默认存储在"/etc/kubernetes"目录哟。
 ​
     [kubelet-start] 
         启动kubelet,
         环境变量默认写入:"/var/lib/kubelet/kubeadm-flags.env"
         配置文件默认写入:"/var/lib/kubelet/config.yaml"
 ​
     [control-plane]
         使用静态的目录,默认的资源清单存放在:"/etc/kubernetes/manifests"。
         此过程会创建静态Pod,包括"kube-apiserver""kube-controller-manager""kube-scheduler"
 ​
     [etcd] 
         创建etcd的静态Pod,默认的资源清单存放在:""/etc/kubernetes/manifests"
         
     [wait-control-plane] 
         等待kubelet从资源清单目录"/etc/kubernetes/manifests"启动静态Pod。
 ​
     [apiclient]
         等待所有的master组件正常运行。
         
     [upload-config] 
         创建名为"kubeadm-config"的ConfigMap在"kube-system"名称空间中。
         
     [kubelet] 
         创建名为"kubelet-config-1.22"的ConfigMap在"kube-system"名称空间中,其中包含集群中kubelet的配置
 ​
     [upload-certs] 
         跳过此节点,详情请参考”--upload-certs"
         
     [mark-control-plane]
         标记控制面板,包括打标签和污点,目的是为了标记master节点。
         
     [bootstrap-token] 
         创建token口令,例如:"kbkgsa.fc97518diw8bdqid"。
         如下图所示,这个口令将来在加入集群节点时很有用,而且对于RBAC控制也很有用处哟。
 ​
     [kubelet-finalize] 
         更新kubelet的证书文件信息
 ​
     [addons] 
         添加附加组件,例如:"CoreDNS""kube-proxy”
 ​

2. 拷贝授权文件,用于管理K8S集群

 [root@master51 ~]# mkdir -p $HOME/.kube
 [root@master51 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 [root@master51 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config  

3. 查看master组件是否正常工作

 [root@master51 ~]# kubectl get componentstatuses
 Warning: v1 ComponentStatus is deprecated in v1.19+
 NAME                 STATUS    MESSAGE                         ERROR
 controller-manager   Healthy   ok                              
 etcd-0               Healthy   {"health":"true","reason":""}   
 scheduler            Healthy   ok                              
 [root@master51 ~]# 
 [root@master51 ~]# 
 [root@master51 ~]# kubectl get cs
 Warning: v1 ComponentStatus is deprecated in v1.19+
 NAME                 STATUS    MESSAGE                         ERROR
 scheduler            Healthy   ok                              
 controller-manager   Healthy   ok                              
 etcd-0               Healthy   {"health":"true","reason":""}   
 [root@master51 ~]# 

4. 查看工作节点

 [root@master51 ~]# kubectl get nodes
 NAME        STATUS     ROLES                  AGE     VERSION
 master51   NotReady   control-plane,master   3m13s   v1.23.17
 [root@master51 ~]# 
 [root@master51 ~]# kubectl get no
 NAME        STATUS     ROLES                  AGE     VERSION
 master51   NotReady   control-plane,master   3m15s   v1.23.17
 [root@master51 ~]# 
 [root@master51 ~]# kubectl get no -o wide
 NAME        STATUS     ROLES                  AGE     VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
 master51   NotReady   control-plane,master   3m23s   v1.23.17   10.0.0.51    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 [root@master51 ~]# 

5. master初始化不成功解决问题的方法

 可能存在的原因:
     由于没有禁用swap分区导致无法完成初始化;
     每个2core以上的CPU导致无法完成初始化;
     镜像拉取失败
     
 解决方案:
     1.检查是否出现有上述情况
 free -h 
 lscpu
 ​
     2.重置当前节点环境
 [root@master51 ~]# kubeadm reset -f
 ​
     3.再次尝试初始化master节点 
 ​

基于kubeadm部署worker组件

1. 将worker节点加入到master集群

 [root@worker52 ~]# kubeadm join 10.0.0.51:6443 --token r71tr6.gf1bevvv4wgrfmm9 \
 --discovery-token-ca-cert-hash sha256:2fbfb82f76dada0f3508aac957badda371b31959a448cc235aa0b45d4990fa9d
 ​
 ​
 [root@worker53 ~]# kubeadm join 10.0.0.51:6443 --token r71tr6.gf1bevvv4wgrfmm9 \
 --discovery-token-ca-cert-hash sha256:2fbfb82f76dada0f3508aac957badda371b31959a448cc235aa0b45d4990fa9d
 ​

2. 验证worker节点是否加入成功

 [root@master51 ~]# kubectl get no 
 NAME        STATUS     ROLES                  AGE     VERSION
 master51   NotReady   control-plane,master   9m57s   v1.23.17
 worker52   NotReady   <none>                 93s     v1.23.17
 worker53   NotReady   <none>                 55s     v1.23.17
 [root@master51 ~]# 
 [root@master51 ~]# kubectl get no -o wide
 NAME        STATUS     ROLES                  AGE     VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
 master51   NotReady   control-plane,master   9m59s   v1.23.17   10.0.0.51    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 worker52   NotReady   <none>                 95s     v1.23.17   10.0.0.52    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 worker53   NotReady   <none>                 57s     v1.23.17   10.0.0.53    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 [root@master51 ~]# 
 ​

部署CNI插件之Calico

0. 温馨提示

  • 在部署过程中会自动拉取镜像部署容器,在3.应用配置后会自动拉取,等待即可
  • 若有的镜像拉取不下来,可以手动拉取镜像

  • 此命令可查看对应pod的详细信息,其中包括镜像信息

    • kubectl -n [namespace_name] describe pod [pod_name]
 #有的镜像是从docker官方镜像仓库拉取的,所以需要配置docker代理。
 ​
 [root@worker53 ~]# docker images
 REPOSITORY                                           TAG        IMAGE ID       CREATED         SIZE
 quay.io/tigera/operator                              v1.29.6    72a5d49ea7ea   22 months ago   72MB
 calico/typha                                         v3.25.2    11995f5f3ea7   22 months ago   64.8MB
 calico/apiserver                                     v3.25.2    3c95ef610728   22 months ago   82.2MB
 calico/cni                                           v3.25.2    8ea297882254   22 months ago   202MB
 calico/node-driver-registrar                         v3.25.2    ce42308c1909   22 months ago   22.5MB
 calico/csi                                           v3.25.2    09b69b0828bd   22 months ago   16.7MB
 calico/pod2daemon-flexvol                            v3.25.2    2ea0861c9c7a   22 months ago   14.6MB
 calico/node  

1. 下载资源清单

 kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.2/manifests/tigera-operator.yaml
 ​

2. 修改pod网段的配置

 wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.2/manifests/custom-resources.yaml
 ​
 [root@master51 ~]# grep cidr custom-resources.yaml 
       cidr: 192.168.0.0/16
 [root@master51 ~]# 
 [root@master51 ~]# grep cidr custom-resources.yaml 
       cidr: 10.100.0.0/16
 [root@master51 ~]#

3. 应用配置

 [root@master51 ~]# kubectl create -f custom-resources.yaml 
 installation.operator.tigera.io/default created
 apiserver.operator.tigera.io/default created
 [root@master51 ~]# 

4. 验证集群网络是否正常

 [root@master51 ~]# kubectl get pods -A  -o wide
 NAMESPACE         NAME                                      READY   STATUS    RESTARTS   AGE     IP               NODE        NOMINATED NODE   READINESS GATES
 calico-system     calico-kube-controllers-76d5c7cfc-xrqjf   1/1     Running   0          16s     10.100.140.66    worker53   <none>           <none>
 calico-system     calico-node-5jl24                         1/1     Running   0          17s     10.0.0.52       worker52   <none>           <none>
 calico-system     calico-node-82zlb                         1/1     Running   0          17s     10.0.0.53       worker53   <none>           <none>
 calico-system     calico-node-876hn                         1/1     Running   0          17s     10.0.0.51       master51   <none>           <none>
 calico-system     calico-typha-7f46474748-b4rm9             1/1     Running   0          8s      10.0.0.53       worker53   <none>           <none>
 calico-system     calico-typha-7f46474748-d68bc             1/1     Running   0          17s     10.0.0.52       worker52   <none>           <none>
 calico-system     csi-node-driver-f884w                     2/2     Running   0          17s     10.100.203.129   worker52   <none>           <none>
 calico-system     csi-node-driver-pxq6d                     2/2     Running   0          17s     10.100.140.65    worker53   <none>           <none>
 calico-system     csi-node-driver-qczsc                     2/2     Running   0          17s     10.100.160.129   master51   <none>           <none>
 kube-system       coredns-6d8c4cb4d-dbdnp                   1/1     Running   0          32m     10.100.140.68    worker53   <none>           <none>
 kube-system       coredns-6d8c4cb4d-s464h                   1/1     Running   0          32m     10.100.140.67    worker53   <none>           <none>
 kube-system       etcd-master51                            1/1     Running   0          32m     10.0.0.51       master51   <none>           <none>
 kube-system       kube-apiserver-master51                  1/1     Running   0          32m     10.0.0.51       master51   <none>           <none>
 kube-system       kube-controller-manager-master51         1/1     Running   0          32m     10.0.0.51       master51   <none>           <none>
 kube-system       kube-proxy-66dzn                          1/1     Running   0          32m     10.0.0.51       master51   <none>           <none>
 kube-system       kube-proxy-9tjh8                          1/1     Running   0          26m     10.0.0.52       worker52   <none>           <none>
 kube-system       kube-proxy-w678l                          1/1     Running   0          26m     10.0.0.53       worker53   <none>           <none>
 kube-system       kube-scheduler-master51                  1/1     Running   0          32m     10.0.0.51       master51   <none>           <none>
 tigera-operator   tigera-operator-8d497bb9f-bnflh           1/1     Running   0          2m12s   10.0.0.53       worker53   <none>           <none>
 [root@master51 ~]# 
 ​
 ​

5. 再次查看节点的状态

 [root@master51 ~]#  kubectl get node -o wide
 NAME        STATUS   ROLES                  AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
 master51   Ready    control-plane,master   33m   v1.23.17   10.0.0.51    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 worker52   Ready    <none>                 27m   v1.23.17   10.0.0.52    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 worker53   Ready    <none>                 27m   v1.23.17   10.0.0.53    <none>        Ubuntu 22.04.4 LTS   5.15.0-119-generic   docker://20.10.24
 [root@master51 ~]# 

kubectl工具实现自动补全功能

1. 添加环境变量

 [root@master51 ~]# kubectl completion bash > ~/.kube/completion.bash.inc
 [root@master51 ~]# echo source '$HOME/.kube/completion.bash.inc' >> ~/.bashrc 
 [root@master51 ~]# source ~/.bashrc
 [root@master51 ~]# 

2. 验证自动补全功能

 [root@master51 ~]# kubectl # 连续按2次tab键测试能否出现命令
 alpha          auth           cordon         diff           get            patch          run            version
 annotate       autoscale      cp             drain          help           plugin         scale          wait
 api-resources  certificate    create         edit           kustomize      port-forward   set            
 api-versions   cluster-info   debug          exec           label          proxy          taint          
 apply          completion     delete         explain        logs           replace        top            
 attach         config         describe       expose         options        rollout        uncordon       
 [root@master51 ~]# 

3. 关机拍摄快照(可选)

4.开启虚拟机测试验证k8s服务是否正常

 [root@master51 ~]# 
 [root@master51 ~]# kubectl get nodes -o wide
 NAME        STATUS   ROLES                  AGE   VERSION    INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
 master51   Ready    control-plane,master   39m   v1.23.17   10.0.0.51    <none>        Ubuntu 22.04.4 LTS   5.15.0-140-generic   docker://20.10.24
 worker52   Ready    <none>                 33m   v1.23.17   10.0.0.52    <none>        Ubuntu 22.04.4 LTS   5.15.0-140-generic   docker://20.10.24
 worker53   Ready    <none>                 33m   v1.23.17   10.0.0.53    <none>        Ubuntu 22.04.4 LTS   5.15.0-140-generic   docker://20.10.24
 [root@master51 ~]# 
 [root@master51 ~]# 
 [root@master51 ~]# 
 [root@master51 ~]# kubectl get pods -A -o wide
 NAMESPACE          NAME                                      READY   STATUS    RESTARTS       AGE     IP               NODE        NOMINATED NODE   READINESS GATES
 calico-apiserver   calico-apiserver-64b795966c-w4gkd         1/1     Running   1 (100s ago)   6m19s   10.100.140.71    worker53   <none>           <none>
 calico-apiserver   calico-apiserver-64b795966c-zdpck         1/1     Running   1 (112s ago)   6m19s   10.100.203.131   worker52   <none>           <none>
 calico-system      calico-kube-controllers-76d5c7cfc-xrqjf   1/1     Running   1 (100s ago)   6m37s   10.100.140.73    worker53   <none>           <none>
 calico-system      calico-node-5jl24                         1/1     Running   1 (112s ago)   6m38s   10.0.0.52       worker52   <none>           <none>
 calico-system      calico-node-82zlb                         1/1     Running   1 (100s ago)   6m38s   10.0.0.53       worker53   <none>           <none>
 calico-system      calico-node-876hn                         1/1     Running   1 (117s ago)   6m38s   10.0.0.51       master51   <none>           <none>
 calico-system      calico-typha-7f46474748-b4rm9             1/1     Running   1 (100s ago)   6m29s   10.0.0.53       worker53   <none>           <none>
 calico-system      calico-typha-7f46474748-d68bc             1/1     Running   1 (112s ago)   6m38s   10.0.0.52       worker52   <none>           <none>
 calico-system      csi-node-driver-f884w                     2/2     Running   2 (112s ago)   6m38s   10.100.203.132   worker52   <none>           <none>
 calico-system      csi-node-driver-pxq6d                     2/2     Running   2 (100s ago)   6m38s   10.100.140.74    worker53   <none>           <none>
 calico-system      csi-node-driver-qczsc                     2/2     Running   2 (117s ago)   6m38s   10.100.160.130   master51   <none>           <none>
 kube-system        coredns-6d8c4cb4d-dbdnp                   1/1     Running   1 (100s ago)   39m     10.100.140.72    worker53   <none>           <none>
 kube-system        coredns-6d8c4cb4d-s464h                   1/1     Running   1 (100s ago)   39m     10.100.140.70    worker53   <none>           <none>
 kube-system        etcd-master51                            1/1     Running   1 (117s ago)   39m     10.0.0.51       master51   <none>           <none>
 kube-system        kube-apiserver-master51                  1/1     Running   1 (117s ago)   39m     10.0.0.51       master51   <none>           <none>
 kube-system        kube-controller-manager-master51         1/1     Running   1 (117s ago)   39m     10.0.0.51       master51   <none>           <none>
 kube-system        kube-proxy-66dzn                          1/1     Running   1 (117s ago)   39m     10.0.0.51       master51   <none>           <none>
 kube-system        kube-proxy-9tjh8                          1/1     Running   1 (112s ago)   33m     10.0.0.52       worker52   <none>           <none>
 kube-system        kube-proxy-w678l                          1/1     Running   1 (100s ago)   33m     10.0.0.53       worker53   <none>           <none>
 kube-system        kube-scheduler-master51                  1/1     Running   1 (117s ago)   39m     10.0.0.51       master51   <none>           <none>
 tigera-operator    tigera-operator-8d497bb9f-bnflh           1/1     Running   2 (73s ago)    8m33s   10.0.0.53       worker53   <none>           <none>
 [root@master51 ~]#