33 張高畫質大圖,帶你玩轉 KubeSphere 4.1.2 部署與擴充套件元件安裝

KubeSphere發表於2024-11-13

KubeSphere 最佳實戰:33 張高畫質大圖,帶你玩轉 KubeSphere 4.1.2 部署與擴充套件元件安裝

備受矚目的 KubeSphere 4.1.2 已經正式官宣釋出,該版本帶來了一個重大最佳化:增加預設的擴充套件元件倉庫

這一最佳化改進,讓採用全新的 KubeSphere LuBan 架構的 KubeSphere,真正實現了自由打造高度可擴充套件和可配置的雲原生底座。

KubeSphere 使用者僅需要在 K8s 之上,預設安裝清爽簡潔、最小化的 KubeSphere Core。後續,基於擴充套件機制,將常用的功能拆解、封裝成一個個可配置和可擴充套件的元件式應用模組。根據業務場景自由選擇組合合適的 KubeSphere 擴充套件元件。同時,還能將自己的應用無縫融入到 KubeSphere 控制檯。最終實現雲原生容器雲管理平臺千人千面的效果。

本文為您提供一份詳盡的實戰手冊,透過逐步操作,助您完成以下核心任務:

  • 安裝 K8s 叢集:使用 KubeKey,從零開始構建高可用的 K8s 叢集。
  • 整合 NFS 持久化儲存:無縫對接網路檔案系統 (NFS),為您的叢集提供持久化儲存解決方案。
  • 部署 KubeSphere 4.1.2:在您的叢集上安裝最新版本的 KubeSphere,解鎖強大的多租戶容器雲管理平臺。
  • 配置擴充套件元件:安裝並配置所需擴充套件元件,增強 K8s 叢集的功能。

透過本指南,您將學會構建一個基於 KubeSphere、視覺化管理的高功能、可擴充套件、高可用的 K8s 叢集。清晰的步驟和詳盡的圖解讓每一步都易於操作,確保您能夠輕鬆掌握併成功實施。

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

主機名IPCPU記憶體系統盤資料盤用途
ksp-control-1192.168.9.16181640100KubeSphere/k8s-control-plane
ksp-control-2192.168.9.16281640100KubeSphere/k8s-control-plane
ksp-control-3192.168.9.16381640100KubeSphere/k8s-control-plane
ksp-storage192.168.9.1642440500NFS-Storage
合計42652160800

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

  • 作業系統:openEuler 22.03 LTS SP3 x86_64
  • KubeSphere:4.1.2
  • Kubernetes:v1.30.6
  • KubeKey: v3.1.7

1. 前置條件

1.1 初始化作業系統

可選配置,可以參考 Kubernetes 叢集節點 openEuler 22.03 LTS SP3 系統初始化指南,完成作業系統初始化配置。

如果沒有掛載額外的資料盤,無需定製資料儲存目錄,可以選擇使用 KubeKey 自動完成前置條件的安裝配置。

初始化指南以 openEuler 22.03 LTS SP3 為例,初始化配置過程同樣適用於其他 Linux 發行版,只是命令略有不同。

2. 部署 Kubernetes 叢集

本文利用 KubeSphere 出品的 KubeKey 工具,部署一套包含三個節點Control 和 Worker 複用的 K8s 高可用叢集。

Control 1節點 作為部署節點,執行下面的操作。

2.1 下載 KubeKey

  • 下載最新版的 KubeKey(v3.1.7
mkdir /srv/kubekey
cd /srv/kubekey/

# 選擇中文區下載(訪問 GitHub 受限時使用)
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | sh -
  • 檢視 KubeKey 支援的 Kubernetes 版本列表 ./kk version --show-supported-k8s
$ ./kk version --show-supported-k8s
v1.19.0
v1.19.8
v1.19.9
v1.19.15
......(受限於篇幅,中間的不展示,請讀者根據需求檢視)
v1.28.14
v1.28.15
v1.29.0
v1.29.1
v1.29.2
v1.29.3
v1.29.4
v1.29.5
v1.29.6
v1.29.7
v1.29.8
v1.29.9
v1.29.10
v1.30.0
v1.30.1
v1.30.2
v1.30.3
v1.30.4
v1.30.5
v1.30.6
v1.31.0
v1.31.1
v1.31.2

KubeKey 支援的 K8s 版本相對較新。本文選擇 v1.30.6,而在生產環境中,建議選擇 v1.28.15 或其他次要版本為雙數且補丁版本超過 5 的版本,以確保更高的穩定性和相容性。建議避免選擇過老的版本,畢竟目前 v1.31.2 已經發布,可以為叢集提供更強的功能和安全性。

2.2 建立 Kubernetes 叢集部署配置

  1. 建立叢集配置檔案

本文選擇了 v1.30.6。因此,指定配置檔名稱為 ksp-k8s-v1306.yaml,如果不指定,預設的檔名為 config-sample.yaml

./kk create config -f ksp-k8s-v1306.yaml --with-kubernetes v1.30.6

注意:

  • 安裝完成後,請勿刪除安裝配置檔案 ksp-k8s-v1306.yaml,後續進行節點擴容、解除安裝等操作時仍需要使用該檔案。如果該檔案丟失,您需要重新建立安裝配置檔案。
  • 生成的預設配置檔案內容較多,請參閱 KubeKey 配置示例 瞭解完整配置說明。
  1. 修改配置檔案

本示例採用 3 個節點同時作為 control-plane、etcd 和 worker 節點。

請使用 vi 編輯器,編輯配置檔案 ksp-k8s-v1306.yaml,修改 kind: Cluster 小節中 hosts 和 roleGroups 等資訊,修改說明如下:

  • hosts:指定節點的 IP、ssh 使用者、ssh 密碼
  • roleGroups:指定 3 個 etcd、control-plane 節點,並複用為 worker 節點
  • internalLoadbalancer: 啟用內建的 HAProxy 負載均衡器
  • domain:自定義域名 lb.opsxlab.cn,沒特殊需求可使用預設值 lb.kubesphere.local
  • clusterName:自定義 opsxlab.cn,沒特殊需求可使用預設值 cluster.local
  • autoRenewCerts:該引數可以實現證書到期自動續期,預設為 true
  • containerManager:容器執行時使用 containerd
  • storage.openebs.basePath:預設沒有,新增配置,指定 openebs 預設儲存路徑為 /data/openebs/local
  • registry.privateRegistry:可選配置, 解決 Docker 官方映象不可用的問題
  • registry.namespaceOverride: 可選配置, 解決 Docker 官方映象不可用的問題

修改後的完整示例如下:

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: opsxlab
spec:
  hosts:
  - {name: ksp-control-1, address: 192.168.9.161, internalAddress: 192.168.9.161, user: root, password: "OpsXlab@2024"}
  - {name: ksp-control-2, address: 192.168.9.162, internalAddress: 192.168.9.162, user: root, password: "OpsXlab@2024"}
  - {name: ksp-control-3, address: 192.168.9.163, internalAddress: 192.168.9.163, 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
  controlPlaneEndpoint:
    ## Internal loadbalancer for apiservers
    internalLoadbalancer: haproxy
    domain: lb.opsxlab.cn
    address: ""
    port: 6443
  kubernetes:
    version: v1.30.6
    clusterName: opsxlab.cn
    #dnsDomain: 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 
  registry:
    privateRegistry: "registry.cn-beijing.aliyuncs.com" #使用 KubeSphere 在阿里雲的映象倉庫
    namespaceOverride: "kubesphereio"
    registryMirrors: []
    insecureRegistries: []
  addons: []

2.3 部署 K8s 叢集

使用上面生成的配置檔案,執行下面的命令,建立 K8s 叢集。

export KKZONE=cn
./kk create cluster -f ksp-k8s-v1306.yaml

命令執行後,首先 Kubekey 會檢查部署 K8s 的依賴及其他詳細要求。透過檢查後,系統將提示您確認安裝。輸入 yes 並按 ENTER 繼續部署。

$ ./kk create cluster -f ksp-k8s-v1306.yaml


 _   __      _          _   __
| | / /     | |        | | / /
| |/ / _   _| |__   ___| |/ /  ___ _   _
|    \| | | | '_ \ / _ \    \ / _ \ | | |
| |\  \ |_| | |_) |  __/ |\  \  __/ |_| |
\_| \_/\__,_|_.__/ \___\_| \_/\___|\__, |
                                    __/ |
                                   |___/

19:55:09 CST [GreetingsModule] Greetings
19:55:09 CST message: [ksp-control-3]
Greetings, KubeKey!
19:55:09 CST message: [ksp-control-1]
Greetings, KubeKey!
19:55:09 CST message: [ksp-control-2]
Greetings, KubeKey!
19:55:09 CST success: [ksp-control-3]
19:55:09 CST success: [ksp-control-1]
19:55:09 CST success: [ksp-control-2]
19:55:09 CST [NodePreCheckModule] A pre-check on nodes
19:55:11 CST success: [ksp-control-3]
19:55:11 CST success: [ksp-control-2]
19:55:11 CST success: [ksp-control-1]
19:55:11 CST [ConfirmModule] Display confirmation form
+---------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| name          | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time         |
+---------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+
| ksp-control-1 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 19:55:11 |
| ksp-control-2 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 19:55:11 |
| ksp-control-3 | y    | y    | y       | y        | y     | y     | y       | y         | y      |        |            |            |             |                  | CST 19:55:11 |
+---------------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------+------------+-------------+------------------+--------------+

This is a simple check of your environment.
Before installation, ensure that your machines meet all requirements specified at
https://github.com/kubesphere/kubekey#requirements-and-recommendations

Install k8s with specify version:  v1.30.6

Continue this installation? [yes/no]:

注意:

  • nfs client、ceph client、glusterfs client 3 個與儲存有關的 client 顯示沒有安裝,這個我們後期會在對接儲存的實戰中單獨安裝
  • docker、containerd 會根據配置檔案選擇的 containerManager 型別自動安裝

部署完成需要大約 10-20 分鐘左右,具體看網速和機器配置,本次部署完成耗時 15 分鐘。

部署完成後,如果在終端上顯示如下資訊,則表明 K8s 叢集建立成功。

20:10:23 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.

Please check the result using the command:

        kubectl get pod -A

3. 驗證 K8s 叢集狀態

3.1 檢視叢集節點資訊

控制節點 1 執行 kubectl 命令獲取 K8s 叢集上的可用節點列表。

kubectl get nodes -o wide

在輸出結果中可以看到,當前的 K8s 叢集有三個可用節點、節點角色、K8s 版本號、節點的內部 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   18m   v1.30.6   192.168.9.161   <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   17m   v1.30.6   192.168.9.162   <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   17m   v1.30.6   192.168.9.163   <none>        openEuler 22.03 (LTS-SP3)   5.10.0-182.0.0.95.oe2203sp3.x86_64   containerd://1.7.13

3.2 檢視 Pod 資訊

輸入以下命令獲取在 K8s 叢集上執行的 Pod 列表。

kubectl get pods -A -o wide

輸出結果符合預期,所有 Pod 的狀態都是 Running

$ kubectl get pods -A -o wide
NAMESPACE     NAME                                           READY   STATUS    RESTARTS      AGE   IP              NODE            NOMINATED NODE   READINESS GATES
kube-system   calico-kube-controllers-848b87ffbc-2pmg8       1/1     Running   0             16m   10.233.93.1     ksp-control-1   <none>           <none>
kube-system   calico-node-2pz24                              1/1     Running   0             16m   192.168.9.161   ksp-control-1   <none>           <none>
kube-system   calico-node-gcj44                              1/1     Running   0             16m   192.168.9.163   ksp-control-3   <none>           <none>
kube-system   calico-node-hrttp                              1/1     Running   0             16m   192.168.9.162   ksp-control-2   <none>           <none>
kube-system   coredns-5bfd4749d5-fdhwn                       1/1     Running   0             17m   10.233.93.3     ksp-control-1   <none>           <none>
kube-system   coredns-5bfd4749d5-q8slw                       1/1     Running   0             17m   10.233.93.4     ksp-control-1   <none>           <none>
kube-system   kube-apiserver-ksp-control-1                   1/1     Running   0             17m   192.168.9.161   ksp-control-1   <none>           <none>
kube-system   kube-apiserver-ksp-control-2                   1/1     Running   0             16m   192.168.9.162   ksp-control-2   <none>           <none>
kube-system   kube-apiserver-ksp-control-3                   1/1     Running   0             16m   192.168.9.163   ksp-control-3   <none>           <none>
kube-system   kube-controller-manager-ksp-control-1          1/1     Running   1 (14m ago)   17m   192.168.9.161   ksp-control-1   <none>           <none>
kube-system   kube-controller-manager-ksp-control-2          1/1     Running   1 (13m ago)   16m   192.168.9.162   ksp-control-2   <none>           <none>
kube-system   kube-controller-manager-ksp-control-3          1/1     Running   0             16m   192.168.9.163   ksp-control-3   <none>           <none>
kube-system   kube-proxy-hwqts                               1/1     Running   0             16m   192.168.9.163   ksp-control-3   <none>           <none>
kube-system   kube-proxy-l6rmf                               1/1     Running   0             16m   192.168.9.162   ksp-control-2   <none>           <none>
kube-system   kube-proxy-zksd8                               1/1     Running   0             16m   192.168.9.161   ksp-control-1   <none>           <none>
kube-system   kube-scheduler-ksp-control-1                   1/1     Running   1 (14m ago)   17m   192.168.9.161   ksp-control-1   <none>           <none>
kube-system   kube-scheduler-ksp-control-2                   1/1     Running   0             16m   192.168.9.162   ksp-control-2   <none>           <none>
kube-system   kube-scheduler-ksp-control-3                   1/1     Running   1 (13m ago)   16m   192.168.9.163   ksp-control-3   <none>           <none>
kube-system   nodelocaldns-8w5mr                             1/1     Running   0             17m   192.168.9.161   ksp-control-1   <none>           <none>
kube-system   nodelocaldns-ln7sf                             1/1     Running   0             16m   192.168.9.162   ksp-control-2   <none>           <none>
kube-system   nodelocaldns-zdbp8                             1/1     Running   0             16m   192.168.9.163   ksp-control-3   <none>           <none>
kube-system   openebs-localpv-provisioner-677c4fdd9b-8mfvx   1/1     Running   0             16m   10.233.93.2     ksp-control-1   <none>           <none>

3.3 檢視 Image 列表

輸入以下命令獲取在 K8s 叢集節點上已經下載的 Image 列表。

$ crictl images ls
IMAGE                                                                   TAG                 IMAGE ID            SIZE
registry.cn-beijing.aliyuncs.com/kubesphereio/cni                       v3.27.4             dc6f84c32585f       88.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/coredns                   1.9.3               5185b96f0becf       14.8MB
registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache        1.22.20             ff71cd4ea5ae5       30.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver            v1.30.6             a247bfa6152e7       32.7MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager   v1.30.6             382949f9bfdd9       31.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers          v3.27.4             6b1e38763f401       33.5MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy                v1.30.6             2cce8902ed3cc       29.1MB
registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler            v1.30.6             ad5858afd5322       19.2MB
registry.cn-beijing.aliyuncs.com/kubesphereio/node                      v3.27.4             3dd4390f2a85a       117MB
registry.cn-beijing.aliyuncs.com/kubesphereio/pause                     3.9                 e6f1816883972       322kB
registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv       3.3.0               739e82fed8b2c       28.8MB

至此,我們已經完成了在三臺伺服器部署 Control 和 Worker 節點複用的高可用 Kubernetes 叢集。

4. 對接 NFS 儲存

為了擴充套件 K8s 叢集的儲存能力,我們將快速對接 NFS 作為 OpenEBS 之外的另一種持久化儲存。

本文只介紹 K8s 叢集上的操作,NFS 伺服器的部署和更多細節請參閱探索 Kubernetes 持久化儲存之 NFS 終極實戰指南

4.1 安裝 NFS 客戶端

所有節點執行以下命令,安裝 NFS 客戶端軟體包(一定要安裝,否則無法識別 NFS 型別的儲存)。

yum install nfs-utils

4.2 獲取 NFS Subdir External Provisioner 部署檔案

後續的所有操作,在K8s叢集的 控制節點1 上完成 。

  • 下載最新版 nfs-subdir-external-provisioner-4.0.18 Releases 檔案,並解壓。
cd /srv
wget https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/archive/refs/tags/nfs-subdir-external-provisioner-4.0.18.zip
unzip nfs-subdir-external-provisioner-4.0.18.zip
cd nfs-subdir-external-provisioner-nfs-subdir-external-provisioner-4.0.18/

4.3 建立 NameSpace

可選配置,預設的 NameSpace 為 default,為了便於資源區分管理,可以建立一個新的名稱空間。

  • 建立 NameSpace
kubectl create ns nfs-system
  • 替換資源清單中的名稱空間名稱
 sed -i'' "s/namespace:.*/namespace: nfs-system/g" ./deploy/rbac.yaml ./deploy/deployment.yaml

4.4 配置 RBAC authorization

  • 建立 RBAC 資源
kubectl create -f deploy/rbac.yaml

4.5 配置 NFS subdir external provisioner

請使用 vi 編輯器,編輯檔案 deploy/deployment.yaml,請用實際 NFS 服務端配置修改以下內容:

  • image: 預設使用 registry.k8s.io 映象倉庫的映象 nfs-subdir-external-provisioner:v4.0.2,網路受限時需要想辦法下載並上傳到自己的映象倉庫
  • 10.3.243.101: NFS 伺服器的主機名或是 IP 地址
  • /ifs/kubernetes: NFS 伺服器匯出的共享資料目錄的路徑(exportfs)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-system
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: k8s-sigs.io/nfs-subdir-external-provisioner
            - name: NFS_SERVER
              value: 10.3.243.101
            - name: NFS_PATH
              value: /ifs/kubernetes
      volumes:
        - name: nfs-client-root
          nfs:
            server: 10.3.243.101
            path: /ifs/kubernetes

4.6 部署 NFS Subdir External Provisioner

  • 執行部署命令
 kubectl apply -f deploy/deployment.yaml
  • 檢視 deployment、pod 部署結果
$ kubectl get deployment,pods -n nfs-system
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nfs-client-provisioner   1/1     1            1           19m

NAME                                          READY   STATUS    RESTARTS   AGE
pod/nfs-client-provisioner-7654f5d9df-ltpqx   1/1     Running   0          8m14s

4.7 部署 Storage Class

  • 執行部署命令,部署 Storage Class。
kubectl apply -f deploy/class.yaml
  • 檢視 Storage Class。
$ kubectl get sc
NAME              PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local (default)   openebs.io/local                              Delete          WaitForFirstConsumer   false                  15h
nfs-client        k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate              false                  9s

5. 部署 KubeSphere

接下來我們部署最新的 KubeSphere 4.1.2,實現 K8s 叢集的視覺化管理。

5.1 安裝核心元件 KubeSphere Core

執行以下命令透過 helm 安裝 KubeSphere 的核心元件 KubeSphere Core。

說明: KubeKey 部署 Kubernetes 叢集時會自動安裝 Helm,無需手動安裝。
helm upgrade --install -n kubesphere-system --create-namespace ks-core https://charts.kubesphere.io/main/ks-core-1.1.3.tgz --debug --wait \
--set global.imageRegistry=swr.cn-southwest-2.myhuaweicloud.com/ks \
--set extension.imageRegistry=swr.cn-southwest-2.myhuaweicloud.com/ks \
--set hostClusterName=opsxlab-main

引數說明:

  • hostClusterName: 修改主叢集的名字,預設為 host
  • 兩個 imageRegistry:修改元件映象倉庫地址

部署過程需要大約 1-2分鐘,具體看網速和機器配置,如果映象提前下載到本地,基本上能實現 KubeSphere Core 的秒級部署。

安裝命令執行完成後,如果顯示如下資訊,則表明 ks-core 安裝成功,輸出資訊會顯示 KubeSphere Web 控制檯的 IP 地址、管理員使用者名稱和管理員密碼。

NOTES:
Thank you for choosing KubeSphere Helm Chart.

Please be patient and wait for several seconds for the KubeSphere deployment to complete.

1. Wait for Deployment Completion

    Confirm that all KubeSphere components are running by executing the following command:

    kubectl get pods -n kubesphere-system
2. Access the KubeSphere Console

    Once the deployment is complete, you can access the KubeSphere console using the following URL:

    http://192.168.9.161:30880

3. Login to KubeSphere Console

    Use the following credentials to log in:

    Account: admin
    Password: P@88w0rd

NOTE: It is highly recommended to change the default password immediately after the first login.
For additional information and details, please visit https://kubesphere.io.

5.2 命令列驗證 KubeSphere Core 狀態

  1. 檢視 Pod 列表
kubectl get pods -n kubesphere-system

正確執行後,輸出結果如下 :

$ kubectl get pods -n kubesphere-system
NAME                                    READY   STATUS    RESTARTS   AGE
extensions-museum-558f99bcd4-4jnwj      1/1     Running   0          2m3s
ks-apiserver-57d575b886-4kgwx           1/1     Running   0          2m3s
ks-console-b9ff8948c-5c42w              1/1     Running   0          2m3s
ks-controller-manager-8c4c4c68f-ww8f9   1/1     Running   0          2m3s

6. KubeSphere Core 功能概覽

6.1 工作臺

我們開啟瀏覽器訪問 Control-1 節點的 IP 地址和埠 30880,可以開啟熟悉的 KubeSphere 管理控制檯的登入頁面。

輸入預設使用者 admin 和預設密碼 P@88w0rd,然後點選「登入」。

登入後,系統會要求您更改 KubeSphere 預設使用者 admin 的預設密碼,輸入新的密碼並點選「提交」。

提交完成後,系統會跳轉到新的風格的 KubeSphere 使用者工作臺頁面。

6.2 叢集管理

在「工作臺」頁面,點選「叢集管理」,進入叢集管理頁面,頁面風格更方便多叢集管理。

注意: 叢集名稱顯示符合自定義的 opsxlab-main, 預設名稱為 host。

點選「opsxlab-main 」主叢集,進入叢集管理頁面。新版本的叢集管理選單更加簡潔,預設只有基本的 K8s 管理功能。

  • 叢集概覽

  • 叢集節點

  • 儲存類

注意: 可以正常顯示 K8s 叢集已經配置的nfs-client 和 local兩個儲存類。

至此,我們完成了 KubeSphere Core 的安裝部署。

7. 安裝擴充套件元件

本文以最常用的監控擴充套件元件為例,演示擴充套件市場的功能特性和擴充套件元件的安裝方法,其它元件的安裝配置過程基本類似。

7.1 檢視擴充套件市場

點選左上角的「擴充套件市場」,進入擴充套件市場管理頁面,您可以安裝、管理外掛市場已有的外掛。4.1.2 預設自帶 21 個 外掛。

7.2 安裝監控元件

接下來以監控(WhizardTelemetry)元件為例實戰演示如何安裝、配置擴充套件元件。

KubeSphere v4 將原有的監控功能拆解成了 8個新版的監控元件並新增了 2個額外的元件。

點選擴充套件市場「WhizardTelemetry 監控」元件的「管理」按鈕,開啟監控元件的詳情頁面:

依次點選“管理”、“安裝”,選擇合適的擴充套件元件版本:

依賴元件檢測功能頁面提示需要安裝必裝元件「WhizardTelemetry 平臺服務」。

我們先返回擴充套件市場首頁,先安裝「WhizardTelemetry 平臺服務」元件。

版本選擇: 選擇擴充套件元件版本。

擴充套件元件安裝: 映象倉庫預設使用國外映象,為了避免部署失敗,在擴充套件元件配置頁,修改 imageRegistry 為 KubeSphere 官方提供的華為雲映象倉庫地址。

點選「開始安裝」,安裝過程視覺化,安裝完成後顯示成功的圖示。

安裝完成後,預設啟用該元件。您可以在擴充套件中心對擴充套件元件進行擴充套件元件配置、禁用、解除安裝等操作:

接下來,我們返回擴充套件市場首頁,再次安裝「WhizardTelemetry 監控」元件。

版本選擇: 選擇推薦的最新版,必裝元件檢測也發現了「WhizardTelemetry 平臺服務」元件。

擴充套件元件安裝: 在擴充套件元件配置頁,修改 imageRegistry 為 KubeSphere 官方提供的華為雲映象倉庫地址。

點選開始安裝,安裝過程視覺化,安裝完成後顯示成功的圖示。

叢集選擇: 安裝完成後點選下一步,選擇需要開啟擴充套件元件的目標叢集,目前只有一個叢集,選擇後點選「下一步」。

差異化配置: 對目標叢集中擴充套件元件進行差異化配置,在差異化配置頁,編輯選中叢集的 YAML 配置。

編輯差異化配置,需要參閱元件配置說明進行調整。本文暫不修改,使用初始預設配置。

點選「確認」,開始安裝配置叢集 Agent

在擴充套件元件詳情頁面,點選「元件安裝狀態」圖示,點選「檢視日誌」,檢視安裝過程。等待擴充套件元件叢集 Agent 安裝完成後關閉頁面

安裝完成後,預設啟用該元件。您可以在擴充套件中心對擴充套件元件進行啟用、配置變更、禁用、解除安裝、叢集 Agent 配置等操作:

注意: 本文只安裝了 WhizardTelemetry 的平臺服務和監控元件,還有通知、日誌、事件、告警、資料流水線、OpenSearch 分散式檢索與分析引擎等元件,請根據需求自行安裝。

7.3 外掛驗證

不同的擴充套件元件會有不同的整合方式,有的會將擴充套件元件的功能入口放在頂部導航欄,有的擴充套件元件會將功能入口放在企業空間或專案的側邊欄,有的擴充套件元件會將功能入口放在快捷訪問入口。

「WhizardTelemetry 監控」元件的整合採用了我們熟悉的方式,擴充套件元件安裝完成之後,進入到叢集管理頁面,概覽頁面展示了最佳化後的新版大屏頁面。

監控告警也出現在了叢集管理頁面左側選單列表中,接下來我們檢視細節(與之前版本展示效果基本一致):

  • 叢集狀態

  • 物理資源監控

  • API Server 監控

  • 排程器監控

  • 資源用量排行

至此,我們順利完成了今天的實戰部署任務:

  • 利用 KubeKey 在三臺虛擬機器上安裝 K8s 1.30.6 高可用叢集
  • K8s 叢集對接 NFS 儲存
  • 利用 Helm 安裝 KubeSphere 4.1.2
  • KubeSphere v4 新特性擴充套件元件介紹及監控元件安裝配置實戰

免責宣告:

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

相關文章