【问题标题】:How to make container shutdown a host machine in kubernetes?如何让容器关闭 Kubernetes 中的主机?
【发布时间】:2018-07-31 06:06:12
【问题描述】:

我有一个 kubernetes 设置,其中一个是 master 节点和两个 worker 节点。部署后,即 daemonset,它会在两个 worker 节点上启动 pod。这些 pod 包含 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/dockers 中的主机发出命令?

【问题讨论】:

  • 你到底要关闭什么,工作节点还是远程服务器?
  • 我要重启主机。

标签: docker kubernetes


【解决方案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,一个 pod 与一个服务相关联 帐户,并放置该服务帐户的凭据(令牌) 进入该 pod 中每个容器的文件系统树,在 /var/run/secrets/kubernetes.io/serviceaccount/token.

排干节点你可以用这个

驱逐 API

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 2019-08-26
    • 2015-02-02
    • 2019-01-13
    • 2015-10-30
    • 1970-01-01
    • 2018-12-24
    相关资源
    最近更新 更多