佈建 TKG 叢集後,最好部署一些測試工作負載並驗證叢集功能。
部署測試應用程式,以確認 TKG 叢集已啟動且正在執行。
必要條件
- 佈建 TKG 叢集。
- 連線至 TKG 叢集。
程序
- 佈建 TKG 叢集。
- 使用 kubectl 登入 主管。
kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME>
- 將組態內容切換到佈建 TKGS 叢集的 vSphere 命名空間。
kubectl config use-context VSPHERE-NAMESPACE
- 登入目標 TKG 叢集。
kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME> \ --tanzu-kubernetes-cluster-name CLUSTER-NAME \ --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
- 使用下列內容建立
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
- 建立
regcred
登錄認證。用於此案例的容器映像 (busybox) 從公用 Docker Hub 登錄中提取,這可能會限制映像提取。如果出現這種情況,您需要使用網繭規格中參考的 Docker Hub 帳戶和映像提取密碼 (「regcred」)。若要建立此密碼,請參閱 建立私人登錄認證密碼。 - 視需要設定網繭安全性。
如果使用的是 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" ...
- 套用 YAML。
kubectl apply -f ping-pod.yaml
預期的結果:pod/ping-pod created
- 檢查網繭是否已成功完成。
kubectl get pods -n default
NAME READY STATUS RESTARTS AGE ping-pod 0/1 Completed 0 13s
- 驗證網繭是否已對 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
- 刪除網繭。
kubectl delete -f ping-pod.yaml
- 確認網繭是否已刪除。
kubectl get pods