我使用的是Docker for Mac,但目前仅将其用于Kubernetes集群。 Kubernetes集群的单个节点名为docker-for-desktop。
我目前正在阅读关于Persistent Volumes(https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/)的Kubernetes教程,作为其中的一部分,我正在设置一个hostPath持久卷。看起来它的工作方式是,您在Kubernetes节点上创建一个路径,您可以将其用作持久性卷以进行开发和测试。
为此,本教程指示您通过SSH连接到Kubernetes节点并创建一个可以转换为持久卷的路径。唯一的问题是,我不知道如何直接SSH到Kubernetes节点本身(不是容器)。 minikube的等价物就是minikube ssh
。我可以kubectl describe
节点,但我只获得一个内部IP地址,而不是外部IP地址。所以我不知道如何在ssh
命令中解决它。
有任何想法吗?
更新:
如果节点是由docker-machine使用VirtualBox创建的,则类似于minikube,使用以下命令:
docker-machine ssh default
如果您使用默认的HyperKit
驱动程序用于MAC,则不存在类似VirtualBox的VM,但您应该能够使用以下命令打开shell:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
原版的:
如果您可以直接访问节点和证书,它就像这样的命令一样简单:
ssh -i certificatename 10.0.0.1
要么
ssh -i certificatename [email protected]
看看this的帖子。
如果您在云提供程序中运行Kubernetes,则应使用提供程序工具执行此操作。
一个例子是您将使用的Google Cloud:
gcloud compute ssh <NODE_NAME> --zone <ZONE>
Azure和Aws也有类似的选项,您也可以使用它们的门户网站。
另一种方法是,在集群中使用bastian \ helper容器连接到节点而不设置网络权限,它可以在云或本地集群上运行。
就像是:
kubectl run -it --rm aks-ssh --image=debian
这将使用bash运行一个容器,然后你必须安装ssh客户端apt-get update && apt-get install openssh-client -y
将客户端证书复制到容器并ssh进入节点,如ssh -i id_rsa [email protected]
。
在AKS docs有一个很好的例子