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

Posted

技术标签:

【中文标题】Shell (ssh) 到 Azure AKS (Kubernetes) 群集工作节点【英文标题】:Shell (ssh) into Azure AKS (Kubernetes) cluster worker node 【发布时间】:2019-04-24 12:32:01 【问题描述】:

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

有没有办法做到这一点?

【问题讨论】:

你应该可以使用az aks get-credentials --resource-group myAKSResourceGroup --name myAKSCluster登录到aks @Hackerman 可以这么说登录“kubectl”。我想进入其中一个工作节点...我想进入实际 VM 的 linux shell 看看我的回答。 我删除了我的答案,也感谢您的反对。选择的答案质量很差,但是没关系。 对不起@Hackerman,我的反对票是为了反馈你误解了我的问题;如果有办法收回它,我会这样做;也许恢复答案,我会拿走我的反对票 【参考方案1】:

这个Gist 和这个page 对如何做到这一点有很好的解释。进入节点而不是进入 pod/容器。

【讨论】:

虽然有时需要通过 SSH 连接到节点,但您应该能够使用 DaemonSet 做任何您需要的事情,而且这种方法也更具可扩展性(当您扩展集群时,应用 DaemonSet到每个新节点)。您可以像 comment 一样从节点(或整个 fs)安装 hostPaths。 感谢@Rick,我还没有尝试过这个(我找到了另一种调查我的问题的方法)但阅读了这篇文章,这似乎正是我想要做的,所以谢谢你的回答! @alev 这只是为了调查节点级别的一些网络。不是真正的生产过程【参考方案2】:

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

将您的私钥添加到 pod 中:

$ 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

【讨论】:

您使用的链接已更新,但这正是您要查找的内容。【参考方案3】:

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

【讨论】:

链接页面可能会回答问题,但可能会变得不可用。因此,请从此处添加相关详细信息,以使其持久且可通过搜索找到。

以上是关于Shell (ssh) 到 Azure AKS (Kubernetes) 群集工作节点的主要内容,如果未能解决你的问题,请参考以下文章

将 Azure 磁盘附加到 AKS pod 时出现权限错误

在 Azure 上将卷添加到 Terraform AKS 群集时出现错误“没有这样的主机”

如何将来自不同订阅的 ACR 附加到 AKS? [关闭]

如何将 Azure AKS Kubernetes 集群自签名 CA 添加到 GitLab CI/CD Kubernetes 集成?

错误:在 Azure Kubernetes 服务 (AKS) 中轮换证书

是否有用于 Azure AKS(Azure kubernetes 服务)集群的 API 网关