繁体   English   中英

如何将一根管子装入Kuberentes的一个容器中?

[英]How can one pipe stdin into a container in a pod in Kuberentes?

我在coreos上运行了kubernetes集群。 我希望在我调用日志记录的pod中的容器中运行journal2gelf https://github.com/systemd/journal2gelf (我在这个pod中也有一个流畅的容器,效果很好,我强烈推荐它用于在其他地方传输日志)。 是否可以配置一个pod来实现这个:

journalctl -o json -f | docker run <my journal2gelf image> -d -p $GRAYLOG_PORT

但在containers:键入复制控制器配置? 一般情况下,kubernetes可以管道到容器吗?

这将允许您将stdin发送到容器:

kubectl exec -i POD_NAME COMMAND

要么

kubectl attach -i POD_NAME

但是没有一种好方法可以定义发送到pod中所有容器的stdin,或者由复制控制器生成的所有容器

首先,不,Kubernetes目前没有任何机制来指定容器的stdin。 传递信息的主要方式是环境变量,机密和卷,这些似乎可以处理大多数用例。

此外,此请求不仅仅是能够将信息传递给stdin,而是为了能够在主机上运行任意命令并管理该信息,这会带来一些非常严重的安全问题。

在这种特殊情况下,您可以通过将作为hostDir卷的节点上的hostDir使用的目录hostDir到容器中,然后将journalctl命令作为入口点运行到容器中来获得所需的内容。 当然,这里可能存在更多难以解决的问题,需要您将其作为特权容器运行。

如果您想要完全按照您在问题中指定的内容进行操作,那么最好直接在每个节点上设置该过程,而不是通过Kubernetes。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM