使用 KubeKey v3.1.1 離線部署原生 Kubernetes v1.28.8 實戰

kubesphere發表於2024-06-12

今天,我將為大家實戰演示,如何基於作業系統 openEuler 22.03 LTS SP3,利用 KubeKey 製作 Kubernetes 離線安裝包,並實戰離線部署 Kubernetes v1.28.8 叢集。

實戰伺服器配置 (架構 1:1 復刻小規模生產環境,配置略有不同)

主機名 IP CPU 記憶體 系統盤 資料盤 用途
ksp-control-1 192.168.9.91 8 16 40 100 離線環境 k8s-control-plane
ksp-control-2 192.168.9.92 8 16 40 100 離線環境 k8s-control-plane
ksp-control-3 192.168.9.93 8 16 40 100 離線環境 k8s-control-plane
ksp-registry 192.168.9.90 4 8 40 100 離線環境部署節點和映象倉庫節點
ksp-deploy 192.168.9.89 4 8 40 100 聯網主機用於製作離線包
合計 5 32 64 200 500

實戰環境涉及軟體版本資訊

  • 作業系統:openEuler 22.03 LTS SP3
  • Kubernetes:v1.28.8
  • KubeKey: v3.1.1

1. 製作離線部署資源

本文增加了一臺能聯網的 ksp-deploy 節點,在該節點下載 KubeKey 最新版(v3.1.1),用來製作離線部署資源包。

1.1 下載 KubeKey

  • 下載最新版的 KubeKey
mkdir -p /data/kubekey
cd /data/kubekey

# 選擇中文區下載(訪問 GitHub 受限時使用)
export KKZONE=cn

# 執行下載命令,獲取最新版的 kk(受限於網路,有時需要執行多次)
curl -sfL https://get-kk.kubesphere.io | sh -

1.2 建立 manifests 模板檔案

KubeKey v3.1.0 之前, manifests 檔案需要根據模板手動編寫, 現在可以透過 Kubekey 的 create manifest 命令自動生成 manifests 模板。

  1. create manifest 支援的引數如下
$ ./kk create manifest --help
Create an offline installation package configuration file

Usage:
  kk create manifest [flags]

Flags:
      --arch stringArray         Specify a supported arch (default [amd64])
      --debug                    Print detailed information
  -f, --filename string          Specify a manifest file path
  -h, --help                     help for manifest
      --ignore-err               Ignore the error message, remove the host which reported error and force to continue
      --kubeconfig string        Specify a kubeconfig file
      --name string              Specify a name of manifest object (default "sample")
      --namespace string         KubeKey namespace to use (default "kubekey-system")
      --with-kubernetes string   Specify a supported version of kubernetes
      --with-registry            Specify a supported registry components
  -y, --yes                      Skip confirm check
  1. 官方示例(支援多叢集、多架構)
# 示例:建立包含 kubernetes v1.24.17,v1.25.16,且 cpu 架構為 amd64、arm64 的 manifests 檔案。
./kk create manifest --with-kubernetes v1.24.17,v1.25.16 --arch amd64 --arch arm64
  1. 建立一個 amd64 架構 kubernetes v1.28.8 的 manifests 檔案
./kk create manifest --name opsxlab --with-kubernetes v1.28.8 --arch amd64 --with-registry "docker registry"
  1. 生成的配置檔案如下
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
 name: opsxlab
spec:
 arches:
 - amd64
 operatingSystems:
 - arch: amd64
   type: linux
   id: ubuntu
   version: "20.04"
   osImage: Ubuntu 20.04.6 LTS
   repository:
     iso:
       localPath:
       url:
 kubernetesDistributions:
 - type: kubernetes
   version: v1.28.8
 components:
   helm:
     version: v3.14.3
   cni:
     version: v1.2.0
   etcd:
     version: v3.5.13
   containerRuntimes:
   - type: docker
     version: 24.0.9
   - type: containerd
     version: 1.7.13
   calicoctl:
     version: v3.27.3
   crictl:
     version: v1.29.0
   docker-registry:
     version: "2"
   harbor:
     version: v2.10.1
   docker-compose:
     version: v2.26.1
 images:
 - docker.io/kubesphere/pause:3.9
 - docker.io/kubesphere/kube-apiserver:v1.28.8
 - docker.io/kubesphere/kube-controller-manager:v1.28.8
 - docker.io/kubesphere/kube-scheduler:v1.28.8
 - docker.io/kubesphere/kube-proxy:v1.28.8
 - docker.io/coredns/coredns:1.9.3
 - docker.io/kubesphere/k8s-dns-node-cache:1.22.20
 - docker.io/calico/kube-controllers:v3.27.3
 - docker.io/calico/cni:v3.27.3
 - docker.io/calico/node:v3.27.3
 - docker.io/calico/pod2daemon-flexvol:v3.27.3
 - docker.io/calico/typha:v3.27.3
 - docker.io/flannel/flannel:v0.21.3
 - docker.io/flannel/flannel-cni-plugin:v1.1.2
 - docker.io/cilium/cilium:v1.15.3
 - docker.io/cilium/operator-generic:v1.15.3
 - docker.io/hybridnetdev/hybridnet:v0.8.6
 - docker.io/kubeovn/kube-ovn:v1.10.10
 - docker.io/kubesphere/multus-cni:v3.8
 - docker.io/openebs/provisioner-localpv:3.3.0
 - docker.io/openebs/linux-utils:3.3.0
 - docker.io/library/haproxy:2.9.6-alpine
 - docker.io/plndr/kube-vip:v0.7.2
 - docker.io/kubesphere/kata-deploy:stable
 - docker.io/kubesphere/node-feature-discovery:v0.10.0
 registry:
   auths: {}

預設的配置檔案說明:

  • KubeKey v3.1.1 生成的 manifests 配置檔案適用於 ubuntu 部署純 Kubernetes 叢集。因此,我們需要稍作修改,生成一份適配 openEuler 22.03 LTS SP3 的 manifests 檔案。
  • images 列表中有一些映象實際上用不到,可以刪除。本文保留了所有映象。

1.3 修改 manifest 模板檔案

根據上面的檔案及相關資訊,生成最終的 manifest 檔案 ksp-v1.28.8-manifest-opsxlab.yaml

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
  name: opsxlab
spec:
  arches:
  - amd64
  operatingSystems:
  - arch: amd64
    type: linux
    id: openEuler
    version: "22.03"
    osImage: openEuler 22.03 (LTS-SP3)
    repository:
      iso:
        localPath: "/data/kubekey/openEuler-22.03-rpms-amd64.iso"
        url:
  kubernetesDistributions:
  - type: kubernetes
    version: v1.28.8
  components:
    helm:
      version: v3.14.3
    cni:
      version: v1.2.0
    etcd:
      version: v3.5.13
    containerRuntimes:
    - type: docker
      version: 24.0.9
    - type: containerd
      version: 1.7.13
    calicoctl:
      version: v3.27.3
    crictl:
      version: v1.29.0
    docker-registry:
      version: "2"
    harbor:
      version: v2.10.1
    docker-compose:
      version: v2.26.1
  images:
  - docker.io/kubesphere/pause:3.9
  - docker.io/kubesphere/kube-apiserver:v1.28.8
  - docker.io/kubesphere/kube-controller-manager:v1.28.8
  - docker.io/kubesphere/kube-scheduler:v1.28.8
  - docker.io/kubesphere/kube-proxy:v1.28.8
  - docker.io/coredns/coredns:1.9.3
  - docker.io/kubesphere/k8s-dns-node-cache:1.22.20
  - docker.io/calico/kube-controllers:v3.27.3
  - docker.io/calico/cni:v3.27.3
  - docker.io/calico/node:v3.27.3
  - docker.io/calico/pod2daemon-flexvol:v3.27.3
  - docker.io/calico/typha:v3.27.3
  - docker.io/flannel/flannel:v0.21.3
  - docker.io/flannel/flannel-cni-plugin:v1.1.2
  - docker.io/cilium/cilium:v1.15.3
  - docker.io/cilium/operator-generic:v1.15.3
  - docker.io/hybridnetdev/hybridnet:v0.8.6
  - docker.io/kubeovn/kube-ovn:v1.10.10
  - docker.io/kubesphere/multus-cni:v3.8
  - docker.io/openebs/provisioner-localpv:3.3.0
  - docker.io/openebs/linux-utils:3.3.0
  - docker.io/library/haproxy:2.9.6-alpine
  - docker.io/plndr/kube-vip:v0.7.2
  - docker.io/kubesphere/kata-deploy:stable
  - docker.io/kubesphere/node-feature-discovery:v0.10.0
  - docker.io/kubesphere/busybox:1.31.1
  registry:
    auths: {}

manifest 修改說明

  • operatingSystems 配置刪除預設的 ubuntu,新增 openEuler 配置
  • 建議把常用的 nginx、busybox 等基礎映象也加到 images 列表中

1.4 獲取作業系統依賴包

本實驗環境使用的作業系統是 x64 的 openEuler 22.03 LTS SP3,需要自己製作安裝 Kubernetes 需要的作業系統依賴包映象 openEuler-22.03-rpms-amd64.iso,其他作業系統請讀者在 KubeKey releases 頁面下載。

KubeKey 官方支援的作業系統依賴包,包含以下系統:

  • almalinux-9.0
  • centos7
  • debian10
  • debian11
  • ubuntu-18.04
  • ubuntu-20.04
  • ubuntu-22.04

個人建議在離線環境用 openEuler 的安裝 ISO,製做一個完整的離線軟體源。在利用 KubeKey 安裝離線叢集時,就不需要考慮作業系統依賴包的問題。

1.5 匯出製品 artifact

根據生成的 manifest,執行下面的命令製作製品(artifact)。

export KKZONE=cn
./kk artifact export -m ksp-v1.28.8-manifest-opsxlab.yaml -o ksp-offline-v1.28-artifact.tar.gz

正確執行後,輸出結果如下(受限於篇幅,僅展示最終結果):

....
kube/v1.28.8/amd64/kubeadm
kube/v1.28.8/amd64/kubectl
kube/v1.28.8/amd64/kubelet
registry/compose/v2.26.1/amd64/docker-compose-linux-x86_64
registry/harbor/v2.10.1/amd64/harbor-offline-installer-v2.10.1.tgz
registry/registry/2/amd64/registry-2-linux-amd64.tar.gz
repository/amd64/openEuler/22.03/openEuler-22.03-amd64.iso
runc/v1.1.12/amd64/runc.amd64
06:44:12 CST success: [LocalHost]
06:44:12 CST [ChownOutputModule] Chown output file
06:44:12 CST success: [LocalHost]
06:44:12 CST [ChownWorkerModule] Chown ./kubekey dir
06:44:12 CST success: [LocalHost]
06:44:12 CST Pipeline[ArtifactExportPipeline] execute successfull

製品製作完成後,檢視製品大小(全映象,製品包居然達到了 2.7G,實際使用時儘量有選擇的裁剪吧)。

$ ls -lh ksp-offline-v1.28-artifact.tar.gz
-rw-r--r-- 1 root root 2.7G May 31 06:44 ksp-offline-v1.28-artifact.tar.gz

1.6 匯出 KubeKey 離線安裝包

把 KubeKey 工具也製作成壓縮包,便於複製到離線節點。

$ tar zcvf kubekey-offline-v1.28.tar.gz kk kubekey-v3.1.1-linux-amd64.tar.gz

2. 準備離線部署 Kubernetes 的前置資料

請注意,以下操作無特殊說明,均在離線環境部署(Registry)節點上執行。

2.1 上傳離線部署資源包到部署節點

將以下離線部署資源包,上傳至離線環境部署(Registry) 節點的 /data/ 目錄(可根據實際情況修改)。

  • Kubekey:kubekey-offline-v1.28.tar.gz
  • 製品 artifact:ksp-offline-v1.28-artifact.tar.gz

執行以下命令,解壓 KubeKey:

# 創離線資源存放的資料目錄
mkdir /data/kubekey
tar xvf /data/kubekey-offline-v1.28.tar.gz -C /data/kubekey
mv ksp-offline-v1.28-artifact.tar.gz /data/kubekey

注意: openEuler 預設不安裝 tar,請自己想辦法在離線部署節點上安裝 tar。

2.2 建立離線叢集配置檔案

  • 執行以下命令建立離線叢集配置檔案
cd /data/kubekey
./kk create config --with-kubernetes v1.28.8 -f ksp-v1228-offline.yaml

命令執行成功後,在當前目錄會生成檔名為 ksp-v1228-offline.yaml 的配置檔案。

2.3 修改 Cluster 配置

離線叢集配置檔案中 kind: Cluster 小節的作用是部署 Kubernetes 叢集。本示例採用 3 個節點同時作為 control-plane、etcd 節點和 worker 節點。

執行命令,修改離線叢集配置檔案 ksp-v1228-offline.yaml

vi ksp-v1228-offline.yaml

修改 kind: Cluster 小節中 hosts 和 roleGroups 等資訊,修改說明如下。

  • hosts:指定節點的 IP、ssh 使用者、ssh 密碼、ssh 埠。示例演示了 ssh 埠號的配置方法。同時,新增一個 Registry 節點的配置
  • roleGroups:指定 3 個 etcd、control-plane 節點,複用相同的機器作為 3 個 worker 節點
  • 必須指定主機組 registry 作為倉庫部署節點
  • internalLoadbalancer: 啟用內建的 HAProxy 負載均衡器
  • system.rpms:新增配置,部署時安裝 rpm 包(openEuler 系統預設沒有安裝 tar 包,必須提前安裝)
  • domain:自定義了一個 opsxlab.cn,沒特殊需求的場景保留預設值即可
  • containerManager:使用 containerd
  • storage.openebs.basePath:新增配置,指定 openebs 預設儲存路徑為 /data/openebs/local
  • registry:不指定 type 型別,預設安裝 docker registry

修改後的完整示例如下:

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: ksp-control-1, address: 192.168.9.91, internalAddress: 192.168.9.91, port:22, user: root, password: "OpsXlab@2024"}
  - {name: ksp-control-2, address: 192.168.9.92, internalAddress: 192.168.9.92, user: root, password: "OpsXlab@2024"}
  - {name: ksp-control-3, address: 192.168.9.93, internalAddress: 192.168.9.93, user: root, password: "OpsXlab@2024"}
  - {name: ksp-registry, address: 192.168.9.90, internalAddress: 192.168.9.90, user: root, password: "OpsXlab@2024"}
  roleGroups:
    etcd:
    - ksp-control-1
    - ksp-control-2
    - ksp-control-3
    control-plane: 
    - ksp-control-1
    - ksp-control-2
    - ksp-control-3
    worker:
    - ksp-control-1
    - ksp-control-2
    - ksp-control-3
    registry:
    - ksp-registry
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers 
    internalLoadbalancer: haproxy

    domain: lb.opsxlab.cn
    address: ""
    port: 6443
  system:
    rpms:
      - tar
  kubernetes:
    version: v1.28.8
    clusterName: opsxlab.cn
    autoRenewCerts: true
    containerManager: containerd
  etcd:
    type: kubekey
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  storage:
    openebs:
      basePath: /data/openebs/local # 預設沒有的新增配置,base path of the local PV provisioner
  registry:
    auths:
      "registry.opsxlab.cn":
        certsPath: "/etc/docker/certs.d/registry.opsxlab.cn"
    privateRegistry: "registry.opsxlab.cn"
    namespaceOverride: "kubesphereio"
    registryMirrors: []
    insecureRegistries: []
  addons: []

3. 離線部署映象倉庫

為了驗證 Kubekey 離線部署映象倉庫服務的能力,本文采用 Kubekey 部署映象倉庫 Docker Registry小規模生產環境沒必要使用 Harbor

請注意,以下操作無特殊說明,均在離線環境部署(Registry)節點上執行。

3.1 安裝 Docker Registry

執行以下命令安裝映象倉庫 Docker Registry

./kk init registry -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz

正確執行後,輸出結果如下(受限於篇幅,僅展示最終結果):

07:02:15 CST [InitRegistryModule] Fetch registry certs
07:02:15 CST success: [ksp-registry]
07:02:15 CST [InitRegistryModule] Generate registry Certs
[certs] Generating "ca" certificate and key
[certs] registry.opsxlab.cn serving cert is signed for DNS names [ksp-registry localhost registry.opsxlab.cn] and IPs [127.0.0.1 ::1 192.168.9.90]
07:02:16 CST success: [LocalHost]
07:02:16 CST [InitRegistryModule] Synchronize certs file
07:02:19 CST success: [ksp-registry]
07:02:19 CST [InitRegistryModule] Synchronize certs file to all nodes
07:02:25 CST success: [ksp-registry]
07:02:25 CST success: [ksp-control-2]
07:02:25 CST success: [ksp-control-1]
07:02:25 CST success: [ksp-control-3]
07:02:25 CST [InstallRegistryModule] Install registry binary
07:02:25 CST success: [ksp-registry]
07:02:25 CST [InstallRegistryModule] Generate registry service
07:02:26 CST success: [ksp-registry]
07:02:26 CST [InstallRegistryModule] Generate registry config
07:02:27 CST success: [ksp-registry]
07:02:27 CST [InstallRegistryModule] Start registry service

Local image registry created successfully. Address: registry.opsxlab.cn

07:02:27 CST success: [ksp-registry]
07:02:27 CST [ChownWorkerModule] Chown ./kubekey dir
07:02:27 CST success: [LocalHost]
07:02:27 CST Pipeline[InitRegistryPipeline] execute successfully
  • 檢視 Docker 是否配置了私有證書(確保使用了自定義域名及證書
$ ls /etc/ssl/registry/ssl/
ca.crt  ca-key.pem  ca.pem  registry.opsxlab.cn.cert  registry.opsxlab.cn.key  registry.opsxlab.cn-key.pem  registry.opsxlab.cn.pem

$ ls /etc/docker/certs.d/registry.opsxlab.cn/
ca.crt  registry.opsxlab.cn.cert  registry.opsxlab.cn.key

3.2 推送離線映象到映象倉庫

將提前準備好的離線映象推送到映象倉庫,這一步為可選項,因為建立叢集的時候預設會推送映象(本文使用引數忽略了)。為了部署成功率,建議先推送。

  • 推送離線映象
./kk artifact image push -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz
  • 正確的安裝結果如下(受限於篇幅,內容有刪減):
......
07:04:34 CST Push multi-arch manifest list: registry.opsxlab.cn/kubesphereio/kube-controllers:v3.27.3
INFO[0035] Retrieving digests of member images
07:04:34 CST Digest: sha256:70bfc9dcf0296a14ae87035b8f80911970cb0990c4bb832fc4cf99937284c477 Length: 393
07:04:34 CST success: [LocalHost]
07:04:34 CST [ChownWorkerModule] Chown ./kubekey dir
07:04:34 CST success: [LocalHost]
07:04:34 CST Pipeline[ArtifactImagesPushPipeline] execute successfully

4. 離線部署 Kubernetes 叢集

請注意,以下操作無特殊說明,均在離線環境部署(Registry)節點上執行。

4.1 離線部署 Kubernetes 叢集

執行以下命令,部署 Kubernetes 叢集。

./kk create cluster -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz --with-packages --skip-push-images

引數說明:

  • --with-packages:安裝作業系統依賴
  • --skip-push-images: 忽略推送映象,前面已經完成了推送映象到私有倉庫的任務

部署完成後,您應該會在終端上看到類似於下面的輸出。

daemonset.apps/calico-node created
deployment.apps/calico-kube-controllers created
10:19:05 CST skipped: [ksp-control-3]
10:19:05 CST skipped: [ksp-control-2]
10:19:05 CST success: [ksp-control-1]
10:19:05 CST [ConfigureKubernetesModule] Configure kubernetes
10:19:05 CST success: [ksp-control-1]
10:19:05 CST skipped: [ksp-control-2]
10:19:05 CST skipped: [ksp-control-3]
10:19:05 CST [ChownModule] Chown user $HOME/.kube dir
10:19:05 CST success: [ksp-control-2]
10:19:05 CST success: [ksp-control-1]
10:19:05 CST success: [ksp-control-3]
10:19:05 CST [AutoRenewCertsModule] Generate k8s certs renew script
10:19:07 CST success: [ksp-control-3]
10:19:07 CST success: [ksp-control-2]
10:19:07 CST success: [ksp-control-1]
10:19:07 CST [AutoRenewCertsModule] Generate k8s certs renew service
10:19:08 CST success: [ksp-control-1]
10:19:08 CST success: [ksp-control-2]
10:19:08 CST success: [ksp-control-3]
10:19:08 CST [AutoRenewCertsModule] Generate k8s certs renew timer
10:19:09 CST success: [ksp-control-2]
10:19:09 CST success: [ksp-control-3]
10:19:09 CST success: [ksp-control-1]
10:19:09 CST [AutoRenewCertsModule] Enable k8s certs renew service
10:19:10 CST success: [ksp-control-2]
10:19:10 CST success: [ksp-control-1]
10:19:10 CST success: [ksp-control-3]
10:19:10 CST [SaveKubeConfigModule] Save kube config as a configmap
10:19:10 CST success: [LocalHost]
10:19:10 CST [AddonsModule] Install addons
10:19:10 CST success: [LocalHost]
10:19:10 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.

Please check the result using the command:

        kubectl get pod -A

在 control-1 節點,執行命令 kubectl get pod -A,檢視叢集部署的最終結果,確保所有 Pod 的狀態均為 Running

$ kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-76bdc94776-dztgc   1/1     Running   0          2m51s
kube-system   calico-node-mxmm6                          1/1     Running   0          2m51s
kube-system   calico-node-p57qs                          1/1     Running   0          2m51s
kube-system   calico-node-pf5pb                          1/1     Running   0          2m51s
kube-system   coredns-6587775575-tp6sg                   1/1     Running   0          3m16s
kube-system   coredns-6587775575-v9jc6                   1/1     Running   0          3m16s
kube-system   kube-apiserver-ksp-control-1               1/1     Running   0          3m28s
kube-system   kube-apiserver-ksp-control-2               1/1     Running   0          2m45s
kube-system   kube-apiserver-ksp-control-3               1/1     Running   0          2m49s
kube-system   kube-controller-manager-ksp-control-1      1/1     Running   0          3m28s
kube-system   kube-controller-manager-ksp-control-2      1/1     Running   0          2m57s
kube-system   kube-controller-manager-ksp-control-3      1/1     Running   0          2m57s
kube-system   kube-proxy-8mqvs                           1/1     Running   0          2m56s
kube-system   kube-proxy-p9j9b                           1/1     Running   0          2m56s
kube-system   kube-proxy-sdtgl                           1/1     Running   0          2m56s
kube-system   kube-scheduler-ksp-control-1               1/1     Running   0          3m28s
kube-system   kube-scheduler-ksp-control-2               1/1     Running   0          3m1s
kube-system   kube-scheduler-ksp-control-3               1/1     Running   0          3m1s
kube-system   nodelocaldns-9gj5t                         1/1     Running   0          3m1s
kube-system   nodelocaldns-n7wwm                         1/1     Running   0          3m2s
kube-system   nodelocaldns-sbmxl                         1/1     Running   0          3m16s

4.2 kubectl 命令列驗證叢集狀態

在 control-1 節點執行 kubectl 命令獲取 Kubernetes 叢集資源資訊。

  • 檢視叢集節點資訊
kubectl get nodes -o wide

在輸出結果中可以看到,當前的 Kubernetes 叢集有 3個節點,並詳細展示每個節點的名字、狀態、角色、存活時間、Kubernetes 版本號、內部 IP、作業系統型別、核心版本和容器執行時等資訊。

$ kubectl get nodes -o wide
NAME           STATUS   ROLES                  AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                    KERNEL-VERSION                       CONTAINER-RUNTIME
ksp-control-1   Ready    control-plane,worker   7m45s   v1.28.8   192.168.9.91   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
ksp-control-2   Ready    control-plane,worker   7m14s   v1.28.8   192.168.9.92   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
ksp-control-3   Ready    control-plane,worker   7m15s   v1.28.8   192.168.9.93   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13
  • 檢視 Pod 列表

輸入以下命令獲取在 Kubernetes 叢集上執行的 Pod 列表,確保所有的容器狀態都是 Running受限於篇幅,內容不展示)。

kubectl get pods -o wide -A

至此,我們部署完成了一套 Control-plane 和 Worker 複用,3 節點的 Kubernetes 叢集。

免責宣告:

  • 筆者水平有限,儘管經過多次驗證和檢查,盡力確保內容的準確性,但仍可能存在疏漏之處。敬請業界專家大佬不吝指教。
  • 本文所述內容僅透過實戰環境驗證測試,讀者可學習、借鑑,但嚴禁直接用於生產環境由此引發的任何問題,作者概不負責

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章