是否可以将ssh带到pod。 例如:ssh pod_ip
我知道我们可以使用kubectl命令执行此操作。但我需要从我当地的linux机器上做ssh,我没有kubectl
由于
答案 0 :(得分:12)
首先,您必须确保已在pod中安装并运行openssh-server。如果没有,您可以使用kubectl exec -it <pod-name> -n <namespace> -- bash
访问该广告连播。
如果您的pod正在运行Ubuntu,请执行apt-get install -y openssh-server
。
其次,pod正在由网络服务分配的虚拟IP子网中运行。群集中的任何主节点和工作节点都可以访问它们。您可以从任何主机操作系统执行ssh。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您想在POD中的特定容器内登录
kubectl exec -it <Pod_Name> -c <Container_Name> -- /bin/bash
如果您想登录默认容器(或POD中只有一个容器),则只需使用
kubectl exec -it <Pod_Name> -- /bin/bash
PS:-如果 / bin / bash 不起作用,请尝试 / bin / sh
答案 3 :(得分:1)
以上所有答案都假设您的集群具有公共 IP 地址,以便您可以使用公共 IP 地址从本地 linux 机器连接到您的 pod。理想情况下,使用公共 IP 地址将集群和节点公开暴露给 Internet 并不是安全最佳实践。公共 IP 地址也很昂贵。
此外,以上所有答案都假设用户在本地 linux 机器上本地安装了 kubectl,但这里并非如此。
我即将提出的解决方案需要:
从本地 linux 机器、windows 笔记本电脑或 macbook 连接到 Kubernetes Pod 的最简单、当然也更安全的方法是安装和运行 SocketXP 远程 SSH 代理 Docker 容器作为 Kubernetes 中的独立容器 Pod簇。 SocketXP 代理 pod 将与 SocketXP 云网关和您的 pod 建立安全连接。然后,您可以使用浏览器从 SocketXP 云网关的仪表板页面简单地通过 SSH 访问您的 pod 的外壳。不需要公共IP。无需在您的 linux 机器上本地安装 kubectl。 此外,不要将您的集群或节点暴露给公共互联网,从而使您的 Kubernetes 集群保持私有。
SocketXP 代理 docker 容器可以在这里找到: https://hub.docker.com/r/expresssocket/socketxp
可以在此处找到有关如何在 kubernetes 集群中设置 SocketXP 代理 pod 的详细说明:
https://www.socketxp.com/docs/guide/kubernetes-pod-remote-ssh-access.html