K8S 是目前非常火的容器管理工具,具有弹性伸缩,服务发现等功能。
本文就部署过程中遇到的问题做记录。
操作系统:CentOS Linux release 7.6.1810 (Core)
内核:3.10.0-229.el7.x86_64
容器版本:Docker version 1.13.1, build 7f2769b/1.13.1
1、yum install docker 报错
Error: docker-ce-cli conflicts with 2:docker-1.13.1-102.git7f2769b.el7.centos.x86_64
Error: docker-ce conflicts with 2:docker-1.13.1-102.git7f2769b.el7.centos.x86_64
You could try using --skip-broken to work around the problem
** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
containerd.io-1.2.6-3.3.el7.x86_64 has installed conflicts containerd: containerd.io-1.2.6-3.3.el7.x86_64
containerd.io-1.2.6-3.3.el7.x86_64 has installed conflicts runc: containerd.io-1.2.6-3.3.el7.x86_64
原因分析:
由于虚拟机中有之前安装的 docker-CE 版本,因此 yum 安装时出现版本冲突。
解决方案:
卸载之前安装的版本。
yum list installed | grep docker
#输出
containerd.io.x86_64 1.2.6-3.3.el7 @docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:19.03.1-3.el7 @docker-ce-stable
yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 -y
2、docker 服务启动失败,由于该原因导致kubelet服务也无法启动
Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in docker (--selinux-enabled=false)
原因分析:
报错信息中有提示,要么升级内核,要么禁用 selinux。
解决方案:设置“--selinux-enables=false”。
vi /etc/sysconfig/docker
# /etc/sysconfig/docker
# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi
systemctl restart docker
3、执行kubectl get nodes 无法发现其他节点
在 node 节点执行该命令会出现以下提示,应该是正常现象。
The connection to the server localhost:8080 was refused - did you specify the right host or port?
原因分析:注意防火墙设置
解决方案:关闭防火墙。
4、在配置 flanneld 后无法启动 docker 服务
/usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/2dba6bbf247c36bffb11858d9a5c09127d5a9502af791bf4cb8dc538caccbd73/merged: invalid argument.
原因分析:overlay 网络参数错误,将配置文件里的overlay2改成overlay
vim /etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-driver overlay "
systemctl restart docker
5、K8S 在启动 pod 后显示一直处于ContainerCreating状态
执行kubectl describe pod [pod_name]会提示:
Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ... open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory
ll /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt
lrwxrwxrwx. 1 root root 27 Aug 25 23:55 /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt -> /etc/rhsm/ca/redhat-uep.pem
问题分析:
查看发现这个 crt 文件的软链接提示并不存在 ,因此需要生成这个 pem 文件。
解决方案:生成 pem 文件后可从 redhat 的仓库下载 pod-infrastructure ,最好将其 push 到本地仓库。
注意:网上的解决方案yum install *rhsm* 没有生效,安装完 pem 文件仍为空。
wget https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
##从阿里云上下载软件包
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
##生成/etc/rhsm/ca/redhat-uep.pem文件.
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest