【2】搭建k8s集群系列(二進制)之安裝etcd數據庫集群

一、etcd服務架構

Etcd 是一個分布式鍵值存儲系統,Kubernetes 使用 Etcd 進行數據存儲,所以先
準備一個 Etcd 數據庫,為解決 Etcd 單點故障,應采用集群方式部署,這里使用 3
臺組建集群,可容忍 1 臺機器故障,當然,你也可以使用 5 臺組建集群,可容忍 2
臺機器故障。

節點名稱IP
etcd-1192.168.1.20
etcd-2192.168.1.21
etcd-3192.168.1.22

注:為了節省機器,這里與 K8s 節點機器復用。也可以獨立于 k8s 集群之外部署, 只要 apiserver 能連接到就行。

通信架構(均采用https通信):
在這里插入圖片描述
所以這里需要生成證書。

二、 準備 cfssl 證書生成工具

cfssl 是一個開源的證書管理工具,使用 json 文件生成證書,相比 openssl 更方便
使用。
找任意一臺服務器操作,這里用 Master 節點。

# 下載cfssl工具(二進制可執行文件)
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
# 授可執行權限
chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
# 移動到bin目錄,方便直接在命令行使用該工具命令
mv cfssl_linux-amd64 /usr/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo

2.1 自簽證書頒發機構(CA)-- 根證書

  1. 創建工作目錄:
mkdir -p ~/TLS/{etcd,k8s}
cd ~/TLS/etcd
  1. 自簽 CA(配置文件):
# 重定向寫入ca配置文件
cat > ca-config.json << EOF
{
"signing": {
"default": {
"expiry": "87600h"
},
"profiles": {
"www": {
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
EOF# 重定向寫入ca-csr文件
cat > ca-csr.json << EOF
{
"CN": "etcd CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "Beijing",
"ST": "Beijing"
}
]
}
EOF
  1. 生成證書:
cfssl gencert -initca ca-csr.json | cfssljson -bare ca -

會生成 ca.pem 和 ca-key.pem 文件。

2.2 使用自簽 CA (根證書)簽發 Etcd的HTTPS 證書

  1. 創建證書申請文件:
# host部分是添加可信任ip,按實際情況添加
cat > server-csr.json << EOF
{
"CN": "etcd",
"hosts": [
"192.168.1.20",
"192.168.1.21",
"192.168.1.22"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF

注:上述文件 hosts 字段中 IP 為所有 etcd 節點的集群內部通信 IP,一個都不能少! 為了方便后期擴容可以多寫幾個預留的
IP。

  1. 生成證書:
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server

會生成 server.pem 和 server-key.pem 文件

三、 從 Github 下載二進制文件

下載地址:https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-
v3.4.9-linux-amd64.tar.gz
執行下載(版本可以按需選擇):

wget https://github.com/etcd-io/etcd/releases/download/v3.4.9/etcd-v3.4.9-linux-amd64.tar.gz

四、 部署 Etcd 集群

以下在節點 1 上操作,為簡化操作,待會將節點 1 生成的所有文件拷貝到節點 2 和 節點 3

4.1 創建工作目錄并解壓二進制包

mkdir /opt/etcd/{bin,cfg,ssl} -p
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/

4.2 創建 etcd 配置文件

# ip根據自己機器情況修改
cat > /opt/etcd/cfg/etcd.conf << EOF
#[Member]
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.1.20:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.1.20:2379"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.20:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.20:2379"
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.1.20:2380,etcd-2=https://
192.168.1.21:2380,etcd-3=https://192.168.1.22:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

ETCD_NAME:節點名稱,集群中唯一
ETCD_DATA_DIR:數據目錄
ETCD_LISTEN_PEER_URLS:集群通信監聽地址
ETCD_LISTEN_CLIENT_URLS:客戶端訪問監聽地址
ETCD_INITIAL_ADVERTISE_PEERURLS:集群通告地址
ETCD_ADVERTISE_CLIENT_URLS:客戶端通告地址
ETCD_INITIAL_CLUSTER:集群節點地址
ETCD_INITIALCLUSTER_TOKEN:集群 Token
ETCD_INITIALCLUSTER_STATE:加入集群的當前狀態,new 是新集群,existing 表示加入已有集群

4.3. systemd 管理 etcd

# 寫入etcd.service文件
cat > /usr/lib/systemd/system/etcd.service << EOF
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/opt/etcd/cfg/etcd.conf
ExecStart=/opt/etcd/bin/etcd \
--cert-file=/opt/etcd/ssl/server.pem \
--key-file=/opt/etcd/ssl/server-key.pem \
--peer-cert-file=/opt/etcd/ssl/server.pem \
--peer-key-file=/opt/etcd/ssl/server-key.pem \
--trusted-ca-file=/opt/etcd/ssl/ca.pem \
--peer-trusted-ca-file=/opt/etcd/ssl/ca.pem \
--logger=zap
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF

4.4. 拷貝剛才生成的證書

把剛才生成的證書拷貝到配置文件中的路徑:

cp ~/TLS/etcd/ca*pem ~/TLS/etcd/server*pem /opt/etcd/ssl/

4.5. 啟動并設置開機啟動

systemctl daemon-reload
systemctl start etcd
systemctl enable etcd

4.6. 將上面節點 1 所有生成的文件拷貝到節點 2 和節點 3

scp -r /opt/etcd/ root@192.168.1.21:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.1.21:/usr/lib/systemd/system/
scp -r /opt/etcd/ root@192.168.1.22:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.1.22:/usr/lib/systemd/system/

然后在節點 2 和節點 3 分別修改 etcd.conf 配置文件中的節點名稱和當前服務器IP:

vi /opt/etcd/cfg/etcd.conf
#[Member]
ETCD_NAME="etcd-1" # 修改此處,節點 2 改為 etcd-2,節點 3 改為 etcd-3
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.31.71:2380" # 修改此處為當前服務器 IP
ETCD_LISTEN_CLIENT_URLS="https://192.168.31.71:2379" # 修改此處為當前服務器 IP
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.31.71:2380" # 修改此處為當前服務器
IP
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.31.71:2379" # 修改此處為當前服務器 IP
ETCD_INITIAL_CLUSTER="etcd-1=https://192.168.31.71:2380,etcd-2=https://192.168.31.72:2380,etcd-3=https://192.168.31.73:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

最后啟動 etcd 并設置開機啟動,同上。

4.7 查看集群狀態

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.1.20:2379,https://192.168.1.21:2379,https://192.168.1.22:2379" endpoint health --write-out=table

輸出:

+----------------------------+--------+-------------+-------+
| ENDPOINT | HEALTH | TOOK | ERROR |
+----------------------------+--------+-------------+-------+
| https://192.168.1.20:2379 | true | 10.301506ms | |
| https://192.168.1.21:2379 | true | 12.87467ms | |
| https://192.168.1.22:2379 | true | 13.225954ms | |
+----------------------------+--------+-------------+-------+

. 如果輸出上面信息,就說明集群部署成功。
. 如果有問題第一步先看日志:/var/log/message 或 journalctl -u etcd

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

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

相關文章

fastGPT—前端開發獲取api密鑰調用機器人對話接口(HTML實現)

官網文檔鏈接&#xff1a;OpenAPI 介紹 | FastGPT 首先按照文檔說明創建api密鑰 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

cpp自學 day19(多態)

一、基本概念 同一操作作用于不同的對象&#xff0c;產生不同的執行結果 &#x1f449; 就像「按F1鍵」&#xff1a;在Word彈出幫助文檔&#xff0c;在PS彈出畫筆設置&#xff0c;?同一個按鍵觸發不同功能 &#xff08;1&#xff09;多態類型 類型實現方式綁定時機?靜態多態…

Java 大視界 -- Java 大數據在航天遙測數據分析中的技術突破與應用(177)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

人臉考勤管理一體化系統(人臉識別系統,簽到打卡)

人臉考勤管理一體化系統 項目介紹 本項目是基于Flask、SQLAlchemy、face_recognition庫的人臉考勤管理一體化系統。 系統通過人臉識別技術實現員工考勤打卡、人臉信息采集、人臉模型訓練等功能。 項目采用前后端分離的技術框架&#xff0c;基于Flask輕量級Web框架搭建后端服務…

單調棧學習C++

目錄 一&#xff0c;每日溫度 二&#xff0c;下一個更大的元素I 三&#xff0c;下一個更大的元素II 四&#xff0c;接雨水 小結&#xff1a; 單調棧是一種特殊的棧結構&#xff0c;里面的元素按照單調遞增或者遞減的順序排列。常用于解決元素左邊或者右邊比它大或者小的問…

網絡釣魚攻擊的威脅和執法部門的作用(第一部分)

在當今的數字世界中&#xff0c;網絡犯罪分子不斷開發新技術來利用個人、企業和政府機構。 最普遍和最具破壞性的網絡犯罪形式之一是網絡釣魚——一種社會工程手段&#xff0c;用于欺騙人們提供敏感信息&#xff0c;例如登錄憑據、財務數據和個人詳細信息。 隨著網絡釣魚攻擊…

左值與右值,空間與數據

左值是空間&#xff0c;右值是數據 編程總是對“數據”&#xff0c;對"存放數據的空間"操作 a返回一個當前的數據&#xff0c;存放到一個臨時空間中&#xff0c;自身的空間中的數據再進行運算 a直接對自身空間中的數據進行運算 其余知識&#xff1a; 1.變量名的意…

無人機飛行術語科普!

一、基礎操作類 1. 炸機 指無人機意外墜毀或嚴重損壞&#xff08;如撞樹、撞樓、失控摔機等&#xff09;。 例句&#xff1a;“今天風太大&#xff0c;差點炸機&#xff01;” 2. 一鍵放生 調侃某些情況下無人機失控飛丟&#xff0c;無法找回&#xff08;源自某些品牌…

模擬算法(一):一維數組模擬

目錄 模擬的概念 例1&#xff1a;開關燈 算法思路&#xff1a; 代碼如下&#xff1a; 輸入輸出&#xff1a; 例2&#xff1a;序列操作和查詢 算法思路&#xff1a; 代碼如下&#xff1a; 輸入輸出&#xff1a; 例3&#xff1a;數組折疊 算法思路&#xff1a; 代碼如…

MySQL 基礎入門

寫在前面 關于MySQL的下載安裝和其圖形化軟件Navicat的下載安裝,網上已經有了很多的教程,這里就不再贅述了,本文主要是介紹了關于MySQL數據庫的基礎知識。 MySQL數據庫 MySQL數據庫基礎 MySQL數據庫概念 MySQL 數據庫&#xff1a; 是一個關系型數據庫管理系統 。 支持SQL語…

Qt中的多種輸出方式,信號與槽的基本使用

完成Hello World可以通過很多控件實現 如采用編輯框來完成hello world 編輯框分為單行編輯框----QLineEdit 和多行編輯框---QTextEdit 采用單行編輯框&#xff0c;創建項目后&#xff0c;展開forms文件夾&#xff0c;雙擊ui文件進入 qt designer設計頁面 找到line edit 拖到頁…

英語表達年代和世紀

英語表達年代和世紀 1. Century (世紀)1.1. Start and end of centuries 2. Decade (年代)2.1. Usage 3. 英語表達年代和世紀4. HomeworkReferences XXX0 年代指 XXX0 年 - XXX9 年的連續 10 年&#xff0c;例如 1760 年代指 1760 年至 1769 年這連續 10 年。 XX 世紀 X0 年代…

MySQL數據庫管理5

23.事務 1&#xff09;事務&#xff1a;可以認為是做一件事情 需要多個SQL 要么同時成功 要么同時失敗 需求&#xff1a;銀行轉賬update 你的賬戶 把你的錢減少update 你朋友的賬戶 把他的錢增多?這兩個SQL不能只成功一個 要么都成功 要么都失敗那么 我們就需要用到事務了 它…

閉包和裝飾器

什么是閉包 閉包&#xff08;Closure&#xff09;是 Python 中一個非常重要的概念&#xff0c;它是一種特殊的函數對象&#xff0c;通常用于封裝和延遲計算某些值。以下是閉包的詳細定義和解釋&#xff1a; 1.閉包的定義 閉包是指一個函數對象&#xff0c;它不僅包含函數的代…

notepad++8.6.4安裝及細節

notepad8.6.4下載安裝&#xff08;附安裝包&#xff09; 一、安裝包下載1.1方法一&#xff1a;官網下載&#xff08;點擊跳轉&#xff09;1.2方法二&#xff1a;網盤鏈接分享8.6.4版本 二、安裝過程細節2.1這里的組件建議全部勾選。點擊“下一步”。2.2 勾選①&#xff1a;可以…

COZE通關指南:工作流與插件開發

前言 本文隸屬于專欄《AI Agent 通關指南》,該專欄為筆者原創,引用請注明來源,不足和錯誤之處請在評論區幫忙指出,謝謝! 本專欄目錄結構和參考文獻請見《AI Agent 通關指南》 正文 1. 平臺基礎介紹 ?? 1.1 COZE平臺概述 COZE平臺(coze.cn)是一個強大的AI應用開發平臺…

【Block總結】ENLTransformerBlock,高效非局部變換器塊|即插即用

1. 論文信息 標題: Perspective+ Unet: Enhancing Segmentation with Bi-Path Fusion and Efficient Non-Local Attention for Superior Receptive Fields論文地址: arXiv:2406.14052 2. 創新點 雙路徑編碼策略: 在編碼器階段引入雙路徑策略,結合傳統卷積和空洞卷積的結果,平…

【爬蟲】網易云音樂評論數據爬取

文章目錄 &#x1f356; 前言&#x1f3b6;一、抓取要求?二、代碼展示&#x1f3c0;三、運行結果&#x1f3c6;四、知識點提示 &#x1f356; 前言 【爬蟲】網易云音樂歌詞/評論數據爬取 &#x1f3b6;一、抓取要求 描述: 輸入歌曲的id&#xff0c;獲取對應歌曲的用戶評論信…

C++使用Qt Charts創建數據可視化圖表

Qt Charts 是一個強大的工具&#xff0c;用于創建直觀的數據可視化圖表。本文將通過一個具體的示例&#xff0c;展示如何使用 Qt Charts 創建一個包含多條數據序列、自定義坐標軸和隨機數據生成的圖表。 示例代碼解析 以下是一個完整的示例代碼&#xff0c;展示如何使用 Qt Ch…

TCP/IP五層協議

目錄 1. 五層模型結構 2. 各層核心功能與協議 (1) 應用層&#xff08;Application Layer&#xff09; (2) 傳輸層&#xff08;Transport Layer&#xff09; (3) 網絡層&#xff08;Network Layer&#xff09; (4) 數據鏈路層&#xff08;Data Link Layer&#xff09; (5…