【问题标题】:How can I ssh into a container running inside an OpenShift/Kubernetes cluster?如何通过 ssh 进入在 OpenShift/Kubernetes 集群中运行的容器?
【发布时间】:2019-06-11 23:04:15
【问题描述】:

我希望能够通过 ssh 进入 OpenShift pod 中的容器。

我知道,我可以简单地使用 oc rsh。但这是基于这样的假设,即我在要从其 ssh 进入容器的节点上安装了 openshift cli。

但我真正想要实现的是,从没有安装 openshift cli 的节点 ssh 进入容器。该节点与 OpenShift 位于同一网络上。该节点确实可以访问容器上托管的 Web 应用程序(仅作为示例)。但我想要 ssh 访问而不是 Web 访问。

有什么方法可以实现吗?

【问题讨论】:

    标签: ssh kubernetes containers openshift


    【解决方案1】:

    与在真实或虚拟硬件上运行整个操作系统的服务器不同,容器只不过是由几个内核特性封装的单个 Linux 进程:CGroups、Namespacing 和 SELinux。如果你愿意的话,这是一个“花哨”的过程。

    在容器中打开 shell 会话与打开到服务器的 ssh 连接并不完全相同。将 shell 打开到容器中需要启动 shell 进程并将其分配到与容器进程相同的主机上的相同 cgroup 和命名空间,然后将该会话呈现给您,这不是 ssh 的设计目的。

    使用oc exec、kubectl exec、podman exec 或docker exec cli 命令在正在运行的容器中打开shell 会话是应该用来连接正在运行的容器的方法。

    【讨论】:

    • 非常感谢尼克提供的信息丰富的回答。即使我的容器在其中运行操作系统也会出现这种情况吗?
    • 那是不可能的。用于创建容器的内核功能不足以封装整个操作系统,只能封装进程组(尽管kubevirt 正在进行一些有趣的工作,以允许在 OpenShift/Kubernetes 集群内调度 vms)。另一个问题可能是“如果我在容器中运行 sshd 会怎样?”在 docker 博客 here 上有一个稍微过时的答案,即“您尝试用 ssh 做的事情可以做得更好”
    • 老实说,找到一种方法在没有它的节点上运行和安装oc 比尝试将sshd 安装到容器中更容易。
    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多