除錯 Calico 元件
虛擬私有雲 傳統基礎設施
您遇到與 Calico 相關的元件問題,例如 Pod 無法部署,或是網路連線時好時壞。
您遇到與 Calico 相關的元件問題,例如 Pod 無法部署,或是網路連線時好時壞。
Calico 運算子會根據叢集工作節點的數量來決定 calico-typha 匣的數量,且不會將受污點標記的節點納入考量。 若您的叢集中未受標記的節點少於 3 個,或是擁有一個規模龐大但未受標記節點數量極少的叢集,您可能會發現一個或多個 calico-typha Pod 卡在「Pending」狀態,這是因為該 Pod 無法找到可供執行的未受標記節點。 通常,只要至少有 calico-typha Pod 處於運作狀態,這就不會導致問題。 但是,為了獲得高可用性,建議至少有兩個 calico-typha Pod 始終運行。 作為最佳實踐,請確保有足夠的未受污染的節點來運行所有 calico-typha 建立的 podCalico操作員。
Calico 若沒有詳細的日誌記錄,網路問題往往難以診斷。 Calico 元件的預設日誌等級設定為「info」,此等級會提供基本的運作資訊,但可能缺乏足夠的細節來排除複雜的網路問題。
請將 Calico 組件的記錄等級提高至「debug」,以便蒐集有關此問題的更詳細資訊。 除錯級別的記錄會提供詳盡的輸出內容,有助於找出網路問題的根本原因。
增加 calico-typha 元件的記載層次
完成下列步驟,以增加 calico-typha 元件的記載層次。
-
執行以下指令以編輯「
calico-typha」的部署設定。若為 1.29 以及更新版本:
kubectl edit deploy calico-typha -n calico-system若為 1.28 及更早版本:
kubectl edit deploy calico-typha -n kube-system -
將
TYPHA_LOGSEVERITYSCREEN環境變數從info變更為debug。containers: - env: - name: TYPHA_LOGSEVERITYSCREEN value: debug -
儲存並關閉檔案以套用變更,然後重新啟動
calico-typha部署。
增加 calico-cni 元件的記載層次
完成下列步驟,以增加 calico-cni 元件的記載層次。
-
執行以下指令以編輯
calico-config檔案: ConfigMap。kubectl edit cm -n kube-system calico-config -
將
cni_network_config>plugins>log_level環境變數變更為debug。cni_network_config: |- { "name": "k8s-pod-network", "cniVersion": "0.3.1", "plugins": [ { "type": "calico", "log_level": "debug", -
儲存並關閉檔案。 在重新啟動
calico-nodePod 之後,變更才會生效。 -
重新啟動
calico-nodepod 以套用變更。kubectl rollout restart daemonset/calico-node -n kube-system輸出範例
daemonset.apps/calico-node restarted
增加 calico-node 元件的記載層次
完成下列步驟,以增加 calico-node 元件的記載層次。
-
執行下列指令:
若為 1.29 以及更新版本:
kubectl edit ds calico-node -n calico-system若為 1.28 及更早版本:
kubectl edit ds calico-node -n kube-system -
在
FELIX_USAGEREPORTINGENABLED名稱/值配對 (或任何FELIX_*環境變數名稱/值配對之後) 下,新增下列項目。- name: FELIX_LOGSEVERITYSCREEN value: Debug -
儲存變更。 儲存變更之後,
calico-nodedaemonset 中的所有 Pod 都會完成套用變更的漸進式更新。calico-cni也會將任何變更套用至kube-system/calico-configConfigMap中的記載層次。
增加 calico-kube-controllers 元件的記載層次
完成下列步驟,以增加 calico-kube-controllers 元件的記載層次。
-
請執行以下指令來編輯部署設定。
若為 1.29 以及更新版本:
kubectl edit deploy calico-kube-controllers -n calico-system若為 1.28 及更早版本:
kubectl edit deploy calico-kube-controllers -n kube-system -
在
DATASTORE_TYPE名稱/值配對下,新增下列項目。- name: LOG_LEVEL value: debug -
儲存變更。
calico-kube-controllersPod 會重新啟動並套用變更。
收集 Calico 日誌
-
請列出您叢集中的 Pod 和節點,並記錄出現問題的 Pod 名稱、Pod IP 位址以及發生問題的工作節點。
kubectl get pods -o wide -n kube-system -
取得發生問題之工作者節點上
calico-nodePod 的日誌。若為 1.29 以及更新版本:
kubectl logs calico-typha-aaa11111a-aaaaa -n calico-system若為 1.28 及更早版本:
kubectl logs calico-typha-aaa11111a-aaaaa -n kube-system -
取得
calico-kube-controllersPod 的日誌。若為 1.29 以及更新版本:
kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n calico-system若為 1.28 及更早版本:
kubectl logs calico-kube-controllers-11aaa11aa1-a1a1a -n kube-system -
遵循 Debugging by using kubectl exec 的指示,從工作者節點取得
/var/log/syslog、containerd.log、kubelet.log及kern.log。