Shell(ssh)到Azure AKS(Kubernetes)群集工作程序节点

时间:2018-11-21 21:11:54

标签: kubernetes azure-kubernetes azure-aks

我在Azure中使用AKS拥有一个Kubernetes集群,我想“登录”到其中一个节点。节点没有公共IP。

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

Gist和此page对如何执行有很好的解释。切入节点,而不要炮轰吊舱/容器。

答案 1 :(得分:1)

Azure文档的一篇文章中长期介绍了该过程: https://docs.microsoft.com/en-us/azure/aks/ssh。它包含运行一个pod(用作中继以ssh进入节点),并且运行良好:

您可能在集群创建期间指定了ssh用户名和公共密钥。如果没有,则必须将节点配置为接受它们作为ssh凭据:

$ az vm user update \
  --resource-group MC_myResourceGroup_myAKSCluster_region \
  --name node-name \
  --username theusername \
  --ssh-key-value ~/.ssh/id_rsa.pub

要找到您的节点名称:

az vm list --resource-group MC_myResourceGroup_myAKSCluster_region -o table

完成后,在群集中运行一个带有SSH客户端的Pod,这是将用于SSH到节点的Pod:

kubectl run -it --rm my-ssh-pod --image=debian
# install ssh components, as their is none in the Debian image
apt-get update && apt-get install openssh-client -y

在您的工作站上,获取刚刚创建的Pod的名称:

$ kubectl get pods

将您的私钥添加到窗格中

$ kubectl cp ~/.ssh/id_rsa pod-name:/id_rsa

然后,在pod中,通过ssh连接到您的节点之一:

ssh -i /id_rsa theusername@10.240.0.4

(在工作站上查找节点IP):

az vm list-ip-addresses --resource-group MC_myAKSCluster_myAKSCluster_region -o table

答案 2 :(得分:0)

您可以使用它代替SSH。这将创建一个微小的priv pod,并使用nsenter来访问节点。 https://github.com/mohatb/kubectl-wls