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