設計高可用的Kubeadm架構

設計高可用的Kubeadm架構

前面給大家介紹了K8S很多基礎的知識,現在我們要進行實戰與理論的結合。之前我有發佈一個課程《Kubernetes從入門到棄坑》,裡面有提到Kubernetes的單機部署,但是在生產環境中我們不可能用單節點kubernetes。所以今天讓我們一起設計一下高可用的Kubeadm架構。

ETCD 集群

master節點組件中,ETCD是集群主數據庫,存儲所有資源對象和狀態,API 傳輸數據信息時會存入相關信息到etcd中,是實時更新的。所以要設計一個高可用的架構,我們需要etcd集群化,防止單節點的etcd故障,導致kubernetes集群整體宕機。

資源信息表

服務器主機名服務器IP節點master1172.16.2.224主節點master2172.16.2.226備用節點master3172.16.2.227備用節點

修改hosts信息

vim /etc/hosts
```
172.16.2.224 master1
172.16.2.226 master2
172.16.2.227 master3
172.16.2.225 work1
```

獲取etcd安裝包

cd
yum -y install vim wget
wget https://github.com/coreos/etcd/releases/download/v3.2.24/etcd-v3.2.24-linux-amd64.tar.gz
tar -zxvf etcd-v3.2.24-linux-amd64.tar.gz
cd etcd-v3.2.24-linux-amd64
cp etcd etcdctl /usr/local/bin/

創建etcd數據目錄

mkdir -p /var/lib/etcd

創建etcd的systemd unit文件

vim /usr/lib/systemd/system/etcd.service
```
#master1
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd --name master1 --initial-advertise-peer-urls http://172.16.2.224:2380 --listen-peer-urls http://172.16.2.224:2380 --listen-client-urls http://172.16.2.224:2379,http://127.0.0.1:2379 --advertise-client-urls http://172.16.2.224:2379 --initial-cluster-token etcd-cluster-1 --initial-cluster master1=http://172.16.2.224:2380,master2=http://172.16.2.226:2380,master3=http://172.16.2.227:2380 --initial-cluster-state new --data-dir=/var/lib/etcd

Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
```
```
# master2
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd --name master2 --initial-advertise-peer-urls http://172.16.2.226:2380 --listen-peer-urls http://172.16.2.226:2380 --listen-client-urls http://172.16.2.226:2379,http://127.0.0.1:2379 --advertise-client-urls http://172.16.2.226:2379 --initial-cluster-token etcd-cluster-1 --initial-cluster master1=http://172.16.2.224:2380,master2=http://172.16.2.226:2380,master3=http://172.16.2.227:2380 --initial-cluster-state new --data-dir=/var/lib/etcd

Restart=on-failure
RestartSec=5

LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
```
```
# master3
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd --name master3 --initial-advertise-peer-urls http://172.16.2.227:2380 --listen-peer-urls http://172.16.2.227:2380 --listen-client-urls http://172.16.2.227:2379,http://127.0.0.1:2379 --advertise-client-urls http://172.16.2.227:2379 --initial-cluster-token etcd-cluster-1 --initial-cluster master1=http://172.16.2.224:2380,master2=http://172.16.2.226:2380,master3=http://172.16.2.227:2380 --initial-cluster-state new --data-dir=/var/lib/etcd

Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
```

啟動etcd服務

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl status etcd

查看集群信息

# 查看集群中的成員
etcdctl member list
# 查看集群健康狀態
etcdctl cluster-health
設計高可用的Kubeadm架構

設計高可用的Kubeadm架構


分享到:


相關文章: