6. Kubernetes集群运行问题记录
January 2, 2020
kubernetes集群运行问题记录 # 6.1. 集群内部容器无法解析外部DNS # 原因:由于节点名为nodex.domain.xx,集群内部容器的/etc/resolv.conf中search域会domain.xx域,容器在解析外网域名时默认会先在外网域名后添加.domain.xx进行域名解析,而外网存在域名domain.xx,且DNS解析域名为*.domain.xx,所以会将外网域名解析至*.domain.xx对应的IP地址,最终导致容器内部无法访问外网域名。 解决办法:尽量避免集群内部节点名与外网域名冲突,可采用domain.local结尾等命名方式为节点命名。 6.2. gitlab迁移之后系统异常 # 原因:集群新建gitlab仓库各组件之间的认证文件与原有gialab不一致,导致恢复数据之后部分组件之间交互异常。 解决办法:新建gitlab之前,迁移原有gitlab中所有的secret文件。 6.3. kubernetes证书相关问题 # 原因:由于没有配置etcd证书的sans,导致集群master节点故障时,etcd无法启动,集群崩溃。 解决办法: 查看etcd日志,发现有出现关于证书的错误信息。master节点上执行openssl x509 -text -in /etc/kubernetes/pki/etcd/server.crt -noout查看证书的sans。输出证书信息为: Certificate: ... X509v3 extensions: ... X509v3 Subject Alternative Name: DNS:master1.segma.local, DNS:localhost, IP Address:192.168.1.202, IP Address:127.0.0.1, IP Address:0:0:0:0:0:0:0:1 ... 其中X509v3 Subject Alternative Name项中,DNS和IP地址不包括其他主节点地址,所以证书不完整,需要重新生成证书。 以下所有操作在所有主节点上执行。首先备份/etc/kubernetes/pki下所有文件 cp -r /etc/kubernetes/pki /etc/kubernetes/pki_backup 使用kubeadm生成证书,新建kubeadm config文件,填写其他master节点信息。内容如下: ...