如果 Antrea Kubernetes 集群的状态为“已关闭”,请按照本文档中的步骤确定此问题的原因并从中恢复,或者收集相应支持包。

问题

集群控制平面节点已关闭。Antrea Kubernetes 集群与中央控制平面 (CCP) 断开连接。

原因

NSX Manager UI 中,导航到系统 > Fabric > 节点 > 容器集群 > Antrea。如有需要,可以在 Antrea 页面上使用外部 ID 字段筛选集群列表。

单击问题集群的 状态列。如果所有组件均已关闭,则可能的原因如下:
  • Kubernetes 集群已删除。
  • CCP 存在网络连接问题。
  • 适配器由于某种原因崩溃或被删除。
  • 适配器的客户端证书不正确。
  • 适配器的版本与 CCP 不兼容。

如果只有中央控制平面适配器关闭,则可能是因为 CCP 适配器崩溃。

解决方案

  1. 如果 Kubernetes 集群已删除,请清理 NSX 中遗留的注册数据和清单数据。请参见从 NSX 中清理 Antrea 数据
  2. 获取 Kubernetes 集群的 kubectl 和 kubeconfig 访问权限。使用 kubectl 检索正在运行 interworking Pod 的节点名称。启动与节点的 SSH 会话,并使用 curl 或 nc 命令连接到端口 1234 和 1235 上的每个 NSX Manager IP。如果无法建立连接,则原因是 CCP 存在网络连接问题。
    curl 命令示例:

    确保将 NSX-Manager-IP 替换为环境中 NSX Manager 的 IP 地址。

    curl -v NSX-Manager-IP:1235
    
    Trying NSX-Manager-IP... 
    Connected to NSX-Manager-IP (NSX-Manager-IP) port 1235 (#0) 
    ... 
    Empty reply from server 
    Connection #0 to host NSX-Manager-IP left intact 
    curl: (52) Empty reply from server

    nc 命令示例:

    nc -v NSX-Manager-IP 1235 < /dev/null
    
    Ncat: Version 7.50 (https://nmap.org/ncat)
    Ncat: Connected to NSX-Manager-IP:1235.
    Ncat: 0 bytes sent, 0 bytes received in 0.37 seconds.
  3. 使用 kubectl 检查 vmware-system-antrea 命名空间中 interworking Pod 的所有容器是否均已启动。
    如果有任何容器关闭,请使用 kubectl 获取崩溃容器的日志并查看相应错误消息。此步骤可帮助您识别由以下任一原因造成的故障:
    • 适配器由于某种原因崩溃或被删除。
    • CCP 适配器崩溃。
    用于获取 interworking Pod 的 kubectl 命令示例:
    kubectl get pod -o wide -l app=antrea-interworking -n vmware-system-antrea

    记下 interworking Pod 名称。

    用于获取 interworking Pod 详细状态的 kubectl 命令示例:

    确保将 pod-name 替换为实际的 Pod 名称。

    kubectl get pod -o yaml pod-name -n vmware-system-antrea

    用于获取容器日志的 kubectl 命令示例:

    确保将 pod-name 替换为实际的 Pod 名称。

    kubectl logs pod-name -c mp-adapter -n vmware-system-antrea > mp-adapter.log
    kubectl logs pod-name -c ccp-adapter -n vmware-system-antrea > ccp-adapter.log
    kubectl logs pod-name -c tn-proxy -n vmware-system-antrea > tn-proxy.log
    kubectl logs pod-name -c election-runner -n vmware-system-antrea > election-runner.log

    如果缺少 vmware-system-antrea 命名空间或缺少 interworking Pod,则可能是在未运行注销步骤的情况下从 Kubernetes 集群中删除了适配器。您可以清理系统中遗留的注册数据和清单,然后重新注册 Kubernetes 集群。重新注册集群后,集群 ID 将有所不同。如果对集群应用了任何 Antrea 策略,则必须在重新注册集群后再次应用该策略。

    有关清理遗留注册数据的说明,请参见从 NSX 中清理 Antrea 数据

    有关将 Antrea Kubernetes 集群注册到 NSX 的说明,请参见向 NSX 注册 Antrea Kubernetes 集群

  4. 使用 kubectl 从 interworking Pod 中获取 nsx-proxy 容器日志,然后查看相应错误消息。
    此步骤可帮助您识别由以下任一原因造成的故障:
    • 适配器的客户端证书不正确。
    • 适配器的版本与 CCP 不兼容。

    相关命令示例,请参见步骤 3。

  5. 如果管理平面适配器已启动,请使用 NSX 中的支持包功能收集 Antrea Kubernetes 集群的日志文件。

    有关详细信息,请参见为 Antrea Kubernetes 集群收集支持包