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