需要ssh到Kubernetes pod

时间:2017-08-16 13:15:53

标签: kubernetes

是否可以将ssh带到pod。 例如:ssh pod_ip

我知道我们可以使用kubectl命令执行此操作。但我需要从我当地的linux机器上做ssh,我没有kubectl

由于

4 个答案:

答案 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)

尝试此命令

  kubectl exec -it [POD_NAME] -- /bin/bash

Link to command

答案 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,但这里并非如此。

我即将提出的解决方案需要:

  1. 没有本地安装的 kubectl 实用程序
  2. 没有要分配给您的集群/节点的公共 IP 地址
  3. 通过 SSH 连接到您的节点或 Pod 的任何浏览器

从本地 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