【问题标题】:Why SSH is not working in kubernetes pods/container?为什么 SSH 在 kubernetes pod/容器中不起作用?
【发布时间】:2019-12-23 19:07:39
【问题描述】:

我们有一个应用程序,它使用 SSH 将工件从一个节点复制到另一个节点。在创建 Docker 映像(基于 Linux Centos 8)时,我已经安装了 Openssh 服务器和客户端,当我从 Docker 命令运行映像并执行到其中时,我能够成功运行 SSH 命令,并且还看到了端口 22启用并监听 ($ lsof -i -P -n | grep LISTEN)。

但是,如果我在 Kubernetes 集群中使用相同的映像启动 POD/Container,我看不到端口 22 已启用并在容器内进行侦听。即使我尝试从 k8s 容器内部启动sshd,它也会给我以下错误:

Redirecting to /bin/systemctl start sshd.service Failed to get D-Bus connection: Operation not permitted.

有没有办法在启用 SSH 的情况下启动 K8s 容器?

【问题讨论】:

  • 通常 Docker 容器不运行 ssh 守护进程。我看到的几乎每个 SO 问题都暗示这有一个重大的安全问题,比如在 Dockerfile 中有一个硬编码的明文 root 密码。我会重新设计您的系统以使用更易于设置的通信系统,例如 pod 之间的 HTTP 调用。

标签: ssh kubernetes


【解决方案1】:

需要考虑三件事:

  1. 就像大卫在他的评论中所说:

我会重新设计您的系统以使用更简单的通信系统 进行设置,例如在 pod 之间进行 HTTP 调用。

  1. 如果您将服务放在部署之前,它不会中继任何 SSH 连接。所以你必须直接指向 pod,这可能很不方便。

  2. 如果您错过了:您需要在部署模板中声明端口 22。

如果有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 2014-11-23
    • 2021-09-27
    • 1970-01-01
    • 2021-05-08
    • 2022-12-16
    • 2016-01-23
    • 2019-10-16
    相关资源
    最近更新 更多