docker - 如何让容器关闭 Kubernetes 中的主机?
问题描述
我有一个 kubernetes 设置,其中一个是master
节点和两个worker
节点。在部署之后,即 a ,它会在两个节点daemonset
上启动 pod 。worker
这些 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 中的主机发出命令吗?
解决方案
您可以使用 kube api 访问您的集群。
https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/
从 Pod 访问 API 从 pod 访问 API 时,定位和验证到 apiserver 是有些不同的。
在 pod 中定位 apiserver 的推荐方法是使用 kubernetes.default.svc DNS 名称,该名称解析为服务 IP,该服务 IP 又将被路由到 apiserver。
向 apiserver 进行身份验证的推荐方法是使用服务帐户凭据。通过 kube-system,一个 pod 与一个服务帐户相关联,并且该服务帐户的凭证(令牌)被放置在该 pod 中每个容器的文件系统树中,位于 /var/run/secrets/kubernetes.io/serviceaccount /令牌。
排空节点,您可以使用它
驱逐 API
https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/
但我不太确定 pod 是否会耗尽自己的节点。解决方法可以是控制来自不同节点的其他 pod。
推荐阅读
- python-3.x - 在将python脚本转换为exe期间隐藏输入文件
- java - Apache Commons BeanUtils 中的 SQL 日期转换
- postgresql - 在冲突时插入表并从 csv 更新
- mongodb - 带有日期时间的 New-MdbcQuery 不返回结果
- javascript - 解构为两个独立的变量
- powerbi - 所有页面的 PowerBI 日期过滤器
- python - 使用 vies.py 在 Django 中列出和详细视图错误
- google-analytics - 如何统一(在同一 ID 下)谷歌分析访问者数据和 CRM 客户数据
- performance - Powershell Invoke-Command 在一台计算机上连接速度非常慢
- c# - EF Core 查询自定义身份用户