我正在为 Mac 使用 Docker,但目前仅将其用于其 Kubernetes 集群。Kubernetes 集群的单个节点名为 docker -for-desktop。
我目前正在阅读关于持久卷的 Kubernetes 教程(https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/),作为其中的一部分,我正在设置建立一个hostPath持久卷。看起来它的工作方式是,您在 Kubernetes 节点本身上创建一个路径,您可以将其用作用于开发和测试目的的持久卷。
为此,本教程会指导您通过 SSH 连接到您的 Kubernetes 节点本身并创建一个路径,然后该路径可以变成一个持久卷。唯一的问题是,我不知道如何直接通过 SSH 连接到 Kubernetes 节点本身(而不是容器)。minikube 的等价物就是minikube ssh. 我可以kubectl describe访问节点,但我只能获得一个内部 IP 地址,而不是外部 IP 地址。所以我不知道如何在ssh命令中解决它。
有任何想法吗?
Luk*_*e W 11
OP 中的评论应该得到认可,但我会再次添加,这样我会在几个月内发现它更容易:
docker run -it --rm --privileged --pid=host justincormack/nsenter1
Run Code Online (Sandbox Code Playgroud)
来自https://github.com/justincormack/nsenter1/blob/master/README.md
...当您运行轻量级、容器优化的 Linux 发行版(例如 LinuxKit)时,这非常有用...您正在使用 Docker for Mac 进行演示,例如,您的容器不是直接在主机上运行,而是在内部运行专为运行容器而构建的最小 Linux 操作系统虚拟机,即 LinuxKit。但作为一个轻量级环境,LinuxKit 不运行 sshd,那么如何访问 shell,以便运行 nsenter 来检查以 pid 1 运行的进程的命名空间?
Die*_*des -1
更新:
如果节点是由 docker-machine 使用 VirtualBox 创建的,则类似于 minikube,使用以下命令:
docker-machine ssh default
如果您使用的是 MAC 的默认HyperKit驱动程序,则没有像 VirtualBox 这样的虚拟机,但您应该能够使用以下命令打开 shell:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
原来的:
如果您可以直接访问节点和证书,则就像这样简单的命令:
ssh -i certificatename 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
或者
ssh -i certificatename docker@10.0.0.1
Run Code Online (Sandbox Code Playgroud)
看看这篇文章。
如果您在云提供商中运行 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 azureuser@10.240.0.4。
AKS 文档中有一个很好的示例
| 归档时间: |
|
| 查看次数: |
2559 次 |
| 最近记录: |