創建ipv6 only和ipv6+ip4的k8s集群的注意事項

關鍵字 : CNI calico vxlan flannel ipv6-only ipv6+ipv4

在搭建ipv6-only或ipv6+ipv4的k8s集群時,在worker節點加入集群后,發現worker節點上的CNI啟動失敗。

以下是calico的啟動失敗情況 :

kubectl get pod -A

輸出如下 :

NAMESPACE     NAME                                      READY   STATUS                  RESTARTS      AGE
kube-system   calico-kube-controllers-79949b87d-ptq2r   1/1     Running                 0             19m
kube-system   calico-node-jbrn7                         0/1     Init:CrashLoopBackOff   7 (40s ago)   14m
kube-system   calico-node-xnwdx                         1/1     Running                 0             19m
kube-system   coredns-6766b7b6bb-wc5j5                  1/1     Running                 0             20m
kube-system   coredns-6766b7b6bb-wvg5w                  1/1     Running                 0             20m
kube-system   etcd-myserver1                            1/1     Running                 0             20m
kube-system   kube-apiserver-myserver1                  1/1     Running                 0             20m
kube-system   kube-controller-manager-myserver1         1/1     Running                 0             20m
kube-system   kube-proxy-g8gxb                          1/1     Running                 0             20m
kube-system   kube-proxy-lnddv                          1/1     Running                 0             14m
kube-system   kube-scheduler-myserver1                  1/1     Running                 0             20m

查看POD calico-node-jbrn7的詳細情況,輸出類似如下 :

kubectl describe pod -n kube-system calico-node-jbrn7

輸出如下 :

Events:Type     Reason     Age                  From               Message----     ------     ----                 ----               -------Normal   Scheduled  20m                  default-scheduler  Successfully assigned kube-system/calico-node-jbrn7 to worker1Normal   Pulled     20m                  kubelet            Container image "docker.io/calico/cni:v3.29.3" already present on machineNormal   Created    20m                  kubelet            Created container: upgrade-ipamNormal   Started    20m                  kubelet            Started container upgrade-ipamNormal   Created    6m40s (x8 over 20m)  kubelet            Created container: install-cniNormal   Started    6m40s (x8 over 20m)  kubelet            Started container install-cniNormal   Pulled     68s (x9 over 20m)    kubelet            Container image "docker.io/calico/cni:v3.29.3" already present on machineWarning  BackOff    11s (x76 over 20m)   kubelet            Back-off restarting failed container install-cni in pod calico-node-jbrn7_kube-system(a888f1ad-ec45-4207-94ac-f2953bda9d0e)

事件Events中可以看到是執行POD中的名為install-cni的容器時發生了異常.

再查看容器install-cni的日志可以看到如下內容 :

2025-05-29 09:53:04.523 [INFO][1] cni-installer/install.go 233: CNI plugin version: v3.29.3
2025-05-29 09:53:04.523 [INFO][1] cni-installer/install.go 185: /host/secondary-bin-dir is not writeable, skipping
2025-05-29 09:53:04.523 [WARNING][1] cni-installer/winutils.go 150: Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
2025-05-29 09:53:34.524 [ERROR][1] cni-installer/token_watch.go 108: Unable to create token for CNI kubeconfig error=Post "https://[fd15:4ba5:5a2b:1008:2000::1]:443/api/v1/namespaces/kube-system/serviceaccounts/calico-cni-plugin/token": dial tcp [fd15:4ba5:5a2b:1008:2000::1]:443: i/o timeout
2025-05-29 09:53:34.524 [FATAL][1] cni-installer/install.go 478: Unable to create token for CNI kubeconfig error=Post "https://[fd15:4ba5:5a2b:1008:2000::1]:443/api/v1/namespaces/kube-system/serviceaccounts/calico-cni-plugin/token": dial tcp [fd15:4ba5:5a2b:1008:2000::1]:443: i/o timeout

即:無法連接到API Server的clusterIP [fd15:4ba5:5a2b:1008:2000::1]:443
這種情況在IPV4時不會出現

原理不多說,直接給出解決辦法:

  • 修改calico的YAML文件,讓calico-node連接API SERVER的物理IPV6地址,即執行ip a所看到的IPV6地址

calico.yaml文件中新增名為kubernetes-services-endpointConfigMap對象,如下所示:

kind: ConfigMap
apiVersion: v1
metadata:name: kubernetes-services-endpointnamespace: kube-system
data:# 指定 API Server 的節點 IPKUBERNETES_SERVICE_HOST: "fd15:4ba5:5a2b:1008:192:168:186:40"KUBERNETES_SERVICE_PORT: "6443"

注意 :

  • 1.必須新創建ConfigMap對象,不能在原有的名為calico-configConfigMap對象上修改;
  • 2.新創建ConfigMap對象的名字必須是kubernetes-services-endpoint
  • 3.在IPV6單棧和IPV6為主的雙棧情況下還需要在calico.yaml中的DaemonSet設置其它相關環境變量,這里就不贅述了

下面是flannel的修改方法
修改kube-flannel.yml中的DaemonSet下的env部分,新增環境變量KUBERNETES_SERVICE_HOSTKUBERNETES_SERVICE_PORT.如下所示 :

---
apiVersion: apps/v1
kind: DaemonSet
metadata:labels:app: flannelk8s-app: flanneltier: nodename: kube-flannel-dsnamespace: kube-flannel
spec:selector:matchLabels:app: flannelk8s-app: flanneltemplate:metadata:labels:app: flannelk8s-app: flanneltier: nodespec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/osoperator: Invalues:- linuxcontainers:- args:- --ip-masq- --kube-subnet-mgrcommand:- /opt/bin/flanneldenv:- name: POD_NAMEvalueFrom:fieldRef:fieldPath: metadata.name- name: POD_NAMESPACEvalueFrom:fieldRef:fieldPath: metadata.namespace- name: EVENT_QUEUE_DEPTHvalue: "5000"- name: FLANNELD_IFACEvalue: "ens33"# 指定API Server的節點IP地址- name: KUBERNETES_SERVICE_HOSTvalue: "fd15:4ba5:5a2b:1008:192:168:186:40"- name: KUBERNETES_SERVICE_PORTvalue: "6443"image: ghcr.io/flannel-io/flannel:v0.26.7name: kube-flannel

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

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

相關文章

鴻蒙OSUniApp離線優先數據同步實戰:打造無縫銜接的鴻蒙應用體驗#三方框架 #Uniapp

UniApp離線優先數據同步實戰:打造無縫銜接的鴻蒙應用體驗 最近在開發一個面向鴻蒙生態的UniApp應用時,遇到了一個有趣的挑戰:如何在網絡不穩定的情況下保證數據的實時性和可用性。經過一番探索和實踐,我們最終實現了一套行之有效…

day 43

應用cnn對kaggle上的圖像數據集進行練習 數據集地址:Cat and Dog import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt im…

Spring Boot 如何實現定時任務

Spring Boot 如何實現定時任務 在現代的微服務架構中,定時任務是一個常見的需求。無論是數據定時同步、定時清理緩存,還是定時發送通知,Spring Boot 提供了非常強大且靈活的定時任務支持。本文將詳細介紹如何在 Spring Boot 中實現定時任務&…

“粽”覽全局:分布式系統架構與實踐深度解析(端午特別版)

第一部分:引言——技術世界的“端午”第二部分:分布式系統概述——粽子節點初探第三部分:核心技術詳解——技術“粽子”大解構 粽葉篇:通信協議糯米篇:一致性算法餡料篇:任務調度與計算包扎篇:系…

AppTrace 視角下 App 一鍵拉起:提升應用轉化率的高效方案?

官網地址:AppTrace - 專業的移動應用推廣追蹤平臺 在大規模開展 App 推廣、用戶召回、廣告投放、邀請傳播等活動時,高效的深度鏈接方案至關重要。它不僅能縮短用戶路徑,帶來無縫、流暢的跳轉體驗,更核心的是通過參數傳遞打通 web…

手拆STL

vector v e c t o r vector vector,動態數組。 先來看一下它的一些基本操作及其拆后殘渣。 1.a.push_back(x),將 x x x加入動態數組 a a a的末尾。 實現:a[cnt]x 2.a.size(),查詢動態數組 a a a中元素的數量。 實現:cn…

6.01打卡

浙大疏錦行 DAY 40 訓練和測試的規范寫法 知識點回顧: 1. 彩色和灰度圖片測試和訓練的規范寫法:封裝在函數中 2. 展平操作:除第一個維度batchsize外全部展平 3. dropout操作:訓練階段隨機丟棄神經元,測試階段eval模…

CSS專題之層疊上下文

前言 石匠敲擊石頭的第 15 次 在平常開發的時候,有時候會遇到使用 z-index 調整元素層級沒有效果的情況,究其原因還是因為對層疊上下文不太了解,看了網上很多前輩的文章,決定打算寫一篇文章來梳理一下,如果哪里寫的有問…

RabbitMQ集群與負載均衡實戰指南

文章目錄 集群架構概述仲裁隊列的使用1. 使用Spring框架代碼創建2. 使用amqp-client創建3. 使用管理平臺創建 負載均衡引入HAProxy 負載均衡:使用方法1. 修改配置文件2. 聲明隊列 test_cluster3. 發送消息 集群架構 概述 RabbitMQ支持部署多個結點,每個…

Prometheus + Grafana + Cadvisor:構建高效企業級服務監控體系

在現代軟件開發和運維領域,容器化技術的應用越來越廣泛,其中 Docker 作為最受歡迎的容器化解決方案之一,其容器的監控管理變得至關重要。本文將詳細介紹如何使用 cadvisor、Prometheus 和 Grafana 來監控 Docker 容器的狀態。 一、安裝鏡像 …

小提琴圖繪制-Graph prism

在 GraphPad Prism 中為小提琴圖添加顯著性標記(如*P<0.05)的步驟如下: 步驟1:完成統計檢驗 選擇數據表:確保數據已按分組排列(如A列=Group1,B列=Group2)。執行統計檢驗: 點擊工具欄 Analyze → Column analyses → Mann-Whitney test(非參數檢驗,適用于非正態數…

【開源工具】跳過網頁APP禁止粘貼限制:自動輸入鍵盤模擬工具

&#x1f4cc; 【黑科技】跳過網頁APP禁止粘貼限制&#xff1a;自動輸入鍵盤模擬工具 &#x1f308; 個人主頁&#xff1a;創客白澤 - CSDN博客 &#x1f525; 系列專欄&#xff1a;&#x1f40d;《Python開源項目實戰》 &#x1f4a1; 熱愛不止于代碼&#xff0c;熱情源自每一…

深度學習篇---face-recognition的優劣點

face_recognition庫是一個基于 Python 的開源人臉識別工具&#xff0c;封裝了 dlib 庫的深度學習模型&#xff0c;具有易用性高、集成度強的特點。以下從技術實現、應用場景等維度分析其優劣勢&#xff1a; 一、核心優勢 1. 極簡 API 設計&#xff0c;開發效率極高 代碼量少…

Git深入解析功能邏輯與核心業務場景流程

一、Git核心功能邏輯架構 #mermaid-svg-9tj1iCr99u6QenJM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9tj1iCr99u6QenJM .error-icon{fill:#552222;}#mermaid-svg-9tj1iCr99u6QenJM .error-text{fill:#552222;st…

【大模型】情緒對話模型項目研發

一、使用框架&#xff1a; Qwen大模型后端Open-webui前端實現使用LLamaFactory的STF微調數據集&#xff0c;vllm后端部署&#xff0c; 二、框架安裝 下載千問大模型 安裝魔塔社區庫文件 pip install modelscope Download.py 內容 from modelscope import snapshot_downlo…

Java基礎 Day26

一、網絡編程簡介 1、概念 網絡編程指在網絡通信協議下&#xff0c;不同計算機上運行的程序&#xff0c;進行數據傳輸 2、軟件架構 &#xff08;1&#xff09;CS架構&#xff08;客戶端和服務端&#xff09; 在用戶本地有一個客戶端程序&#xff0c;在遠程有一個服務器端程…

【Hot 100】45. 跳躍游戲 II

目錄 引言跳躍游戲 IIdp解題貪心解題 &#x1f64b;?♂? 作者&#xff1a;海碼007&#x1f4dc; 專欄&#xff1a;算法專欄&#x1f4a5; 標題&#xff1a;【Hot 100】45. 跳躍游戲 II?? 寄語&#xff1a;書到用時方恨少&#xff0c;事非經過不知難&#xff01; 引言 跳躍…

計算機網絡第1章(上):網絡組成與三種交換方式全解析

目錄 一、計算機網絡的概念二、計算機網絡的組成和功能2.1 計算機網絡的組成2.2 計算機網絡的功能 三、電路交換、報文交換、分組交換3.1 電路交換&#xff08;Circuit Switching&#xff09;3.2 報文交換&#xff08;Message Switching&#xff09;3.3 分組交換&#xff08;Pa…

[總結]前端性能指標分析、性能監控與分析、Lighthouse性能評分分析

前端性能分析大全 前端性能優化 LightHouse性能評分 性能指標監控分析 瀏覽器加載資源的全過程性能指標分析 性能指標 在實現性能監控前&#xff0c;先了解Web Vitals涉及的常見的性能指標 Web Vitals 是由 Google 推出的網頁用戶體驗衡量指標體系&#xff0c;旨在幫助開發者量…

Windows商店中的免費掃雷游戲應用

《掃雷》是一款經典的單人益智小游戲&#xff0c;1992年微軟發布的Windows 3.1中加入該游戲&#xff0c;從此風靡全世界。游戲目標是通過邏輯推理&#xff0c;在最短的時間內根據點擊格子出現的數字找出所有非雷格子&#xff0c;同時避免踩雷。 此Windows應用實現了經典掃雷的…