本文介紹您在創建集群、使用集群、管理集群等過程中可能遇到的常見問題及對應解決方案。
如何將自建的Kubernetes集群遷移到ACK上來?
ACK提供了遷移方案,支持將自建Kubernetes集群平滑遷移至ACK集群,并盡量確保遷移期間對業務無影響。具體流程,請參見Kubernetes遷移方案概述。
Alibaba Cloud Linux操作系統的集群兼容CentOS的容器鏡像嗎?
兼容。更多信息,請參見Alibaba Cloud Linux 3。
創建集群選擇了containerd容器運行時,是否可以改為Docker?
集群創建后,容器運行時不可更改。您可以創建不同類型運行時的節點池,節點池與節點池的運行時可以不同。更多信息,請參見創建節點池。
如需將節點容器運行時從Docker遷移到containerd。具體操作,請參見將節點容器運行時從Docker遷移到containerd。
v1.24及之后的集群版本不再支持將Docker作為內置容器運行時。請在v1.24及之后的集群中使用containerd作為節點池運行時。
容器運行時containerd、Docker、安全沙箱有什么區別?
容器服務 Kubernetes 版支持containerd、Docker、安全沙箱三種運行時。推薦您使用containerd運行時。Docker運行時僅支持v1.22版本及以下的集群;安全沙箱運行時僅支持v1.24版本及以下的集群。更多運行時的對比信息,請參見如何選擇Docker運行時、containerd運行時、或者安全沙箱運行時?。將ACK集群升級至v1.24及更高版本時,需將節點容器運行時從Docker遷移到containerd。具體操作,請參見將節點容器運行時從Docker遷移到containerd。
容器服務ACK通過等保三級認證了嗎?
您可以為您的集群開啟等保加固、配置基線檢查策略,基于Alibaba Cloud Linux實現等保2.0三級版以及配置等保合規的基線檢查,以便滿足以下等保合規要求:
身份鑒別
訪問控制
安全審計
入侵防范
惡意代碼防范
更多信息,請參見ACK等保加固使用說明。
誤刪了ACK專有集群的一個Master節點后,還能升級集群嗎?
不能。刪除ACK專有集群的Master節點后,無法添加Master節點,也無法進行集群的版本升級。您可以重新創建ACK專有集群。
如何訪問Master節點?
ACK專有集群:具體操作,請參見通過SSH連接ACK專有集群的Master節點。
ACK托管集群:ACK托管集群下控制面節點完全托管,您無法登錄到控制面節點的終端。如果需要登錄到控制面節點,您可以考慮使用ACK專有集群。
如何收集Kubernetes集群診斷信息?
當Kubernetes集群出現問題或者節點異常時,您可通過容器服務ACK提供的一鍵故障診斷功能,輔助您定位集群中出現的問題,詳情請參見使用集群診斷。
如果集群診斷功能無法滿足需求,您需要分別在Master節點和異常的Worker節點上收集Kubernetes集群的診斷信息時,請根據下文步驟收集Linux節點或Windows節點的診斷信息。
收集Linux節點診斷信息
不同節點所使用的操作系統有所限制,Worker節點可以使用Linux系統和Windows系統,Master節點只能使用Linux系統,以下方法同時適用于Linux系統的Master和Worker節點,該操作以Master節點為例。
登錄Kubernetes集群的Master節點,執行以下命令,下載診斷腳本。
curl -o /usr/local/bin/diagnose_k8s.sh http://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_k8s.sh
說明Linux節點的診斷腳本僅支持從華東1(杭州)地域下載。
執行以下命令,給診斷腳本添加執行權限。
chmod u+x /usr/local/bin/diagnose_k8s.sh
執行以下命令,進入指定目錄。
cd /usr/local/bin
執行以下命令,運行診斷腳本。
diagnose_k8s.sh
系統顯示類似如下,每次執行診斷腳本,產生的日志文件名稱不同,本文以diagnose_1514939155.tar.gz為例,現場以實際環境為準。
...... + echo 'please get diagnose_1514939155.tar.gz for diagnostics' please get diagnose_1514939155.tar.gz for diagnostics + echo '請上傳 diagnose_1514939155.tar.gz' 請上傳 diagnose_1514939155.tar.gz
執行如下命令,查看存放集群診斷信息的文件。
ls -ltr | grep diagnose_1514939155.tar.gz
說明將diagnose_1514939155.tar.gz替換為現場環境產生的日志文件名稱。
收集Windows節點診斷信息
Windows系統的Worker節點,請下載并運行diagnose診斷腳本,收集集群診斷信息,具體操作如下。
Windows系統僅充當Worker節點。
登錄異常Worker節點,打開運行窗口,輸入cmd,單擊確定,打開命令行工具。
執行以下命令,進入PowerShell模式。
powershell
執行以下命令,下載并運行診斷腳本。
Windows節點的診斷腳本支持從所屬地域下載,請根據集群所在地域替換命令行中的
[$Region_ID]
。Invoke-WebRequest -UseBasicParsing -Uri http://aliacs-k8s-[$Region_ID].oss-[$Region_ID].aliyuncs.com/public/pkg/windows/diagnose/diagnose.ps1 | Invoke-Expression
預期輸出如下,表示收集診斷信息成功。
INFO: Compressing diagnosis clues ... INFO: ...done INFO: Please get diagnoses_1514939155.zip for diagnostics
說明diagnoses_1514939155.zip文件會保存在腳本執行時所在目錄。
如何排查ACK集群出現的問題?
步驟一:檢查集群節點
執行以下命令,查看集群中的節點狀態,確認所有的Node節點都存在并且狀態是Ready。
執行以下命令,查看節點上的詳細信息以及節點上的事件。
替換
[$NODE_NAME]
為您的節點名稱。kubectl describe node [$NODE_NAME]
說明關于kubectl輸出的信息解析,請參見Node status。
步驟二:檢查集群組件
如果檢查完集群Node節點后仍然無法確認問題,請繼續在控制平面上檢查集群組件日志。
執行以下命令,查看kube-system命名空間下所有的組件。
kubectl get pods -n kube-system
預期輸出如下。其中,以kube-開頭的Pod都是Kubernetes集群的系統組件,coredns-開頭的是DNS插件。預期輸出表明,組件狀態正常。如果組件狀態異常,請執行下一步。
執行以下命令,查看其日志信息,定位并解決問題。
替換
[$Component_Name]
為異常組件名稱。kubectl logs -f [$Component_Name] -n kube-system
步驟三:檢查kubelet組件
執行以下命令,查看kubelet的運行狀態。
systemctl status kubelet
如果您的kubelet運行狀態不是active (running),那么您需要執行以下命令,進一步查看kubelet的日志,定位并解決問題。
journalctl -u kubelet
集群常見問題
下表羅列了一部分ACK集群常見的故障原因以及處理方法。
故障場景 | 處理方法 |
API Server組件停止或Master組件停止:
| ACK組件本身有一定高可用的功能,建議您查看組件本身是否有異常。例如,ACK集群的API Server默認使用CLB實例,您可以排查CLB狀態異常的原因。 |
API Server后端數據丟失:
| 若您創建了快照,在出現問題時,可以通過快照恢復正常的數據。若沒有創建快照,可聯系我們。問題解決后,請參見以下方法預防該問題: |
個別節點關機,即該節點上的所有Pod不再運行。 | 使用Deployment、StatefulSet、DaemonSet等工作負載創建Pod,而不是直接創建Pod,避免Pod無法調度到其他正常節點。 |
kubelet組件故障:
|
|
人為配置或其他問題。 | 若您創建了快照,在出現問題時,可以通過快照恢復正常的數據。若沒有創建快照,請聯系我們反饋問題。問題解決后,周期性地為kubelet軟件所使用的數據卷創建快照。詳細信息,請參見使用云盤存儲快照。 |
配置集群API Server的SLB訪問控制策略時需要放行哪些IP網段?
API Server的SLB的ACL控制規則必須放行以下網段。
容器服務 Kubernetes 版管控的網段100.104.0.0/16。
集群專有網絡VPC的主網段及附加網段(如有),或集群節點所在的交換機vSwitch網段。
其他需訪問API Server連接端點的客戶端出口網段。
ACK Edge集群還需放行邊緣節點出口網段。
ACK靈駿集群還需放行靈駿VPD網段。
配置訪問控制策略白名單時,務必將以上放行網段添加到白名單;配置訪問控制策略黑名單時,請勿將以上放行網段添加到黑名單。
更多信息,請參見配置集群API Server的訪問控制策略。