可以 vmware-system-user 用户身份使用私钥通过 SSH 连接到 Tanzu Kubernetes 集群节点。

您可以以 vmware-system-user 用户身份通过 SSH 连接到任何 Tanzu Kubernetes 集群节点。包含 SSH 私钥的机密被命名为 CLUSTER-NAME-ssh。有关详细信息,请参见获取 Tanzu Kubernetes 集群密钥

要使用私钥通过 SSH 连接到 Tanzu Kubernetes 集群节点,请在 主管集群 上创建跳转盒 vSphere Pod

前提条件

在此任务中,将置备一个 vSphere Pod,作为 SSH 连接的跳转主机。 vSphere Pod 要求对 主管集群 使用 NSX-T 网络连接。如果对 主管集群 使用的是 vDS 网络连接,请改用以下方法: 以系统用户身份使用密码通过 SSH 连接到 Tanzu Kubernetes 集群节点

过程

  1. 连接到 主管集群
  2. 创建名为 NAMESPACE 的环境变量,其值是置备了目标 Tanzu Kubernetes 集群的 vSphere 命名空间 的名称。
    export NAMESPACE=VSPHERE-NAMESPACE
  3. 将上下文切换到置备了 vSphere 命名空间 集群的 Tanzu Kubernetes
    kubectl config use-context $NAMESPACE
  4. 查看 TKGS-CLUSTER-NAME-ssh 密钥对象。
    kubectl get secrets
  5. 使用以下 jumpbox.yaml 创建 vSphere Pod
    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 规范部署 pod。
    kubectl apply -f jumpbox.yaml
    pod/jumpbox created
  7. 验证 pod 是否正在运行。
    kubectl get pods
    NAME      READY   STATUS    RESTARTS   AGE
    jumpbox   1/1     Running   0          3h9m
    
    注: 您也应会在 vSphere 命名空间 中看到 vCenter 中的 jumpbox pod。
  8. 通过运行以下一组命令,创建具有目标集群节点的 IP 地址的环境变量。
    1. 获取目标虚拟机的名称。
      kubectl get virtualmachines
    2. 创建环境变量 VMNAME,其值为目标节点的名称。
      export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
    3. 创建环境变量 VMIP,其值为目标节点虚拟机的 IP 地址。
      export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
  9. 运行以下命令,使用跳转盒通过 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. 在节点上执行所需的操作。
    注意: 您可能需要使用 sudosudo su 在节点上执行某些操作,例如重新启动 kubelet。
  13. 完成后,键入 exit,注销 vSphere Pod 上的 SSH 会话。
  14. 要删除 pod,请运行命令 kubectl delete pod jumpbox
    小心: 为安全起见,请考虑在完成工作后删除 jumpbox pod。如果需要,可以稍后重新创建。