Kubernets Apiserver IP 段變更后的故障處理

集群Service IP 段變更后(從 10.96.0.0/16 變為 10.17.0.0/16),導致 kubernetes.default.svc 的ClusterIP IP (10.96.0.1)和段范圍不一樣,對于這個情況,需要重建該 svc。

重建方法很簡單,刪除該 Service,集群會自動創建一個新的,ClusterIP 為 10.17.0.1 的 service。但是如果你和我一樣直接這樣操作,那大概率會遇到和我一樣的坑。

這個是 集群內的服務訪問apiserver 的主要方式。這個時候,幾乎集群內需要和 apiserver 交互的功能和服務都不能正常使用。因為它們還是要和以前的 Service IP 進行通訊。

比如 calico-node 就開始出現問題、如創建銷毀 pod的過程 要和calico-node通訊。一連串地炸了。

重建 apiserver 和 calico-node 后,發現 calico-node 起不來,發現它還是連接到老的 ClusterIP,于是修改它的環境變量指定正確的 Apiserver IP。

可以通過加入環境變量到 calico-node demonset 中,指定 IP 和端口

KUBERNETES_SERVICE_HOST:是k8s的kubernetes服務的serviceIP
KUBERNETES_SERVICE_PORT: 是k8s的kubernetes服務的端口號
KUBERNETES_SERVICE_PORT_HTTPS:是k8s的kubernetes服務的https端口號

于是編輯

kubectl edit daemonset calico-node -n kube-system
# 發現存在以下映射自 configmap 的環境變量kubernetes-services-endpoint,但是 configmap 并不存在
- configMapRef:name: kubernetes-services-endpoint
# 我就沒直接加到demonset里面,創建了對應的configmap
# 創建 ep.yaml 內容如下
apiVersion: v1
data:KUBERNETES_SERVICE_HOST: 10.1.15.121KUBERNETES_SERVICE_PORT: "6443"KUBERNETES_SERVICE_PORT_HTTPS: "6443"
kind: ConfigMap
metadata:name: kubernetes-services-endpointnamespace: kube-systemkubectl apply -f ep.yaml

提交后calico-node 能順利起來了,但是其它服務還是有問題。

上面 10.1.15.121 是我的 apiserver master 的 IP,為什么不寫集群內的 Service ClusterIP 呢?當時改過為正確的新 IP,但是還是無法啟動,因為證書里沒含有新的集群 IP,然后就寫這個了。證書當時每個 master 的 api 和負載均衡的域名都加進去了。

它正常后,pod 創建是沒問題了,但是一些核心的服務還是有問題的。因為通過 Service 拿到的新 IP 10.17.0.1 不在 apiserver 的證書里面。

查看證書 SANs 命令

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done

于是到這一步就需要重新生成集群證書并把新 IP 加進去了。

以下是基于集群是 kubeadm 安裝的前提

  1. 編輯 cm 加入

    kubectl edit cm -n kube-system kubeadm-configClusterConfiguration: |apiServer:certSANs:- 127.0.0.1- apiserver.cluster.local- 10.103.97.2- 10.1.15.121- 10.1.15.122- 10.1.15.123- 10.17.0.1
    
  2. 備份和刪除本地證書

    cp -r /etc/kubernetes /etc/kubernetes-bak
    rm -rf /etc/kubernetes/pki/{apiserver*,front-proxy-client*}
    rm -rf /etc/kubernetes/pki/etcd/{healthcheck*,peer*,server*} 
    
  3. 生成新的證書

    kubeadm init phase certs all --config kubeadmin-config.yaml
    
  4. 在每個 master node 重復 2~3 步驟

  5. 完成后,重建 apiserver 后 集群就正常了

總結

換 IP 段后,要及時生成新的 apiserver 的 Service ClusterIP 到證書 SANs 里。然后再重建 kubernetes.default.svc 。最后我把 kubernetes-services-endpoint configmap 的 IP 改為正確的 Service cluster IP 并重建了 calico-node。

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

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

相關文章

Python28-7.4 獨立成分分析ICA分離混合音頻

獨立成分分析(Independent Component Analysis,ICA)是一種統計與計算技術,主要用于信號分離,即從多種混合信號中提取出獨立的信號源。ICA在處理盲源分離(Blind Source Separation,BSS&#xff0…

運維---關于服務治理Nacos的快問快答

問題:在服務治理中,服務提供者、服務消費者和注冊中心分別承擔著怎樣的角色? 回答: 服務提供者主要負責暴露服務接口,以供其他服務進行調用。 服務消費者的職責是調用其他服務所提供的接口。 注冊中心則承擔著記錄…

【機器學習】(基礎篇一) —— 什么是機器學習

什么是機器學習 本系列博客為你從機器學習的介紹開始,使用大量的代碼實戰和驗證,最終幫助你完全掌握什么是機器學習 人工智能、機器學習和深度學習的關系 人工智能(Artificial Intelligence,AI):是一門研…

Java多線程不會?一文解決——

方法一 新建類如MyThread繼承Thread類重寫run()方法再通過new MyThread類來新建線程通過start方法啟動新線程 案例&#xff1a; class MyThread extends Thread {public MyThread(String name) {super(name);}Overridepublic void run() {for(int i0;i<10;i){System.out.…

react dangerouslySetInnerHTML將html字符串以變量方式插入頁面,點擊后出現編輯狀態

1.插入變量 出現以下編輯狀態 2.解決 給展示富文本的標簽添加css樣式 pointerEvents: none

黑馬點評,生成1000個token到redis代碼和1k個token的文件

原來的sql文件里面就可以插入1k個用戶&#xff0c; 這個代碼是從1000個User列表里面生成1k個token到redis里面 ResourceIUserService userService;Resource private StringRedisTemplate stringRedisTemplate;Testpublic void testGetAll() {List<User> users userServ…

activemq推數據給前端的方式

文章目錄 消費者程序接收消息并通過 WebSocket 將消息傳遞給前端 消費者程序接收消息并通過 WebSocket 將消息傳遞給前端 ActiveMQ 是一個開源的消息代理服務&#xff0c;可以用來實現各種消息傳遞模式&#xff0c;包括點對點和發布/訂閱模型。要將數據從 ActiveMQ 推送到前端…

那些年背過的面試題——MySQL篇

本文是技術人面試系列 MySQL 篇&#xff0c;面試中關于 MySQL 都需要了解哪些基礎&#xff1f;一文帶你詳細了解&#xff0c;歡迎收藏&#xff01; WhyMysql&#xff1f; NoSQL 數據庫四大家族 列存儲 Hbase K-V 存儲 Redis 圖像存儲 Neo4j 文檔存儲 MongoDB 云存儲 OSS …

AI大模型的智能心臟:向量數據庫的崛起

在人工智能的飛速發展中,一個關鍵技術正悄然成為AI大模型的智能心臟——向量數據庫。它不僅是數據存儲和管理的革命性工具,更是AI技術突破的核心。隨著AI大模型在各個領域的廣泛應用,向量數據庫的重要性日益凸顯。 01 技術突破:向量數據庫的內在力量 向量數據庫以其快速檢索…

第3章 配置 Vite

1 基本配置 Vite 的配置文件 vite.config.js 是基于 JavaScript 或 TypeScript 的文件&#xff0c;可以使用 ES 模塊語法進行導出。Vite 通過這個配置文件來調整各種構建和開發的選項。 1.1 創建配置文件 在項目根目錄創建 vite.config.js 文件&#xff1a; // vite.config…

RNN、LSTM與GRU循環神經網絡的深度探索與實戰

循環神經網絡RNN、LSTM、GRU 一、引言1.1 序列數據的迷宮探索者&#xff1a;循環神經網絡&#xff08;RNN&#xff09;概覽1.2 深度探索的階梯&#xff1a;LSTM與GRU的崛起1.3 撰寫本博客的目的與意義 二、循環神經網絡&#xff08;RNN&#xff09;基礎2.1 定義與原理2.1.1 RNN…

【Python】組合數據類型:序列,列表,元組,字典,集合

個人主頁&#xff1a;【&#x1f60a;個人主頁】 系列專欄&#xff1a;【??Python】 文章目錄 前言組合數據類型序列類型序列常見的操作符列表列表操作len()append()insert()remove()index()sort()reverse()count() 元組三種序列類型的區別 集合類型四種操作符集合setfrozens…

【CSS in Depth 2精譯】2.5 無單位的數值與行高

當前內容所在位置 第一章 層疊、優先級與繼承第二章 相對單位 2.1 相對單位的威力2.2 em 與 rem2.3 告別像素思維2.4 視口的相對單位2.5 無單位的數值與行高 ??2.6 自定義屬性2.7 本章小結 2.5 無單位的數值與行高 有些屬性允許使用無單位的數值&#xff08;unitless value…

【數據結構與算法】快速排序挖坑法

&#x1f493; 博客主頁&#xff1a;倔強的石頭的CSDN主頁 &#x1f4dd;Gitee主頁&#xff1a;倔強的石頭的gitee主頁 ? 文章專欄&#xff1a;《數據結構與算法》 期待您的關注 ?

前端面試題16(跨域問題)

跨域問題源于瀏覽器的同源策略&#xff08;Same-origin policy&#xff09;&#xff0c;這一策略限制了來自不同源的“寫”操作&#xff08;比如更新、刪除數據等&#xff09;&#xff0c;同時也限制了讀操作。當一個網頁嘗試請求與自身來源不同的資源時&#xff0c;瀏覽器會阻…

網絡配置文件中type

在網絡配置文件中&#xff0c;type是一個參數&#xff0c;用于指定網絡接口的類型。它指定了網絡接口所使用的協議或技術。 以下是一些常見的type參數值&#xff1a; “ethernet”&#xff1a;表示以太網接口&#xff0c;用于連接以太網設備&#xff0c;如有線網卡。 “wifi”…

Python實現ABC人工蜂群優化算法優化隨機森林回歸模型(RandomForestRegressor算法)項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后獲取。 1.項目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一種新穎的基于群智能的全局優化…

PD虛擬機不能復制Mac的文件怎么回事 PD虛擬機不能復制Mac的文件怎么辦 Parallels Desktop怎么用

PD虛擬機不僅能提供跨系統協作的服務&#xff0c;還能進行虛擬機系統與原生系統間的文件共享、文本復制、文件復制等操作&#xff0c;讓系統間的資源可以科學利用。但在實際操作過程中&#xff0c;PD虛擬機不能復制Mac的文件怎么回事&#xff1f;PD虛擬機不能復制Mac的文件怎么…

linux centos7.9 安裝mysql5.7;root設置客戶端登錄、配置并發、表名大小寫敏感等

查看centos版本 cat /etc/centos-releasecentos版本為7.9 查看是否已安裝mariadb,安裝了需要先刪除 1.查看是否安裝了mariadb和mysql,安裝了需要先刪除 mariadb是mysql的一個分支,但要安裝mysql需要刪除它 執行rpm -qa|grep mariadb,查看mariadb情況 查找到有就刪除 執行…