Helm部署Apisix后ETCD一直无法启动
日志报错 etcdserver: member not found
查看错误日志: kubectl -n apisix logs apisix-etcd-0 -f=true
错误分析
官网helm使用的是bitnami部署etcd集群,其中有个Bug,etcd的Pod奔溃后自启动无法加入集群。要么安装时配置集群节点数为1 etcd.replicaCount=1,或者配置外部etcd后自行进行维护etcd.host=xxxxxxx
参考链接:
bitnami\etcd 集群pod奔溃后自启动无法加入集群: https://github.com/apache/apisix-helm-chart/issues/290
# 卸载apisix
helm uninstall --namespace apisix apisix
# 删除所有pvc
kubectl -n apisix delete pvc data-apisix-etcd-0 data-apisix-etcd-1 data-apisix-etcd-2
# 重装Apisix,因为ETCD是中的副本数关联较多
helm install --set gateway.tls.enabled=true --set gateway.http.containerPort=80 --set gateway.tls.containerPort=443 --set global.storageClass=nfs-local-k8s-0 --set admin.allow.ipList={0.0.0.0/0} --create-namespace --namespace apisix apisix apisix/apisix
ETCD运行一段时间后就会自行崩溃
参考资料:
https://halo.ljdzsk.com/archives/etcd-zhong-de-keng
https://github.com/bitnami/charts/blob/main/bitnami/etcd/README.md
问题描述
ETCD的日常运行会保留键空间历史记录,随着使用不断占用磁盘空间,ETCD默认设置日志占用磁盘2G。如果超过这个设定值会触发集群级警告,这将使得系统进入有限操作的维护模式。此时只能进行读取操作,如果继续不进行管理ETCD会自行崩溃。
解决方法
- 手动清理
- 自动清理:部署时添加自动清理参数
--set etcd.autoCompactionRetention=5m,保留5小时内键空间历史