日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

      编程问答

      k8s - 如何变更CNI网络插件IP池?

      發布時間:2023/12/4 编程问答 31 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 k8s - 如何变更CNI网络插件IP池? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

      作者:justmine
      頭條號:大數據與云原生
      微信公眾號:大數據與云原生
      創作不易,在滿足創作共用版權協議的基礎上可以轉載,但請以超鏈接形式注明出處。
      為了方便閱讀,微信公眾號已按分類排版,后續的文章將在移動端首發,想學習云原生相關知識,請關注我

      前言

      最近在另一個k8s集群中,搭建了kong網關,在配置OIDC插件時,希望使用Memcahe代替Cookie來存儲會話信息,于是把部署在同一局域網Memcahe的內網IP,比如:192.168.10.145配置給了kong,發現kong居然不能訪問這個IP,于是進入容器組,執行命令:ping 192.168.10.145,不通,what are you 弄啥呢?

      這可怎么腫么玩呢?
      突然想到,在給Kubernetes配置網絡插件Calico,初始化集群時,使用了官方推薦C類IP池,即:192.168.0.0/16,而內網IP剛好符合C類IP池,可能就導致此類IP始終不會被轉發到主機網絡,帶著這樣子的猜想,于是決定修改網絡插件的IP池。

      如何修改Calico網絡插件IP池?

      1. 安裝calicoctl

      calicoctl允許您從命令行創建、讀取、更新和刪除Calico對象。有三種方式可以安裝此工具,參考鏈接:https://docs.projectcalico.org/v3.8/getting-started/calicoctl/install。

      以二進制文件安裝到k8s master主機上

      root@001:~# cd /usr/local/bin; root@001:~# curl -O -L https://github.com/projectcalico/calicoctl/releases/download/v3.8.2/calicoctl; root@001:~# chmod +x calicoctl;

      備注:其他安裝方式,請大家下去自行研究。

      2. 配置calicoctl

      配置calicoctl連接到kubernetes API,這里使用最簡單的命令行形式,如下:

      root@001:~# DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl [命令]

      備注:其他連接配置,請參考鏈接:https://docs.projectcalico.org/v3.8/getting-started/calicoctl/configure/kdd,大家下去自行研究吧。

      設置命令別名

      root@001:~# alias k8s-calicoctl='DATASTORE_TYPE=kubernetes KUBECONFIG=~/.kube/config calicoctl'

      3. 變更IP池

      3.1 查看目前支持的IP池

      root@001:~# k8s-calicoctl get ippool -o wide; NAME CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR default-ipv4-pool 192.168.0.0/16 true Always Never false all()

      備注:看到CIDR字段值,明白了吧,這里就不贅述了。

      3.2 添加新的IP池

      root@001:~# k8s-calicoctl create -f -<<EOF apiVersion: projectcalico.org/v3 kind: IPPool metadata:name: b-ipv4-pool spec:cidr: 172.16.0.0/16ipipMode: AlwaysnatOutgoing: true EOF;

      備注:根據ipv4的指派范圍,一般分為A類、B類、C類,局域網一般使用C類IP池,為了避免和k8s沖突,決定選擇B類IP池,即:172.16.0.0/16,關于IP池詳細劃分,請大家下去自行查閱資料。

      再次查看支持的IP池
      root@001:~# k8s-calicoctl get ippool -o wide; NAME CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR default-ipv4-pool 192.168.0.0/16 true Always Never false all() b-ipv4-pool 172.16.0.0/16 true Always Never false all()

      備注:看到CIDR字段值,明白了吧,這里就不贅述了。

      3.3 禁用舊的IP池

      備份IP池到文件
      root@001:~# k8s-calicoctl get ippool -o yaml > /root/k8s-calico-pools.yaml
      編輯k8s-calico-pools.yaml
      root@001:~# vi /root/k8s-calico-pools.yaml apiVersion: projectcalico.org/v3 items: - apiVersion: projectcalico.org/v3kind: IPPoolmetadata:name: default-ipv4-ippoolspec:blockSize: 26cidr: 192.168.0.0/16ipipMode: AlwaysnatOutgoing: truedisabled: true # 添加的腳本nodeSelector: all() - apiVersion: projectcalico.org/v3kind: IPPoolmetadata:name: network-b-poolspec:blockSize: 26cidr: 172.16.0.0/16ipipMode: AlwaysnatOutgoing: truenodeSelector: all()vxlanMode: Never kind: IPPoolList metadata:resourceVersion: "44524549"

      添加disabled: true到default-ipv4-ippool,上面注釋位置。

      應用變更:
      root@001:~# k8s-calicoctl apply -f pool.yaml
      再次查看IP池:
      root@001:~# k8s-calicoctl get ippool -o wide; NAME CIDR NAT IPIPMODE VXLANMODE DISABLED SELECTOR default-ipv4-pool 192.168.0.0/16 true Always Never true all() b-ipv4-pool 172.16.0.0/16 true Always Never false all()

      4. 重啟所有容器組

      kubectl -n [命名空間] delete pods --all;

      備注:請大家下去自己完善遍歷刪除吧。

      這一步會使用新的IP池重新分配容器組IP,如下:

      root@001:~# kubectl -n kong get pods -o wide NAME READY STATUS RESTARTS AGE IP kong-kong-574957fdf7-x8ppk 1/1 Running 0 2d1h 172.16.252.126 kong-postgresql-0 1/1 Running 0 4d23h 172.16.252.100 kong-kong-controller-74fd6 2/2 Running 2 2d2h 172.16.252.124 konga-8cc9565d5-bbm9p 1/1 Running 0 4d22h 172.16.252.103

      5. 刪除舊IP池

      如果所有的Pod IP都已正常分配,但是發現滿足舊IP池的IP地址還是無法ping通,也就是無法逃逸出k8s網絡,那么請執行下面的命令吧:

      root@001:~# k8s-calicoctl delete pool default-ipv4-ippool

      最后

      如果有什么疑問和見解,歡迎評論區交流。
      如果覺得本篇有幫助的話,歡迎推薦轉發
      如果覺得本篇非常不錯的話,可以請作者吃個雞腿,創作的源泉將如滔滔江水連綿不斷,嘿嘿。

      參考鏈接

      https://docs.projectcalico.org/v3.8/getting-started/calicoctl/install
      https://docs.projectcalico.org/v3.8/getting-started/calicoctl/configure/kdd
      https://docs.projectcalico.org/v3.8/networking/changing-ip-pools

      總結

      以上是生活随笔為你收集整理的k8s - 如何变更CNI网络插件IP池?的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。