Você pode SSH para um nó de cluster TKG como o vmware-system-user
usando uma chave privada.
Você pode se conectar por meio do SSH a qualquer nó de cluster TKG como o usuário vmware-system-user
. O segredo que contém a chave privada SSH é denominado CLUSTER-NAME-ssh
. Consulte Obter segredos de cluster do TKG 2 usando o Kubectl.
Para se conectar a um nó de cluster do TKG por meio de SSH usando uma chave privada, crie uma jumpbox vSphere Pod em Supervisor.
Procedimento
- Conecte-se a Supervisor.
- Crie uma variável de ambiente chamada NAMESPACE, cujo valor seja o nome do vSphere Namespace em que o cluster TKG de destino é provisionado.
export NAMESPACE=VSPHERE-NAMESPACE
- Alterne o contexto para o vSphere Namespace em que o cluster Tanzu Kubernetes é provisionado.
kubectl config use-context $NAMESPACE
- Visualize o objeto secreto
TKG-CLUSTER-NAME-ssh
.
- Crie um vSphere Pod usando o seguinte
jumpbox.yaml
.
Substitua o valor
namespace
YOUR-NAMESPACE
pelo
vSphere Namespace em que o cluster de destino é provisionado. Substitua o valor
secretName
YOUR-CLUSTER-NAME
-ssh pelo nome do cluster de destino.
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
- Implante o pod aplicando a especificação
jumpbox.yaml
.
kubectl apply -f jumpbox.yaml
- Verifique se o pod está em execução.
NAME READY STATUS RESTARTS AGE
jumpbox 1/1 Running 0 3h9m
Observação: Você também deve ver o pod de jumpbox em vCenter no
vSphere Namespace.
- Crie uma variável de ambiente com o endereço IP do nó do cluster de destino executando o seguinte conjunto de comandos.
- Obtenha o nome da máquina virtual de destino.
kubectl get virtualmachines
- Crie a variável de ambiente
VMNAME
cujo valor é o nome do nó de destino.
export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
- Crie a variável de ambiente
VMIP
cujo valor é o endereço IP da VM do nó de destino.
export VMIP=$(kubectl -n $NAMESPACE get virtualmachine/$VMNAME -o jsonpath='{.status.vmIp}')
- SSH para o nó de cluster usando o pod de jumpbox executando o seguinte comando.
kubectl exec -it jumpbox /usr/bin/ssh vmware-system-user@$VMIP
Importante: A criação do contêiner e a instalação do software levam aproximadamente 60 segundos. Se você receber um "erro ao executar o comando no contêiner: container_linux.go:370: startup container process cause: exec: "/usr/bin/ssh": stat /usr/bin/ssh: no such file or directory", tente o comando novamente em alguns segundos.
- Confirme a autenticidade do host digitando 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
- Confirme se você está conectado ao nó de destino como o
vmware-system-user
.
Por exemplo, a saída a seguir indica que você está conectado a um nó do plano de controle como o usuário do sistema.
vmware-system-user@tkg-cluster-1-control-plane-66tbr [ ~ ]$
- Execute as operações desejadas no nó.
Atenção: Pode ser necessário usar
sudo
ou
sudo su
para executar determinadas operações no nó, como reiniciar o kubelet.
- Quando terminar, digite exit para fazer logout da sessão SSH no vSphere Pod.
- Para excluir o pod, execute o comando
kubectl delete pod jumpbox
.
Cuidado: Por questões de segurança, considere a exclusão do pod de jumpbox depois de concluir seu trabalho. Se necessário, você poderá recriá-lo posteriormente.