如何使用 Kubernetes 从 pod 定义中显示带有 /dev/console 的容器?
How to manifest a container with /dev/console from a pod definition with Kubernetes?
我们在容器中使用 systemd 来管理容器中的进程 运行。
我们在容器中配置 journald,以便它将所有日志发送到 /dev/console。
为了在容器中包含 /dev/console,我们必须在部署容器时使用 Docker 的“-t”选项。
请问,Kubernetes 的等效方式是什么。我们可以在 pod 清单中的何处声明我们需要容器中的 /dev/console?
我知道,使用 kubectl 是可能的(使用“--tty”或“-t”)。但是我们不想用 kubectl 启动容器。
kubectl --tty
选项仅适用于 kubectl exec --tty
,它适用于 运行 已部署在 pod 中的容器内的进程。因此它不会帮助您部署 pods 并定义 /dev/console
。
据我所知,目前的 Kubernetes 无法使 pods 与定义了 /dev/console
的容器一起启动。
我想更进一步地说,这些容器的定义方式(多个进程由 systemd 管理并由 journald 记录)超出了 Kubernetes 的通常用例。 Kubernetes 的价值在于容器是简单的、单独的进程,运行 作为守护进程。 Kubernetes 管理每个 pod 多个不同容器的启动,and/or 多个 pods 作为副本,包括监控、日志记录、重启等。每个容器内有一个单独的 launch/init 和日志方案不会不适合通常的 Kubernetes 用例。
我们在 kubernetes v1.1 中支持 TTY 容器,但不支持没有输入的 tty。如果你想看到那个,我认为 GitHub issue 是合适的。
我同意 Spencer 的观点,运行 容器中的 systemd 不是 "best practice",但这样做有充分的理由,其中最重要的是 "that's what we know how to do"。人们对容器的使用会随着时间的推移而发展。
我们在容器中使用 systemd 来管理容器中的进程 运行。 我们在容器中配置 journald,以便它将所有日志发送到 /dev/console。 为了在容器中包含 /dev/console,我们必须在部署容器时使用 Docker 的“-t”选项。
请问,Kubernetes 的等效方式是什么。我们可以在 pod 清单中的何处声明我们需要容器中的 /dev/console? 我知道,使用 kubectl 是可能的(使用“--tty”或“-t”)。但是我们不想用 kubectl 启动容器。
kubectl --tty
选项仅适用于 kubectl exec --tty
,它适用于 运行 已部署在 pod 中的容器内的进程。因此它不会帮助您部署 pods 并定义 /dev/console
。
据我所知,目前的 Kubernetes 无法使 pods 与定义了 /dev/console
的容器一起启动。
我想更进一步地说,这些容器的定义方式(多个进程由 systemd 管理并由 journald 记录)超出了 Kubernetes 的通常用例。 Kubernetes 的价值在于容器是简单的、单独的进程,运行 作为守护进程。 Kubernetes 管理每个 pod 多个不同容器的启动,and/or 多个 pods 作为副本,包括监控、日志记录、重启等。每个容器内有一个单独的 launch/init 和日志方案不会不适合通常的 Kubernetes 用例。
我们在 kubernetes v1.1 中支持 TTY 容器,但不支持没有输入的 tty。如果你想看到那个,我认为 GitHub issue 是合适的。
我同意 Spencer 的观点,运行 容器中的 systemd 不是 "best practice",但这样做有充分的理由,其中最重要的是 "that's what we know how to do"。人们对容器的使用会随着时间的推移而发展。