K8S的CNI之calico插件升級至3.30.2

前言

宿主機ping不通K8S的pod,一直存在丟包的現象,排查了防火墻、日志、詳細信息等沒發現什么問題,最后搜索發現,是因為把K8S的版本升級之后,舊版本的CNI插件不適配原因導致的,于是就把calico也一并升級并且記錄下來。本文K8S版本為1.32.6,calico版本為3.30.2。

一、刪除舊版本的CNI名稱空間

因為這樣可以直接刪除所有資源。

建議大家還是直接使用kubectl delete -f xxx.yaml或者是delete資源。

這里我直接使用etcdctl命令行工具刪除了。(不要輕易模仿)

# 安裝命令行工具[root@k8s-master ~]# apt install -y etcd# 過濾出我們的名稱空間的信息
[root@k8s-master ~]# ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key get / --prefix --keys-only | grep namespace# 找到calico所對應的名稱空間,進行刪除操作
[root@k8s-master ~]# ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key del /registry/namespaces/calico-apiserver[root@k8s-master ~]# ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key del /registry/namespaces/calico-system

當然當然當然,刪除pods也只需要把grep后面的信息修改為pod,然后del就行了!

二、重置coredns組件

[root@k8s-master ~]# kubectl delete po -n kube-system -l k8s-app=kube-dns

三、下載新版本的CNI插件

wget  https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/operator-crds.yamlwget https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/tigera-operator.yaml

四、清空Finalizer

1. 查看當前狀態(可選)

確認它確實在刪除中,并帶有哪些 finalizer:

kubectl get installation default -n calico-system -o yaml | grep -E 'deletionTimestamp|finalizers' -C2

2.?移除所有 finalizer

執行下面的 patch 命令,將 metadata.finalizers 數組清空:

kubectl patch installation default -n calico-system \--type=merge \-p '{"metadata":{"finalizers":[]}}'

3.?確認刪除標記被清除

再次查看資源,應該不再有 deletionTimestamp,也不再有 finalizer:

kubectl get installation default -n calico-system -o yaml | grep -E 'deletionTimestamp|finalizers' -C2

這樣 Installation/default 就會從“刪除中”回到正常狀態,Operator 也會繼續對它進行管理。

五、部署新版本的CNI插件

kubectl create -f  https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.30.2/manifests/custom-resources.yaml

這里需要注意,記得修改pod的cidr網段!(之前初始化K8S集群的時候設置的pod網段)

[root@k8s-master ~]# grep -C 2 'cidr' custom-resources.yaml - name: default-ipv4-ippoolblockSize: 26cidr: 10.100.0.0/16encapsulation: VXLANCrossSubnetnatOutgoing: Enabled

完成了之后在apply創建資源

[root@k8s-master ~]# kubectl apply -f custom-resources.yaml 

等待資源創建成功

[root@k8s-master ~]# kubectl get pod -A
NAMESPACE          NAME                                       READY   STATUS    RESTARTS       AGE
calico-apiserver   calico-apiserver-67fd59c4cb-p8qm8          1/1     Running   0              6m54s
calico-apiserver   calico-apiserver-67fd59c4cb-v6qst          1/1     Running   0              2m47s
calico-system      calico-kube-controllers-598d796659-5pnz9   1/1     Running   0              6m51s
calico-system      calico-node-4nfmc                          1/1     Running   0              6m52s
calico-system      calico-node-n8l9r                          1/1     Running   0              6m52s
calico-system      calico-node-rqcsp                          1/1     Running   0              6m52s
calico-system      calico-typha-76846cfc98-fzsq4              1/1     Running   0              6m50s
calico-system      calico-typha-76846cfc98-s9v7k              1/1     Running   0              6m52s
calico-system      csi-node-driver-l9l6m                      2/2     Running   0              6m52s
calico-system      csi-node-driver-v6f7m                      2/2     Running   0              6m52s
calico-system      csi-node-driver-xrd4m                      2/2     Running   0              6m52s
calico-system      goldmane-5f56496f4c-69p7x                  1/1     Running   0              6m52s
calico-system      whisker-85957d9c7b-ckxw7                   2/2     Running   0              6m52s
kube-system        coredns-6766b7b6bb-lqmgs                   1/1     Running   0              8s
kube-system        coredns-6766b7b6bb-qqhg8                   1/1     Running   0              72s
kube-system        etcd-k8s-master                            1/1     Running   3 (137m ago)   173m
kube-system        kube-apiserver-k8s-master                  1/1     Running   4 (135m ago)   173m
kube-system        kube-controller-manager-k8s-master         1/1     Running   3 (137m ago)   173m
kube-system        kube-proxy-7rg9h                           1/1     Running   1 (137m ago)   138m
kube-system        kube-proxy-tkpgx                           1/1     Running   1 (137m ago)   138m
kube-system        kube-proxy-vpjcw                           1/1     Running   1 (137m ago)   138m
kube-system        kube-scheduler-k8s-master                  1/1     Running   3 (137m ago)   173m
tigera-operator    tigera-operator-747864d56d-9bdfv           1/1     Running   0              7m3s

查看版本信息

[root@k8s-master ~]# kubectl -n calico-system get daemonset calico-node -o jsonpath="{.spec.template.spec.containers[0].image}";echo
docker.io/calico/node:v3.30.2

六、驗證集群與CNI可用性?

1. 創建Pod

[root@k8s-master ~]# cat test-cni.yaml 
apiVersion: v1
kind: Pod
metadata:name: xiuxian-v1
spec:containers:- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1 name: xiuxian

2. 驗證

[root@k8s-master ~]# kubectl get po -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
xiuxian-v1   1/1     Running   0          9s    10.100.169.135   k8s-node2   <none>           <none>
[root@k8s-master ~]# curl 10.100.169.135
<!DOCTYPE html>
<html><head><meta charset="utf-8"/><title>yinzhengjie apps v1</title><style>div img {width: 900px;height: 600px;margin: 0;}</style></head><body><h1 style="color: green">凡人修仙傳 v1 </h1><div><img src="1.jpg"><div></body></html>

3. ping測試

[root@k8s-master ~]# ping 10.100.169.135
PING 10.100.169.135 (10.100.169.135) 56(84) bytes of data.
64 bytes from 10.100.169.135: icmp_seq=1 ttl=63 time=0.509 ms
64 bytes from 10.100.169.135: icmp_seq=2 ttl=63 time=0.374 ms
^C
--- 10.100.169.135 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1007ms
rtt min/avg/max/mdev = 0.374/0.441/0.509/0.067 ms

通過以上排查和調整,大多數 Calico CNI 相關網絡問題都能迎刃而解。希望這篇技術博文能為你和同樣在生產環境中苦于網絡抖動的同行,提供一份全面的排障指南。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88741.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot RESTful API 設計指南:查詢接口規范與最佳實踐

Spring Boot RESTful API 設計指南&#xff1a;查詢接口規范與最佳實踐 引言 在 Spring Boot 開發中&#xff0c;查詢接口的設計直接影響著系統的可用性、可維護性和性能。本文將深入探討如何規范設計查詢接口&#xff0c;包括 GET/POST 的選擇、參數定義、校驗規則等&#xff…

ctfshow萌新題集

記錄一下前半部分是能自己寫出來的&#xff0c;后半部分是需要提示的&#xff0c;感覺自己歸來兩年仍是萌新 misc部分 知識點 base家族密文特征 Base16 (Hex) 字符集&#xff1a;0-9, A-F&#xff08;不區分大小寫&#xff09;。特征&#xff1a; 長度是 2 的倍數&#xff…

2025年語言處理、大數據與人機交互國際會議(DHCI 2025)

&#x1f310;&#x1f916;&#x1f9e0; 語言處理、大數據與人機交互&#xff1a;探索智能未來 —— DHCI 2025國際會議2025年語言處理、大數據與人機交互國際會議&#xff08;DHCI 2025&#xff09; 將于2025年在中國重慶市召開。這次盛會將匯聚全球頂尖專家、學者及行業領袖…

RIP實驗以及核心原理

RIP&#xff08;Routing Information Protocol&#xff0c;路由信息協議&#xff09;是一種內部網關協議&#xff0c;基于距離矢量算法&#xff0c;用于在自治系統內交換路由信息。RIP 核心原理距離矢量算法&#xff1a;RIP 使用跳數作為路徑選擇的唯一度量標準。每經過一個路由…

基于大數據的電力系統故障診斷技術研究

摘要本文提出了一種創新性的基于大數據技術的電力系統故障診斷方法&#xff0c;該方法通過整合先進的機器學習算法和交互式可視化技術&#xff0c;實現了對電力系統各類故障的智能化識別與深度分析。該系統采用隨機森林算法作為核心分類器&#xff0c;構建了高精度的故障分類模…

MySQL 分區功能應用專門實現全方位詳解與示例

MySQL 分區功能允許將表的數據分散存儲在不同的物理分區中,同時保持邏輯上的單一表結構。下面我將從基礎概念到高級應用,全面講解 MySQL 分區實現。 一、分區核心作用 1. 性能提升 分區剪枝(Partition Pruning):查詢時自動跳過不相關的分區,減少數據掃描量 并行處理:不…

汽車功能安全-嵌入式軟件測試(軟件合格性測試)【目的、驗證輸入、集成驗證要求】11

文章目錄1 嵌入式軟件測試&#xff08;Testing of the embedded Software&#xff09;2 測試輸入3 驗證要求和建議3.1 測試環境3.2 測試方法3.2.1 基于需求的測試3.2.2 故障注入測試3.2.3 兩種方法的區別與聯系總結3.3 測試用例導出方法4 嵌入式軟件的測試結果評價5 測試輸出物…

【webrtc】gcc當前可用碼率1:怎么決策的

【webrtc】當前最大碼率是怎么決策的1 看日志,跟蹤代碼最大碼率 是probe的上限 默認值很大 外部設置的較小,調用堆棧 無限大作為默認值 默認是無限大,所以使用預設值 【webrtc】碼率設定中的 int64_t 的無限大

UE5 C++計時器

UE5 C計時器 計時器一&#xff1a; .h文件 FTimerHandle TimerHandle_BetweenShot;//定義時間句柄 void StartFire();void EndFire();.cpp文件 #include “TimerManager.h” void ASpaceShip::StartFire() {GetWorldTimerManager().SetTimer(TimerHandle_BetweenShot, this, &a…

【hivesql 已知維度父子關系加工層級表】

這里寫自定義目錄標題1. 維度表示例1.1清單表1.2層級表2.從清單表加工層級表2.1 注意點2.2 加工方式&#xff08;join&#xff09;2.3 使用函數3.清單表字段加工3.1通過上級編碼信息加工級別信息3.2 通過級別信息&#xff0c;加工上級編碼信息4.創建維度表的一般注意點1. 維度表…

Ubuntu重裝系統后ssh連接不上(遇到 ??“Unit ssh.service not found“?? 錯誤)

重裝系統時不知道為什么SSH 服務未安裝&#xff0c;以下是解決方案&#xff1a;先檢查ssh服務安裝沒安裝 sudo systemctl status ssh # Ubuntu/Debian如果 systemctl 找不到服務&#xff0c;可能是 SSH 未安裝&#xff1a;sudo apt update sudo apt install openssh-serve…

2025社交電商新風口:推客小程序的商業邏輯與技術實現

一、推客小程序市場前景與商業價值在當今社交電商蓬勃發展的時代&#xff0c;推客小程序已成為連接商家與消費者的重要橋梁。推客模式結合了社交傳播與電商變現的雙重優勢&#xff0c;通過用戶自發分享帶來裂變式增長&#xff0c;為商家創造了全新的營銷渠道。推客小程序的核心…

Go 單元測試進階:AI 加持下的高效實踐與避坑指南

單元測試的必要性與基礎單元測試不僅是保障代碼質量的手段&#xff0c;也是優秀的設計工具和文檔形式&#xff0c;對軟件開發具有重要意義。另一種形式的文檔&#xff1a;好的單元測試是一種活文檔&#xff0c;能清晰展示代碼單元的預期用途和行為&#xff0c;有時比注釋更有用…

VScode SSH遠程連接Ubuntu(通過SSH密鑰對的方式)

我們都知道在VScode上通過SSH插件的方式可以遠程連接到虛擬機的Ubuntu系統&#xff0c;這樣開發者就可以在Windows下的Vscode編譯器下直接遠程連接Ubuntu&#xff0c;這種方式是 “用 Windows 的便捷性操作 Linux 的專業性”—— 既保留了Windows系統的易用性和VS Code的強大功…

學術繪圖(各種神經網絡)

23種神經網絡設計&可視化工具匯總 下面做簡要羅列&#xff0c;具體請看相關鏈接 1.draw_convnet Github: https://github.com/gwding/draw_convnet? star 數量&#xff1a;1.7k? 這個工具最后一次更新是2018年的時候&#xff0c;一個Python腳本來繪制卷積神經網絡的工…

Redis的高可用性與集群架構

Redis的高可用性與集群架構 引言&#xff1a;解釋高可用性的重要性及Redis如何實現主從復制&#xff08;Replication&#xff09; 原理&#xff1a;異步復制&#xff0c;主從數據同步配置方法優缺點分析 哨兵模式&#xff08;Sentinel&#xff09; 功能&#xff1a;監控、通知、…

TCP的連接

TCP 三次握手過程是怎樣的&#xff1f;TCP 是面向連接的協議&#xff0c;所以使用 TCP 前必須先建立連接&#xff0c;而建立連接是通過三次握手來進行的。三次握手的過程如下圖&#xff1a;一開始&#xff0c;客戶端和服務端都處于 CLOSE 狀態。先是服務端主動監聽某個端口&…

Excel的學習

一、熟悉界面 1.功能區 點擊“視圖”,點擊凍結窗格,選擇目標行 2.表格區 3.自定義功能區 在上面的空白編輯欄處,右鍵選擇自定義功能區 4.數據輸入規范 (1)格式不統一(日期格式不規范,姓名亂加空格,亂合并單元格) 姓名對齊:右鍵選擇編輯單元格格式,選擇對齊,…

論文閱讀:HybridTrack: A Hybrid Approach for Robust Multi-Object Tracking

論文地址:2501.01275v2 代碼地址:GitHub - leandro-svg/HybridTrack: [RA-L25/ICRA26] HybridTrack: A Hybrid Approach for Robust Multi-Object Tracking 前言 多目標跟蹤旨在在幀間檢測和關聯所有所需的目標。大多數方法通過明確或隱式地利用強大的線索(即空間和外觀信…