对原 etcd 所在磁盘压力减少 5% 以下,风险系数很低,集群没有异常
1. 部署 Events Etcd 集群
Events 对一致性要求低于主 Etcd,建议部署 3 节点 集群。磁盘建议使用 SSD,数据目录与主 Etcd 分开。
采用静态 Pod 方式部署,kubelet 会自动管理 Etcd 进程,与 kube-apiserver 的部署方式一致。
1.1 集群部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| export EVENTS_ETCD_IP_1=10.10.10.1
export EVENTS_ETCD_NAME_1=events-etcd-1
export EVENTS_ETCD_IP_2=10.10.10.2
export EVENTS_ETCD_NAME_2=events-etcd-2
export EVENTS_ETCD_IP_3=10.10.10.3
export EVENTS_ETCD_NAME_3=events-etcd-3
export EVENTS_ETCD_IMAGE=registry.aliyuncs.com/google_containers/etcd:3.5.6-0
export EVENTS_ETCD_CLIENT_PORT=2479
export EVENTS_ETCD_PEER_PORT=2480
export EVENTS_ETCD_METRICS_PORT=2481
export EVENTS_ETCD_CLUSTER="events-etcd-1=http://${EVENTS_ETCD_IP_1}:${EVENTS_ETCD_PEER_PORT},events-etcd-2=http://${EVENTS_ETCD_IP_2}:${EVENTS_ETCD_PEER_PORT},events-etcd-3=http://${EVENTS_ETCD_IP_3}:${EVENTS_ETCD_PEER_PORT}"
|
1
| echo "etcd-servers-overrides=/events#http://${EVENTS_ETCD_IP_1}:${EVENTS_ETCD_CLIENT_PORT};http://${EVENTS_ETCD_IP_2}:${EVENTS_ETCD_CLIENT_PORT};http://${EVENTS_ETCD_IP_3}:${EVENTS_ETCD_CLIENT_PORT}"
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| export EVENTS_ETCD_IP=$EVENTS_ETCD_IP_3
export EVENTS_ETCD_NAME=$EVENTS_ETCD_NAME_3
```bash
mkdir -p /data/etcd-events
tee /etc/kubernetes/manifests/etcd-events.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
name: etcd-events
namespace: kube-system
labels:
component: etcd-events
spec:
hostNetwork: true
priorityClassName: system-cluster-critical
containers:
- name: etcd
image: ${EVENTS_ETCD_IMAGE}
command:
- etcd
- --name=${EVENTS_ETCD_NAME}
- --data-dir=/data/etcd-events
- --listen-client-urls=http://0.0.0.0:${EVENTS_ETCD_CLIENT_PORT}
- --advertise-client-urls=http://${EVENTS_ETCD_IP}:${EVENTS_ETCD_CLIENT_PORT}
- --listen-peer-urls=http://0.0.0.0:${EVENTS_ETCD_PEER_PORT}
- --initial-advertise-peer-urls=http://${EVENTS_ETCD_IP}:${EVENTS_ETCD_PEER_PORT}
- --listen-metrics-urls=http://0.0.0.0:${EVENTS_ETCD_METRICS_PORT}
- --initial-cluster=${EVENTS_ETCD_CLUSTER}
- --initial-cluster-state=new
- --initial-cluster-token=events-etcd-cluster
- --quota-backend-bytes=8589934592
volumeMounts:
- name: data
mountPath: /data/etcd-events
volumes:
- name: data
hostPath:
path: /data/etcd-events
type: DirectoryOrCreate
EOF
|
1.2 验证集群状态
需要等待几分钟
1
| kubectl -n kube-system get pod -l component=etcd-events -o wide
|
1
| ETCDCTL_API=3 etcdctl --endpoints=http://${EVENTS_ETCD_IP}:2479 member list
|
1
| curl http://${EVENTS_ETCD_IP}:2481/metrics
|
2. 配置 kube-apiserver
在全部 Master 节点修改 kube-apiserver 静态 Pod 配置:
1
| vim /etc/kubernetes/manifests/kube-apiserver.yaml
|
在 command 中新增 overrides 配置:
1
| - --etcd-servers-overrides=/events#http://
|
更新过程中,需要注意观察 kube-apiserver 的状态。
1
| kubectl -n kube-system get pod -l component=kube-apiserver
|