佈建 TKG 叢集後,最好部署一些測試工作負載並驗證叢集功能。

部署測試應用程式,以確認 TKG 叢集已啟動且正在執行。

必要條件

  • 佈建 TKG 叢集。
  • 連線至 TKG 叢集。

程序

  1. 佈建 TKG 叢集。
  2. 使用 kubectl 登入 主管
    kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME>
  3. 將組態內容切換到佈建 TKGS 叢集的 vSphere 命名空間
    kubectl config use-context VSPHERE-NAMESPACE
  4. 登入目標 TKG 叢集。
    kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME> \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  5. 使用下列內容建立 ping-pod.yaml 檔案。
    apiVersion: v1
    kind: Pod
    metadata:
      name: ping-pod
      namespace: default
    spec:
      containers:
      - image: busybox:1.34
        name: busybox
        command: ["ping", "-c"]
        args: ["1", "8.8.8.8"]
      imagePullSecrets:
      - name: regcred
      restartPolicy: Never
    
  6. 建立 regcred 登錄認證。
    用於此案例的容器映像 (busybox) 從公用 Docker Hub 登錄中提取,這可能會限制映像提取。如果出現這種情況,您需要使用網繭規格中參考的 Docker Hub 帳戶和映像提取密碼 (「regcred」)。若要建立此密碼,請參閱 建立私人登錄認證密碼
  7. 視需要設定網繭安全性。
    如果使用的是 Tanzu Kubernetes 版本 v1.24 或更早版本,請繼續執行下一步,然後建立網繭。
    如果使用的是 Tanzu Kubernetes 版本 v1.25,將啟用 PSA 警告。您可以繼續執行下一步,然後建立網繭。但是,請注意,您將收到有關網繭安全性違規的警告,可忽略該警告。
    Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false 
    (container "busybox" must set securityContext.allowPrivilegeEscalation=false), 
    unrestricted capabilities (container "busybox" must set securityContext.capabilities.drop=["ALL"]), 
    runAsNonRoot != true (pod or container "busybox" must set securityContext.runAsNonRoot=true), 
    seccompProfile (pod or container "busybox" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
    如果使用的是 Tanzu Kubernetes 版本 v1.26 或更新版本,將強制執行 PSA 限制。如果嘗試按照下一步所示建立網繭, 將會失敗並顯示以下錯誤。
    Error from server (Forbidden): error when creating "ping-pod.yaml": pods "ping-pod" is forbidden: 
    violates PodSecurity "restricted:latest": allowPrivilegeEscalation != false 
    (container "busybox" must set securityContext.allowPrivilegeEscalation=false), 
    unrestricted capabilities (container "busybox" must set securityContext.capabilities.drop=["ALL"]), 
    runAsNonRoot != true (pod or container "busybox" must set securityContext.runAsNonRoot=true), 
    seccompProfile (pod or container "busybox" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
    若要修正此問題,請在建立網繭的 default 命名空間中執行以下命令。請注意,這樣做將移除命名空間上的 PSA 限制
    kubectl label --overwrite ns default pod-security.kubernetes.io/enforce=privileged
    或者,也可以將 securityContext 直接套用於網繭,例如:
    ...
    spec:
      containers:
      - image: busybox:1.34
        name: busybox
        command: ["ping", "-c"]
        args: ["1", "8.8.8.8"]
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
          runAsNonRoot: true
          runAsUser: 1000
          seccompProfile:
            type: "RuntimeDefault"
    ...
  8. 套用 YAML。
    kubectl apply -f ping-pod.yaml
    預期的結果:
    pod/ping-pod created
  9. 檢查網繭是否已成功完成。
    kubectl get pods -n default
    NAME       READY   STATUS      RESTARTS   AGE
    ping-pod   0/1     Completed   0          13s
    
  10. 驗證網繭是否已對 DNS 伺服器執行 Ping 動作。
    kubectl logs ping-pod -f
    預期的結果:
    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=106 time=33.352 ms
    
    --- 8.8.8.8 ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max = 33.352/33.352/33.352 ms
    
  11. 刪除網繭。
    kubectl delete -f ping-pod.yaml
  12. 確認網繭是否已刪除。
    kubectl get pods