【问题标题】:SSH to Azure's Kubernetes managed master nodeSSH 到 Azure 的 Kubernetes 托管主节点
【发布时间】:2017-11-22 07:49:58
【问题描述】:
我刚刚使用 Azure 容器服务部署了一个托管 Kubernetes 集群。我的部署包括托管集群上的单个代理计算机和附加到它的 Azure 磁盘以进行持久存储。
我面临的问题是我不知道如何 ssh 这个代理服务器。我读到您应该能够 ssh 主节点并从那里连接到代理,但是由于我使用的是托管 Kubernetes 主节点,所以我找不到这样做的方法。
有什么想法吗?提前谢谢你。
【问题讨论】:
标签:
azure
docker
service
kubernetes
containers
【解决方案1】:
我面临的问题是我不知道如何 ssh 这个代理
服务器。
你的意思是你创建了 AKS 却找不到主 VM?
如果我理解正确,这是一种设计行为,AKS不提供对集群的直接访问(例如使用 SSH)。
如果您想通过 SSH 连接到代理节点,作为一种变通方法,我们可以创建公共 IP 地址并将此公共 IP 地址关联到代理的 NIC,然后我们可以通过 SSH 连接到这个代理。
这是我的步骤:
1.通过 Azure 门户创建公共 IP 地址:
2.将公共 IP 地址关联到代理 VM 的 NIC:
3.SSH 使用此公共 IP 地址连接到此 VM:
注意:
默认情况下,我们可以在尝试创建 AKS 时找到 ssh 密钥,如下所示:
【解决方案2】:
基本上,您甚至不必为该节点创建公共 IP。只需使用 Azure CLI 将公共 ssh 密钥添加到所需节点:
az vm user update --resource-group <NODE_RG> --name <NODE_NAME> --username azureuser --ssh-key-value ~/.ssh/id_rsa.pub
然后运行临时 pod(不要忘记在 kubernetes 配置中切换到所需的命名空间):
kubectl run -it --rm aks-ssh --image=debian
将私有 ssh 密钥复制到该 pod:
kubectl cp ~/.ssh/id_rsa <POD_NAME>:/id_rsa
最后,从 pod 到私有 IP 连接到 AKS 节点:
ssh -i id_rsa azureuser@<NODE_PRIVATE_IP>
这样,您不必为公共 IP 付费,另外,从安全角度来看,这也很好。