現象:k3s核心組件狀態均為CrashLoopBackOff
原因分析: 網絡問題,容器網絡重建失敗或 iptables 丟失,無法訪問API-server
產生原因:虛擬機掛起,重新打開會對網絡產生一定的影響
#k3s日誌報錯:
failed to "StartContainer" for "coredns" with CrashLoopBackOff
...
unable to retrieve complete list of server APIs: metrics.k8s.io/v1beta1: stale GroupVersion discovery
#pod日誌報錯
failed to create client: error while trying to communicate with apiserver:
Get "https://10.43.0.1:443/version": dial tcp 10.43.0.1:443: connect: no route to host
解決辦法:清空丟失或衝突的網絡規則 → 重啓服務讓它自動正確寫回規則
#先停止docker和k3s服務
systemctl stop docker
systemctl stop k3s.service
#清除網絡規則
iptables --flush #清空默認的filter表中的所有規則
iptables -t nat --flush #情況nat表中的所有規則;-t及table,flush—沖洗
原理:
iptables工作在內核netfilter模塊上,維護幾個表(table):
filter表,默認表,執行過濾,控制是否放行
net表,處理端口轉發,進行地址轉化
每張表中有很多鏈,鏈由多條規則組成