Kubernetes 中 Cloud Controller Manager 架构解析

什么是 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 工作流程包括以下步骤:

  1. 连接 Kubernetes API,授予其管理云资源的访问权限并等待命令的执行。
  2. 检测 Kubernetes 集群并过滤出与特定云提供商相关的云资源。
  3. 设置特定云提供商 API 配置并确保 Kubernetes 集群能够与其它云服务进行交互。
  4. 在 Kubernetes 集群中提供对特定云提供商的扩展 API。
  5. 使用特定云提供商 API 创建云资源对象(如云盘存储、负载均衡等)。
  6. 根据 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