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

问题

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

原因

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

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

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

解决方案

  1. 如果 Kubernetes 集群已删除,请清理 NSX 中遗留的注册数据和清单数据。请参见使用命令行从 NSX 清单中删除 Antrea 容器集群
  2. 获取容器集群的 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 容器集群注册到 NSX 的说明,请参见向 NSX 注册 Antrea 容器集群

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

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

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

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