设计高可用的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架构


分享到:


相關文章: