개인 키를 사용하여 vmware-system-userTanzu Kubernetes 클러스터 노드에 SSH를 통해 연결할 수 있습니다.

SSH를 통해 vmware-system-user 사용자로 Tanzu Kubernetes 클러스터 노드에 연결할 수 있습니다. SSH 개인 키가 포함된 암호는 CLUSTER-NAME-ssh라고 이름이 지정됩니다. 자세한 내용은 Tanzu Kubernetes 클러스터 암호 얻기의 내용을 참조하십시오.

개인 키를 사용하여 SSH를 통해 Tanzu Kubernetes 클러스터 노드에 연결하려면 감독자 클러스터에서 점프 박스(jump box) vSphere 포드를 생성합니다.

사전 요구 사항

이 작업에서는 vSphere 포드를 SSH 연결을 위한 점프 호스트로 프로비저닝합니다. 감독자 클러스터에는 vSphere 포드용 NSX-T 네트워킹이 필요합니다. 감독자 클러스터에 vDS 네트워킹을 사용하는 경우 암호를 사용하여 시스템 사용자로 Tanzu Kubernetes 클러스터 노드에 SSH를 통해 연결 대신 다음 방식을 사용합니다.

프로시저

  1. 감독자 클러스터에 연결합니다.
  2. NAMESPACE라는 환경 변수를 생성합니다. 이 값은 대상 Tanzu Kubernetes 클러스터가 프로비저닝된 vSphere 네임스페이스의 이름입니다.
    export NAMESPACE=VSPHERE-NAMESPACE
  3. Tanzu Kubernetes 클러스터가 프로비저닝된 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context $NAMESPACE
  4. TKGS-CLUSTER-NAME-ssh 암호 개체를 확인합니다.
    kubectl get secrets
  5. 다음 jumpbox.yaml을 사용하여 vSphere 포드를 생성합니다.
    namespaceYOUR-NAMESPACE를 대상 클러스터가 프로비저닝된 vSphere 네임스페이스로 바꿉니다. secretNameYOUR-CLUSTER-NAME-ssh를 대상 클러스터의 이름으로 바꿉니다.
    apiVersion: v1
    kind: Pod
    metadata:
      name: jumpbox
      namespace: YOUR-NAMESPACE     #REPLACE
    spec:
      containers:
      - image: "photon:3.0"
        name: jumpbox
        command: [ "/bin/bash", "-c", "--" ]
        args: [ "yum install -y openssh-server; mkdir /root/.ssh; cp /root/ssh/ssh-privatekey /root/.ssh/id_rsa; chmod 600 /root/.ssh/id_rsa; while true; do sleep 30; done;" ]
        volumeMounts:
          - mountPath: "/root/ssh"
            name: ssh-key
            readOnly: true
        resources:
          requests:
            memory: 2Gi
      volumes:
        - name: ssh-key
          secret:
            secretName: YOUR-CLUSTER-NAME-ssh     #REPLACE 
    
  6. jumpbox.yaml 규격을 적용하여 포드를 배포합니다.
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  7. 포드가 실행 중인지 확인합니다.
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    참고: vSphere 네임스페이스의 vCenter에도 jumpbox 포드가 보여야 합니다.
  8. 다음 명령 집합을 실행하여 대상 클러스터 노드의 IP 주소를 사용하여 환경 변수를 생성합니다.
    1. 대상 가상 시스템의 이름을 가져옵니다.
      kubectl get virtualmachines
    2. 값이 대상 노드의 이름인 환경 변수 VMNAME을 생성합니다.
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. 값이 대상 노드 VM의 IP 주소인 환경 변수 VMIP를 생성합니다.
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  9. 다음 명령을 실행하여 점프 박스(jump box) 포드를 사용하여 SSH를 통해 클러스터 노드에 연결합니다.
    kubectl exec -it jumpbox  /usr/bin/ssh vmware-system-user@$VMIP
    중요: 컨테이너를 생성하고 소프트웨어를 설치하는 데 약 60초가 걸립니다. "error executing command in container: container_linux.go:370: starting container process caused: exec: "/usr/bin/ssh": stat /usr/bin/ssh: no such file or directory"가 표시되면 몇 초 후에 명령을 다시 시도합니다.
  10. yes를 입력하여 호스트의 신뢰성을 확인합니다.
    The authenticity of host '10.249.0.999 (10.249.0.999)' can't be established.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.249.0.999' (ECDSA) to the list of known hosts.
    Welcome to Photon 3.0
     
  11. 대상 노드에 vmware-system-user로 로그인되어 있는지 확인합니다.
    예를 들어, 다음 출력은 사용자가 제어부 노드에 시스템 사용자로 로그인했음을 나타냅니다.
    vmware-system-user@tkgs-cluster-1-control-plane-66tbr [ ~ ]$
    
  12. 노드에서 원하는 작업을 수행합니다.
    주의: 노드에서 kubelet 다시 시작과 같은 특정 작업을 수행하려면 sudo 또는 sudo su를 사용해야 할 수 있습니다.
  13. 완료되면 exit를 입력하여 vSphere 포드의 SSH 세션에서 로그아웃합니다.
  14. 포드를 삭제하려면 kubectl delete pod jumpbox 명령을 실행합니다.
    경고: 보안을 위해 작업을 완료한 후에는 jumpbox 포드를 삭제하는 것이 좋습니다. 필요하면 나중에 다시 생성할 수 있습니다.