测试环境kubernetes升级https模式遇到的问题list

目标:测试环境kubernetes升级为https的kubernetes。

    kubernetes 网络配置由open vswitch 转变为flannel

问题1:kubernetes网络配置由open vswitch转变为flannel过程中遇到docker无法启动,报错: level=fatal msg="Error starting daemon: You specified -b & --bip, mutually exclusive options. Please specify only one"

原因:因为open vswitch 创建了ovs网桥,而启动flannel时会把这个网桥配置读入docker启动的配置中,但是该网桥已经被删除,因此会有上述报错。

方法:将/run/flannel/docker文件中DOCKER_NETWORK_OPTIONS变量中ovs网桥删除,则docker 重新启动时会重新新建默认网桥docker0。注意删除ovs网桥时要将其本身及其路由规则删除彻底。

问题2:升级为https,启动kubelet报错:Image garbage collection failed: unable to find data for container / 及level=error msg="Handler for GET /v1.24/images/json returned error: write unix /var/run/docker.sock->@: write: broken pipe"

原因:第一个错误可忽略,错误信息来自收集容器属性的cadvisor,因为kubelet启动失败,因此衍生出这个错误。第二个问题是docker的问题,docker虽然启动了但是本身还是存在问题。

方法:停止docker服务,将/var/lib/docker目录下的文件全部清除,然后将/etc/sysconfig/docker-storage中变量DOCKER_STORAGE_OPTIONS的值 

--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/vg0-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true 清除。

重启docker及kubelet。启动成功。

 问题3:kube-dns容器状态正常,但是无法解析hostname及服务名。

 原因:node节点的宿主机上dns配置存在问题,在/etc/resolve.conf文件中配置了两个nameserver。

方法:删除其中一个并重启dns的pod。

问题4:部署zookeeper集群中报错:unknown hostname。

原因:因为在zookeeper集群中调用了服务的名字,创建的zookeeper容器时,服务没创建,所以不识别。

方法:先创建服务再创建rc,此时会以环境变量的形式找到service。

疑惑:因为kubernetes平台部署了dns服务,虽然服务创建在容器之后,但是dns服务会为service创建一系列的dns记录,容器从原则上将应该能识别。因此存在矛盾,需要斟酌。

问题5:日志系统无法持久化存储,报错:

java.lang.IllegalStateException: Failed to create node environment java.nio.file.AccessDeniedException: /home/elasticsearch/elasticsearch-5.5.0/data/nodes

原因:权限问题。因为elasticsearch容器中的elasticsearch应用是以elasticsearch这个用户启动的,而其存储数据的文件都是elasticsearch用户拥有。容器中的elasticsearch用户及其组会映射为宿主机上相同uid和gid的用户和组。做持久化存储时,将存储数据的目录映射到对应的设备或者路径下,而此路径及设备,映射到宿主机上的用户没有权限写入,就会有上述报错。

方法:在宿主机上创建uid和gid与容器中elasticsearch用户相同的用户。在这里uid与gid都是1000。因此node上创建uid和gid都为1000的elasticsearch用户,并将挂载目录的所有者权限修改为elasticsearch用户。

1 hostPath:直接修改路径的权限即可

2 挂载glusterfs:需要将对应的存储路径的所有者权限修改为elasticsearch用户。

3 挂载硬盘:不需要修改,可直接使用。

其他挂载方式未实践。

猜你喜欢

转载自blog.csdn.net/feifei3851/article/details/81114418