探索 ETCD 操作:來自日常操作和故障排除經驗分享

閱讀時間約 12 分鐘

接續上一篇文章,本文再深入一點關於ETCD基本操作以及在其他文章中關於ETCD節點資料不一致情況的除錯內容分享,還沒看過上一篇文章的話,可以到以下連結:

接下來將分成下列幾項來分享,先是一些關於實作的記錄,再來分享在別篇文章看到關於節點資料不一致的處理過程,個人覺得任何經驗都是非常有價值的,除了自已不斷進步之外,透過多看不同的情境下所出現的問題與處理方式還可以讓自已的學習更為有效。

日常?

日常?

以下為本文章節:

  1. CLI工具安裝與Alias設定
  2. 基本操作
  3. 資料量不一致怎麼辦
  4. 結論

那就開始吧!!


1. CLI工具安裝與Alias設定

首先先進行操作ETCD的命令工具安裝,我們將利用這個工具進行許多ETCD的操作任務。

### 安裝ETCDCTL

[root]# ETCD_RELEASE=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest|grep tag_name | cut -d '"' -f 4)

[root]# echo $ETCD_RELEASE

v3.5.9[root]# wget https://github.com/etcd-io/etcd/releases/download/${ETCD_RELEASE}/etcd-${ETCD_RELEASE}-linux-amd64.tar.gz

[root]# tar zxvf etcd-v3.5.9-linux-amd64.tar.gz

[root]# cd etcd-v3.5.9-linux-amd64

[root]# ls -al

[root]# cp -rp etcdctl
### Alias設定 (之後就不用帶一堆參數)

[root]# vim /root/.bash_profile

alias etcdctl="ETCDCTL_API=3 /usr/local/bin/etcdctl \

--endpoints=10.107.88.15:2379,10.107.88.16:2379,10.107.88.17:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \--key=/etc/kubernetes/pki/apiserver-etcd-client.key"

[root]# source /root/.bash
  • endpoints : 指向外部3台ETCD nodes的2379port
  • cacert, cert, key : 指向ETCD建置時所產生的憑證

2. 基本操作

### member list

[root]# etcdctl member list

4fc005cb2e00078b, started, etcd03, https://10.107.88.17:2380, https://10.107.88.17:2379, false

db6cb663afc3dec9, started, etcd02, https://10.107.88.16:2380, https://10.107.88.16:2379, false

e8107c88a85d3042, started, etcd01, https://10.107.88.15:2380, https://10.107.88.15:237
### member list (以表格呈現)

[root]# etcdctl member list -w tab
raw-image
### show endpoint status (此處可看到88.16被選為Leader)

[root]# etcdctl endpoint status -w tab### show endpoint status
raw-image
### 移動leader

[root]# etcdctl endpoint --cluster=true status -w table

[root]# etcdctl --endpoints 10.107.88.16:2379 move-leader 4fc005cb2e00
### 查看所有的key (以路徑的方式呈現)

[root]# ETCDCTL_API=3 etcdctl get / --prefix --keys-on
raw-image
### 查看特定的key

[root]# etcdctl get /registry/clusterrolebindings/calico-kube-controlle

3. 資料量不一致怎麼辦

執行endpoint status之後發現DB size有差異,但3個節點狀態正常,RAFT INDEX 數量一致,可是DB size看到member之間的資料不同步。同時出現有些建立出來的Pod消失了,使用以下指令確認:

# kubectl get pod -n test

※ 大致上的處理流程為以下5個步驟:

S1. 備份正常的ETCD 節點與資料目錄

S2. 清除member/, wal/目錄下的資料(異常的ETCD)

S3. 從正常的ETCD節點,刪除異常的ETCD member

S4. 將異常節點重新加入cluster

S5. 啟動ETCD service


接下來分別演示這5個步驟的內容:

### S1. 備份ETCD 節點與資料目錄

[master]# etcdctl --endpoints=https://192.168.12.15:2379 snapshot save /backup/etcd01-snapshot.db

[master]# etcdctl --endpoints=https://192.168.12.16:2379 snapshot save /backup/etcd02-snapshot.db (異常)

[master]# etcdctl --endpoints=https://192.168.12.17:2379 snapshot save /backup/etcd03-snapshot.db (leader, 目前DB ize最大)
### S2. 清除member/, wal/目錄下的資料(異常的ETCD)

[etcd02]# mv /var/lib/etcd /var/lib/etcd.bak

[etcd02]# tar -czvf etcd-20230308bak.taz.gz /var/lib/etcd
### S3. 從正常的ETCD節點,刪除異常的ETCD (endpoints是正常的leader)

[etcd03]# etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \
--key=/etc/kubernetes/pki/apiserver-etcd-client.key \
--endpoints=10.107.88.17:2379 member list

[etcd03]# etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \
--key=/etc/kubernetes/pki/apiserver-etcd-client.key \
--endpoints=10.107.88.17:2379 member remove db6cb663af
### S4. 將異常節點重新加入cluster 

[etcd02]# mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/manifests-backup/etcd.yaml

[etcd02]# vim /etc/kubernetes/manifests-backup/etcd.yaml
- --initial-cluster=etcd03.test.example.poc=https://10.107.88.17:2380,etcd02.test.example.poc=https://10.107.88.16:2380,etcd01.test.example.poc=https://10.107.88.15:2380- --initial-cluster-state=existing

[etcd02]# etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \
--key=/etc/kubernetes/pki/apiserver-etcd-client.key \
--endpoints=10.107.88.17:2379 member add etcd02.test.example.poc --peer-urls=https://10.107.88.16:2380

Member db6cb663afc3dec9 added to cluster 71d4ff56
### S5. 啟動ETCD service (etcd02)

[etcd02]# mv /etc/kubernetes/manifests-backup/etcd.yaml /etc/kubernetes/manifests/etcd.yaml
### 確認

[master]# for count in {15..17};do ETCDCTL_API=3 etcdctl get \
--prefix --keys-only --endpoints=https://10.107.88.${count}:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \
--key=/etc/kubernetes/pki/apiserver-etcd-client.key \
| wc -l;done

[master]# for count in {15..17};do ETCDCTL_API=3 etcdctl endpoint status --endpoints=https://10.107.88.${count}:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \
--key=/etc/kubernetes/pki/apiserver-etcd-client
raw-image

4. 結論

本文說明了基本的ETCD的常用操作,實務上當完成ETCD與K8S的串接後,除非有問題,不然我想最常作的應該就是「確認狀態」、「備份與還原」這二個動作。雖然不需要太過針對ETCD進行直接的操作,但是它是一個非常重要的關鍵物件,當K8S出了什麼問題時,真正能救你的可能就是透過還原ETCD來回復整個cluster的狀態了,所以有基本的認識還是必要的。

未來有機會將繼續分享一些整理過的心得、還原Control-Plane的實際操作。再請大家繼續關注。


Reference:

14會員
40Content count
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
建立Kubernetes cluster時,ETCD 是必不可少的元件,事實上Kubernetes所有資料都會存進ETCD store中,如果要讓Kubernetes的運行效能更好,其中一種方法是在部署之前對ETCD的性能進行優化設計。
今天來記錄版本升級的做法(z版號),Kubernetes的版本更新的很快,所以版本升級是每個管理者所必須要會的必備技能,建議版本升級之前要先去確認升級路徑,不是每個版本號都能一次升級到你需要的版本。
知道如何備份與還原ETCD才能確保當環境出現重大問題時,可以將你的環境回復回來,對於系統管理者來說,等於是救人一命。(認真來說其實也是救了你的主管一命)。
本篇說明在Kubernetes平台上的Job資源類型的類型、實務、應用場景
今天來跟大家分享如何建置容器世界的一個非常重要的元件:Image Registry。
今天簡單演示如何在Kubernetes cluster利用local-path provider建構出storage class來提供應用程式進行資料的存放。
建立Kubernetes cluster時,ETCD 是必不可少的元件,事實上Kubernetes所有資料都會存進ETCD store中,如果要讓Kubernetes的運行效能更好,其中一種方法是在部署之前對ETCD的性能進行優化設計。
今天來記錄版本升級的做法(z版號),Kubernetes的版本更新的很快,所以版本升級是每個管理者所必須要會的必備技能,建議版本升級之前要先去確認升級路徑,不是每個版本號都能一次升級到你需要的版本。
知道如何備份與還原ETCD才能確保當環境出現重大問題時,可以將你的環境回復回來,對於系統管理者來說,等於是救人一命。(認真來說其實也是救了你的主管一命)。
本篇說明在Kubernetes平台上的Job資源類型的類型、實務、應用場景
今天來跟大家分享如何建置容器世界的一個非常重要的元件:Image Registry。
今天簡單演示如何在Kubernetes cluster利用local-path provider建構出storage class來提供應用程式進行資料的存放。
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
00:03👉一.心靈力量 02:19👉二.處理消極情緒和信任生命的自發性 04:40👉三.深層的意義、快樂、自然運作和自我認知
Thumbnail
「增值還是收入?了解自己的投資目標和未來計畫」 ⁡ 市值型ETF和高股息ETF那個比較好?被大家當作討論的焦點,都各有各自的擁護者。有些人認為未來發展趨勢是不斷在進步的,因此市值型的標的報酬率會相對比較可觀。也有人覺得高股息ETF似乎也不錯,因為本身就比較偏好希望有一個固定的被動收入。
每个人都是独一无二的,都有自己独特的存在价值。然而,有时候我们会迷失在无尽的琐碎和社会压力之中,忘记了自己的存在意义。本文将为你揭示如何找到自己存在的价值,并实现真正的自我价值。 第一部分:认识自我,发现潜能 1. 自我反思:通过反思自己的过去经历、兴趣爱好和价值观念,我们可以更好地了解自己,并
Thumbnail
科技和歷史是我們社會不可或缺的組成部分。 科技的進步不僅改變了生活方式,也對歷史的發展產生了深遠的影響。 探討科技、歷史和未來之間的關係,並聚焦於創作如何與科技結合,以及這種結合對未來的發展趨勢產生的影響。提供具體的範例和解析,以展示在不同領域中創作和科技結合的可能性。
Thumbnail
在現代生活中,手提包成為了女性不可或缺的配件之一,除了能夠裝載日常必備品外,還能為整體造型增添時尚感。在眾多品牌中,Chanel、LV、Longchamp等品牌一直以來都是許多人的首選,其包款款式豐富,不同的材質、設計和尺寸滿足了不同人群的需求。 Chanel經典款包包是女性最愛,不僅因為品牌名氣和
Thumbnail
DMT死藤水是近年來引起廣泛討論的一種致幻藥物,它來自於南美洲的一種植物,也被稱為「靈魂分子」。許多人聲稱DMT能夠帶來奇妙的精神體驗,甚至能夠接觸到神秘的世界。然而,DMT也帶有很高的風險,尤其是在使用過程中缺乏適當的指導和安全措施的情況下。 DMT是什麼? DMT是一種由植物製成的強效致幻劑,它
近年來,環保意識的興起和能源危機的嚴峻形勢,使得綠色能源逐漸成為人們關注的焦點。綠色能源是指那些對環境友好、可再生、且不會對生態造成破壞的能源,例如太陽能、風能、水能等。那麼,綠色能源的發展與挑戰是什麼?未來的能源之路又會如何?
Thumbnail
人生到底在追求什麼?這是一個不解的問題, 求學之後,然後是工作,婚姻,最終老去。 工作與夢想,只能做出選擇,想認識幾個老闆都沒問題,短期也好,長期也罷,只是為了求得生活? 自身的價值是否也能被注意到呢?
Thumbnail
538 這個網站,以預測美國總統大選起家,在 2014 開始進行世界盃賽事的預測,包括賽前預測以及賽事現場預測,在 2014 年世界盃後,538 網站也對五大洲各俱樂部的季賽做預測。在此篇中,將介紹 538 為 2018 世界盃所做的預測互動網頁,並介紹 538 ,所使用的國家隊及隊員的評比系統。
Thumbnail
本文接續上篇直覺式強化學習教學,著重於解釋強化學習中常見的探索和竭盡難題,以及如何利用不同的方法來進行策略函式的學習,並與策略梯度做比較。同時,介紹 A2CS 所使用的損失函式,以及應用這個損失函示於深度學習時會遇到的訓練難題。最後,總結強化學習和深度學習的未來方向,以及本系列文章所企圖達到的目標。
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
00:03👉一.心靈力量 02:19👉二.處理消極情緒和信任生命的自發性 04:40👉三.深層的意義、快樂、自然運作和自我認知
Thumbnail
「增值還是收入?了解自己的投資目標和未來計畫」 ⁡ 市值型ETF和高股息ETF那個比較好?被大家當作討論的焦點,都各有各自的擁護者。有些人認為未來發展趨勢是不斷在進步的,因此市值型的標的報酬率會相對比較可觀。也有人覺得高股息ETF似乎也不錯,因為本身就比較偏好希望有一個固定的被動收入。
每个人都是独一无二的,都有自己独特的存在价值。然而,有时候我们会迷失在无尽的琐碎和社会压力之中,忘记了自己的存在意义。本文将为你揭示如何找到自己存在的价值,并实现真正的自我价值。 第一部分:认识自我,发现潜能 1. 自我反思:通过反思自己的过去经历、兴趣爱好和价值观念,我们可以更好地了解自己,并
Thumbnail
科技和歷史是我們社會不可或缺的組成部分。 科技的進步不僅改變了生活方式,也對歷史的發展產生了深遠的影響。 探討科技、歷史和未來之間的關係,並聚焦於創作如何與科技結合,以及這種結合對未來的發展趨勢產生的影響。提供具體的範例和解析,以展示在不同領域中創作和科技結合的可能性。
Thumbnail
在現代生活中,手提包成為了女性不可或缺的配件之一,除了能夠裝載日常必備品外,還能為整體造型增添時尚感。在眾多品牌中,Chanel、LV、Longchamp等品牌一直以來都是許多人的首選,其包款款式豐富,不同的材質、設計和尺寸滿足了不同人群的需求。 Chanel經典款包包是女性最愛,不僅因為品牌名氣和
Thumbnail
DMT死藤水是近年來引起廣泛討論的一種致幻藥物,它來自於南美洲的一種植物,也被稱為「靈魂分子」。許多人聲稱DMT能夠帶來奇妙的精神體驗,甚至能夠接觸到神秘的世界。然而,DMT也帶有很高的風險,尤其是在使用過程中缺乏適當的指導和安全措施的情況下。 DMT是什麼? DMT是一種由植物製成的強效致幻劑,它
近年來,環保意識的興起和能源危機的嚴峻形勢,使得綠色能源逐漸成為人們關注的焦點。綠色能源是指那些對環境友好、可再生、且不會對生態造成破壞的能源,例如太陽能、風能、水能等。那麼,綠色能源的發展與挑戰是什麼?未來的能源之路又會如何?
Thumbnail
人生到底在追求什麼?這是一個不解的問題, 求學之後,然後是工作,婚姻,最終老去。 工作與夢想,只能做出選擇,想認識幾個老闆都沒問題,短期也好,長期也罷,只是為了求得生活? 自身的價值是否也能被注意到呢?
Thumbnail
538 這個網站,以預測美國總統大選起家,在 2014 開始進行世界盃賽事的預測,包括賽前預測以及賽事現場預測,在 2014 年世界盃後,538 網站也對五大洲各俱樂部的季賽做預測。在此篇中,將介紹 538 為 2018 世界盃所做的預測互動網頁,並介紹 538 ,所使用的國家隊及隊員的評比系統。
Thumbnail
本文接續上篇直覺式強化學習教學,著重於解釋強化學習中常見的探索和竭盡難題,以及如何利用不同的方法來進行策略函式的學習,並與策略梯度做比較。同時,介紹 A2CS 所使用的損失函式,以及應用這個損失函示於深度學習時會遇到的訓練難題。最後,總結強化學習和深度學習的未來方向,以及本系列文章所企圖達到的目標。