如何使容器关闭成为Kubernetes中的主机?

时间:2018-07-31 06:06:13

标签: docker kubernetes

我有一个kubernetes设置,其中一个是master节点,两个是worker节点。部署daemonset之后,它将在两个worker节点上启动容器。这些吊舱包含2个容器。这些容器中运行着python脚本。 python脚本正常运行,但是在某个时间点之后的某个时间点,它需要向主机发送shutdown命令。我可以直接发出命令shutdown -h now,但这将在容器上而不在主机上运行,​​并给出以下错误:

Failed to connect to bus: No such file or directory
Failed to talk to init daemon.

要解决此问题,我可以获取主机的ip address,然后可以将其ssh到其中,然后运行命令以安全地关闭主机。

但是还有其他方法可以向kubernetes / docker中的主机发出命令吗??

1 个答案:

答案 0 :(得分:1)

您可以使用kube api访问集群。

https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/

  

从Pod中访问API从Pod中访问API时,   对apiserver的定位和身份验证有些不同。

     

在Pod中定位apiserver的推荐方法是使用   kubernetes.default.svc DNS名称,它解析为一个服务IP   依次将其路由到apiserver。

     

推荐的对apiserver进行身份验证的方法是使用服务   帐户凭证。通过kube-system,吊舱与服务相关联   帐户,并放置该服务帐户的凭据(令牌)   到该容器中每个容器的文件系统树中   /var/run/secrets/kubernetes.io/serviceaccount/token。

排干节点,您可以使用它

  

驱逐API

https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/

但是我不太确定Pod是否会耗尽自己的节点。解决方法可以控制来自不同节点的其他Pod。