内容纲要
问题背景
客户环境频繁出现etcd报错:mvcc: database space exceeded。
TCOS 3.3.0 及之前版本,etcd key space 默认大小为 2G;TCOS 3.3.0 版本之后默认值才修改为 8GB;
下面分别介绍如何TCOS 3.3.0版本如何修改etcd key spac空间配额。
详细说明
查看tcos版本
tcosctl version

查看当前etcd存储以及确认leader节点
ETCDCTL_API=3 etcdctl --cacert /srv/kubernetes/etcd-ca.pem --cert /srv/kubernetes/etcd.pem --key /srv/kubernetes/etcd-key.pem --endpoints ,, endpoint status -w table
例如:
ETCDCTL_API=3 etcdctl --cacert /srv/kubernetes/etcd-ca.pem --cert /srv/kubernetes/etcd.pem --key /srv/kubernetes/etcd-key.pem --endpoints https://172.18.131.111:2379,https://172.18.131.112:2379,https://172.18.131.113:2379 endpoint status -w table

下面步骤请对集群内每个etcd节点按顺序执行,一个etcd节点完成后做下一个节点,先操作查询出的follower节点,leader节点最后操作。
备份原etcd配置文件
cp -p /opt/kubernetes/manifests-multi/etcd.manifest /opt/kubernetes/manifests-multi/etcd.manifest.bak_$(date +%Y%m%d)
修改etcd配置文件
vim /opt/kubernetes/manifests-multi/etcd.manifest
在 spec.containers[0].command 中追加 –quota-backend-bytes=8589934592 \
例如:

保存并退出(:wq)
观察容器重启情况
Kubelet 会在约 20 秒内自动检测到配置文件变化并重启容器:
docker ps | grep etcd

节点健康检查
必须确认当前节点及其他节点均显示 healthy,再进行下一个节点操作。
ETCDCTL_API=3 etcdctl --cacert /srv/kubernetes/etcd-ca.pem --cert /srv/kubernetes/etcd.pem --key /srv/kubernetes/etcd-key.pem --endpoints ,, endpoint health
例如:
ETCDCTL_API=3 etcdctl \
--endpoints=https://172.18.131.111:2379,https://172.18.131.112:2379,https://172.18.131.113:2379 \
--cacert=/srv/kubernetes/etcd-ca.pem \
--cert=/srv/kubernetes/etcd.pem \
--key=/srv/kubernetes/etcd-key.pem \
endpoint health

其他说明
如果集群已经出现报错:mvcc: database space exceeded,请按照这个文档先处理:https://intkb.transwarp.cn/posts/9550