IBM Cloud Docs
调试 Calico 组件

调试 Calico 组件

虚拟私有云 经典基础架构

在版本中1.29后来,Calico操作员确定 calico-typha 根据集群工作程序的数量来调度 pod,并且不考虑受污染的节点。 如果你的集群中未受污染的节点少于 3 个,或者集群很大但未受污染的节点数量很少,那么你可能会有一个或多个 calico-typha 豆荚卡在 Pending 因为 pod 找不到未受污染的节点来运行。 通常,只要至少有一个 calico-typha pod 处于运行状态,就不会出现问题。 不过,为了实现高可用性,建议至少有两个 calico-typha pod 始终在运行。 作为最佳实践,确保有足够多的未受污染节点来运行所有 calico-typha 由Calico操作员。

您迂到 Calico 组件 (例如,不部署或间歇性联网问题的 pod) 的问题。

提高 Calico 组件的日志记录级别,以收集有关问题的更多信息。

增加 calico-typha 组件的日志级别

完成以下步骤以增加 calico-typha 组件的日志级别。

  1. 运行以下命令编辑 calico-typha 部署。

    适用于 1.29 及更高版本:

    kubectl edit deploy calico-typha -n calico-system
    

    对于 1.28 和更低版本:

    kubectl edit deploy calico-typha -n kube-system
    
  2. TYPHA_LOGSEVERITYSCREEN 环境变量从 info 更改为 debug

          containers:
        - env:
          - name: TYPHA_LOGSEVERITYSCREEN
            value: debug
    
  3. 保存并关闭文件以应用更改,然后重新启动 calico-typha 部署。

增加 calico-cni 组件的日志级别

完成以下步骤以增加 calico-cni 组件的日志级别。

  1. 运行以下命令编辑 calico-config ConfigMap.

    kubectl edit cm -n kube-system calico-config
    
  2. cni_network_config > plugins > log_level 环境变量更改为 debug

      cni_network_config: |-
      {
        "name": "k8s-pod-network",
        "cniVersion": "0.3.1",
        "plugins": [
          {
            "type": "calico",
            "log_level": "debug",
    
  3. 保存并关闭该文件。 直到重新启动 calico-node Pod 之后,更改才会生效。

  4. 重新启动 calico-node pod 以应用更改。

    kubectl rollout restart daemonset/calico-node -n kube-system
    

    示例输出

    daemonset.apps/calico-node restarted
    

增加 calico-node 组件的日志级别

完成以下步骤以增加 calico-node 组件的日志级别。

  1. 运行以下命令:

    适用于 1.29 及更高版本:

    kubectl edit ds calico-node -n calico-system
    

    对于 1.28 和更低版本:

    kubectl edit ds calico-node -n kube-system
    
  2. FELIX_USAGEREPORTINGENABLED“名称/值”对下 (或在任何 FELIX_* 环境变量 "名称/值" 对之后),添加以下条目。

    - name: FELIX_LOGSEVERITYSCREEN
      value: Debug
    
  3. 保存更改。 保存更改后,calico-node daemonset 中的所有 pod 都会完成应用更改的滚动更新。 calico-cni 还会将任何更改应用于 kube-system/calico-config ConfigMap中的日志记录级别。

增加 calico-kube-controllers 组件的日志级别

完成以下步骤以增加 calico-kube-controllers 组件的日志级别。

  1. 运行以下命令编辑守护进程集。

    适用于 1.29 及更高版本:

    kubectl edit ds calico-node -n calico-system
    

    对于 1.28 和更低版本:

    kubectl edit ds calico-node -n kube-system
    
  2. DATASTORE_TYPE“名称/值”对下,添加以下条目。

    - name: LOG_LEVEL
      value: debug
    
  3. 保存更改。 calico-kube-controllers pod 会重新启动并应用更改。

收集 Calico 日志

  1. 列出集群中的 pod 和节点,并生成具有问题的 pod 名称,pod IP 地址和工作程序节点的节点。

  2. 获取发生问题的工作程序节点上的 calico-node pod 的日志。

    适用于 1.29 及更高版本:

    kubectl logs calico-typha-aaa11111a-aaaaa -n calico-system
    

    对于 1.28 和更低版本:

    kubectl logs calico-typha-aaa11111a-aaaaa -n kube-system
    
  3. 获取 calico-kube-controllers pod 的日志。

    适用于 1.29 及更高版本:

    kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n calico-system
    

    对于 1.28 和更低版本:

    kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n kube-system
    
  4. 遵循 使用 kubectl exec 进行调试 的指示信息从工作程序节点获取 /var/log/syslogcontainerd.logkubelet.logkern.log