91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

發布時間:2021-12-10 17:02:30 來源:億速云 閱讀:160 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

下面首先要說到什么是etcd,為什么kubernetes要使用etcd ,然后實踐下二進制安裝部署etcd集群。

一、Etcd組件簡介

Etcd是一個高可用的鍵值存儲系統,快速地保存和提供對關鍵數據的訪問。它通過分布式鎖定,領導者選舉和寫入障礙實現可靠的分布式協調。etcd集群旨在實現高可用性和永久數據存儲和檢索。主要用于共享配置和服務發現,它通過Raft一致性算法處理日志復制以保證強一致性,我們可以理解它為一個高可用強一致性的服務發現存儲倉庫。Etcd主要解決的是分布式系統中數據一致性的問題,而分布式系統中的數據分為控制數據和應用數據,etcd處理的數據類型為控制數據,對于很少量的應用數據也可以進行處理。

Etcd和Zookeeper的比較:

1.zk相比部署維護復雜復雜,使用也復雜,學習成本較高。而etcd部署簡單,使用HTTP作為接口使用簡單,使用Raft算法保證強一致性讓用戶易于理解。
2.zk使用Java編寫,需要jvm才能運行,會引入大量的依賴,相對偏于中性應用。
3.zk發展緩慢。而etcd被k8s作為默認存儲系統,升級迭代迅速。
4.etcd更安全,支持SSL客戶端安全認證。

二、K8S和ETCD的關系

kubernetes官方默認使用etcd組件作為自己的高可用強一致性的服務發現存儲倉庫,在kubernetes集群中etcd主要用于配置數據共享和服務發現,把關鍵數據都存放在etcd鍵值存儲中,這使得kubernetes的整體結構變得非常簡單。在kubernetes中由于數據是隨時發生變化的,提交了新任務、增加了新的Node、Node宕機了、容器死掉了等,都會觸發狀態數據的變更。集群狀態數據變更之后,Master上的kube-scheduler和kube-controller-manager,就會重新安排工作,它們的工作安排結果也是數據。由于集群內狀態數據變化都需要及時地通知給每一個組件,剛好etcd有一個特別好的特性,可以調用它的api監聽其中的數據,一旦數據發生變化了就會收到通知。有了這個特性之后kubernetes中的每個組件只需要監聽etcd中數據,就可以知道自己應該做什么。kube-scheduler和kube-controller-manager也只需要把最新的工作安排寫入到etcd中就可以了,不用自己去逐個通知了。還有就是etcd使用raft協議實現一致性,是一個分布式鎖可以用來做選舉。如果在kubernetes中部署了多個kube-schdeuler,那么同一時刻只能有一個kube-scheduler在工作,要保證只有一個kube-schduler在工作呢就通過etcd選舉出一個leader來實現。

三、二進制部署etcd集群

官網地址:https://etcd.io/
文檔地址:https://etcd.io/docs/
項目地址:https://github.com/etcd-io/etcd
下載地址:https://github.com/etcd-io/etcd/releases

1.下載etcd二進制安裝包
本文使用最新版本3.4.3,下載適合自己硬件平臺的,本文使用:etcd-v3.4.3-linux-amd64.tar.gz

2.解壓etcd二進制安裝包
tar -zxvf etcd-v3.4.3-linux-amd64.tar.gz

3.安裝二進制程序
mkdir -p /work/etcd/{cfg,bin,dat,run,wal}
將etcd和etcdctl文件復制到/work/etcd/bin/目錄下
創建軟連接:
ln -s /work/etcd/bin/etcd /usr/local/bin/etcd
ln -s /work/etcd/bin/etcdctl /usr/local/bin/etcdctl

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

4.編寫注冊系統服務文件
vi /usr/lib/systemd/system/etcd.service   如下:

[Unit]
Description=etcd
Documentation=https://github.com/etcd-io/etcd
Conflicts=etcd.service
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
Restart=always
RestartSec=5s
LimitNOFILE=40000
TimeoutStartSec=0
WorkingDirectory=/work/etcd/run/
ExecStart=/work/etcd/bin/etcd --config-file=/work/etcd/cfg/etcd.yml

[Install]
WantedBy=multi-user.target

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

5.生成Etcd服務需要的證書
準備證書生成工具
curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o ./cfssl
curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o ./cfssljson
curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o ./cfssl-certinfo
注意:本文在模擬內網環境下二進制安裝,所以下載完成后傳到機器上的/usr/local/bin

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

創建全局證書目錄mkdir cert

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

創建認證中心(CA)
cfssl print-defaults config > ca-etcd-config.json  # 默認證書生產策略配置模板
cfssl print-defaults csr > ca-etcd-csr.json        #默認csr請求模板

修改模板自定義內容vi ca-etcd-config.json 如下:

{
    "signing": {
        "default": {
            "expiry": "87600h"
        },
        "profiles": {
            "etcd": {
                "expiry": "87600h",
                "usages": [
                    "signing",
                    "key encipherment",
                    "server auth",
                    "client auth"
                ]
            }
        }
    }
}

注意:
ca-config.json:可以定義多個 profiles,分別指定不同的過期時間、使用場景等參數;后續在簽名證書時可以指定使用某個 profile;此實例只有一個etcd。
signing:表示該證書可用于簽名其它證書;生成的 ca-etcd.pem 證書中 CA=TRUE;
server auth:表示client可以用該 CA 對server提供的證書進行驗證;
client auth:表示server可以用該CA對client提供的證書進行驗證;

修改模板自定義內容ca-etcd-csr.json  如下:

{
  "CN": "etcd",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "SH",
      "L": "BS",
      "O": "etcd",
      "OU": "System"
    }
  ]
}

生成證書(ca-etcd-key.pem)和秘鑰(ca-etcd.pem)
cfssl gencert -initca ca-etcd-csr.json | cfssljson -bare ca-etcd

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

創建etcd證書簽名請求, vi etcd-csr.json  如下:

{
  "CN": "etcd",
  "hosts": [
    "127.0.0.1",
    "192.168.100.111",
    "192.168.100.112",
    "192.168.100.113",
    "kube-cluster-master01",
    "kube-cluster-master02",
    "kube-cluster-master03"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "SH",
      "L": "BS",
      "O": "etcd",
      "OU": "System"
    }
  ]
}

生成etcd證書
cfssl gencert -ca=/work/cert/ca-etcd.pem \
-ca-key=/work/cert/ca-etcd-key.pem \
-config=/work/cert/ca-etcd-config.json \
-profile=etcd etcd-csr.json | cfssljson -bare etcd
生成的如下文件:etcd.csr   etcd-key.pem    etcd.pem 將三個證書拷貝到其他兩個節點上

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

6.編寫Etcd服務配置文件
節點1配置文件:vi /work/etcd/cfg/etcd.yml

name: kube-etcd-node01
wal-dir: /work/etcd/wal
data-dir: /work/etcd/dat/default.etcd
listen-peer-urls: https://192.168.100.111:2380
listen-client-urls: https://192.168.100.111:2379,https://127.0.0.1:2379

advertise-client-urls: https://192.168.100.111:2379
initial-advertise-peer-urls: https://192.168.100.111:2380
initial-cluster: kube-etcd-node01=https://192.168.100.111:2380,kube-etcd-node02=https://192.168.100.112:2380,kube-etcd-node03=https://192.168.100.113:2380
initial-cluster-token: kube-etcd-cluster
initial-cluster-state: new

client-transport-security:
  cert-file: /work/cert/etcd.pem
  key-file: /work/cert/etcd-key.pem
  client-cert-auth: false
  trusted-ca-file: /work/cert/ca-etcd.pem
  auto-tls: false

peer-transport-security:
  cert-file: /work/cert/etcd.pem
  key-file: /work/cert/etcd-key.pem
  client-cert-auth: false
  trusted-ca-file: /work/cert/ca-etcd.pem
  auto-tls: false

debug: false
logger: zap
log-outputs: [stderr]

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署


節點2配置文件:vim /work/etcd/cfg/etcd.yml

name: kube-etcd-node02
wal-dir: /work/etcd/wal
data-dir: /work/etcd/dat/default.etcd
listen-peer-urls: https://192.168.100.112:2380
listen-client-urls: https://192.168.100.112:2379,https://127.0.0.1:2379

advertise-client-urls: https://192.168.100.112:2379
initial-advertise-peer-urls: https://192.168.100.112:2380
initial-cluster: kube-etcd-node01=https://192.168.100.111:2380,kube-etcd-node02=https://192.168.100.112:2380,kube-etcd-node03=https://192.168.100.113:2380
initial-cluster-token: kube-etcd-cluster
initial-cluster-state: new

client-transport-security:
  cert-file: /work/cert/etcd.pem
  key-file: /work/cert/etcd-key.pem
  client-cert-auth: false
  trusted-ca-file: /work/cert/ca-etcd.pem
  auto-tls: false

peer-transport-security:
  cert-file: /work/cert/etcd.pem
  key-file: /work/cert/etcd-key.pem
  client-cert-auth: false
  trusted-ca-file: /work/cert/ca-etcd.pem
  auto-tls: false

debug: false
logger: zap
log-outputs: [stderr]

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署


節點3配置文件:vi /work/etcd/cfg/etcd.conf

name: kube-etcd-node03
wal-dir: /work/etcd/wal
data-dir: /work/etcd/dat/default.etcd
listen-peer-urls: https://192.168.100.113:2380
listen-client-urls: https://192.168.100.113:2379,https://127.0.0.1:2379

advertise-client-urls: https://192.168.100.113:2379
initial-advertise-peer-urls: https://192.168.100.113:2380
initial-cluster: kube-etcd-node01=https://192.168.100.111:2380,kube-etcd-node02=https://192.168.100.112:2380,kube-etcd-node03=https://192.168.100.113:2380
initial-cluster-token: kube-etcd-cluster
initial-cluster-state: new

client-transport-security:
  cert-file: /work/cert/etcd.pem
  key-file: /work/cert/etcd-key.pem
  client-cert-auth: false
  trusted-ca-file: /work/cert/ca-etcd.pem
  auto-tls: false

peer-transport-security:
  cert-file: /work/cert/etcd.pem
  key-file: /work/cert/etcd-key.pem
  client-cert-auth: false
  trusted-ca-file: /work/cert/ca-etcd.pem
  auto-tls: false

debug: false
logger: zap
log-outputs: [stderr]

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署


7.啟動ETCD服務
以上步驟在三個節點上都操作完成后,分別在三個節點上執行以下操作:

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署


8.驗證ETCD服務

etcdctl --cacert=/work/cert/ca-etcd.pem \
 --cert=/work/cert/etcd.pem \
 --key=/work/cert/etcd-key.pem \
 --endpoints=https://192.168.100.111:2379,https://192.168.100.112:2379,https://192.168.100.113:2379 endpoint health

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

etcdctl --write-out=table \
 --cacert=/work/cert/ca-etcd.pem \
 --cert=/work/cert/etcd.pem \
 --key=/work/cert/etcd-key.pem \
 --endpoints=https://192.168.100.111:2379,https://192.168.100.112:2379,https://192.168.100.113:2379 endpoint status

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

etcdctl --write-out=table \
 --cacert=/work/cert/ca-etcd.pem \
 --cert=/work/cert/etcd.pem \
 --key=/work/cert/etcd-key.pem \
 --endpoints=https://192.168.100.111:2379,https://192.168.100.112:2379,https://192.168.100.113:2379 member list

Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署

上述就是小編為大家分享的Kubernetes模擬生產環境搭建高可用集群中的Etcd集群是怎樣部署了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霸州市| 宣汉县| 鹿邑县| 沅陵县| 崇左市| 弥渡县| 大荔县| 仁化县| 获嘉县| 收藏| 渭源县| 望城县| 卢湾区| 延边| 齐河县| 玛多县| 河津市| 西林县| 秀山| 原平市| 浑源县| 兴化市| 理塘县| 遵义市| 普格县| 邓州市| 文成县| 全南县| 兴城市| 凉山| 重庆市| 泾阳县| 池州市| 时尚| 宝鸡市| 无棣县| 七台河市| 本溪市| 沙河市| 五莲县| 敦煌市|