什么是 Cloud Controller Manager?
Kubernetes 中的 Cloud Controller Manager (CCM) 是一个通过插件机制启动的控制器管理器组件,其专门用于处理云平台相关的资源管理操作,如云平台的负载均衡、云盘存储卷的管理等。CCM 是 Kubernetes 中高度可扩展的云集群管理方案之一,在 Kubernetes 的云原生时代具有重要的作用。
CCM 架构
CCM 的架构可以分为两部分,一部分是 Kubernetes 的控制面,另一部分是云平台的云资源管理API。
Kubernetes 控制面
在 Kubernetes 控制面中,CCM 通过一个特殊的 Kubernetes 控制器进程运行。该进程使用 Kubernetes 自带的客户端 Go 与 API Server 通信,并从云控制器中心获取云 API,并使用相应的 API 来管理云资源。
云平台的云资源管理 API
云平台的云资源管理 API 提供了对以某种特定方式实现的包括云盘卷、云托管节点、云负载均衡等一些特定的云资源对象实现的操作。云平台通常为其云资源的 API 提供相应地 SDK、CLI 或通过一些 HTTP API 调用的能力。
CCM 工作流程
CCM 工作流程包括以下步骤:
- 连接 Kubernetes API,授予其管理云资源的访问权限并等待命令的执行。
- 检测 Kubernetes 集群并过滤出与特定云提供商相关的云资源。
- 设置特定云提供商 API 配置并确保 Kubernetes 集群能够与其它云服务进行交互。
- 在 Kubernetes 集群中提供对特定云提供商的扩展 API。
- 使用特定云提供商 API 创建云资源对象(如云盘存储、负载均衡等)。
- 根据 Kubernetes 特定要求删除或更新云资源对象。
Kubernetes Bug 集锦: 监控 Pod 挂掉|解决方案
在 Kubernetes 中,用户可能会遇到一些监控 Pod 挂掉的问题。为了解决这个问题,我们推荐以下解决方案:
步骤一:创建一个 Health Check
在监听器中,创建一个用于进行健康检查的 Endpoint,以检查 Pod 是否正常运行。Kubernetes 中已经提供了多种类型健康检查机制,如 Liveness Probe 和 Startup Probe 等。例如:
----------- -- ----- --- --------- ------- ---- ----- ----- ----- ----- ----------- - ----- ----- ------ ----- ------ - -------------- -- -------------- -------- ----- - ----- -- -------------------- - -------------- -
上面的 YAML 文件中描述了一个 Pod,其中 Liveness Probe Configuration 部分将告诉 Kubernetes 监控程序,如何检查 Pod 是否正常运行。在此示例中,对根路径进行 HTTP 请求。如果请求返回状态码200,则认为该Pod 正常工作。
步骤二:日志记录
如果 Pod 发送了错误日志,应该记录下来,以快速判断问题发生的原因,而不是花费时间手动排查问题。应该将错误日志存储在中央位置,以便快速和确定问题的来源。
步骤三:将 Pod 重新调度到健康的节点
当 Pod 出现故障时,应该将它重新调度到健康的节点,以确保容器的连续性。可以使用 DaemonSet 和 PodDisruptionBudget 对能够部署 Pod 的节点数做出限制。例如:
----------- ------- ----- --------- --------- ----- ------------- ------- ---- ------------- ----- --------- ------------ ---- ------------- --------- --------- ------- ---- ------------- ----- ----------- - ----- ----- ------ ------------- -------------- -------- ----- - ----- -- -------------------- - -------------- - ------------- ------------------- ------ ------------ - ------- ---------- ---- ------------------------------ --------- ----- ------ ------ - ------- --------- ---- ------------- --------- ----- ------ ------ - ------- --------- ---- ------------------------------ --------- ----- ------ ------
上述列表中 DaemonSet 明确了应该被部署在哪些节点上,同时监听 Pod 的 Liveness Probe 来确定事件是否需要在同一节点上重新调度。
结论
本文对 Kubernetes 中的 Cloud Controller Manager 架构进行了解析,同时详细介绍了如何在 Kubernetes 中监测 Pod 挂掉的情况以及如何解决此问题。我们相信这些技术点对于前端开发者在 Kubernetes 云集群领域中具有很好的学习指导意义。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670f39175f5512810263501d