通过kubeamd安装kubernetes高可用集群记坑

1.使用nginx作为apiserver的loadbalancer时,nginx不能和apiserver部署在同一台机器上,否则会一直健康检查失败,一直打印如下日志:
GET https://k8s-master:6443/healthz?timeout=10s
所以不能使用nginx作为apiserver的loadbalancer

2.kubeadm 初始化master节点时使用以下命令,该命令包含了自动上传cert,日志级别更敏感(–v=6) 同时保存了启动日志到kubeadm-init.log文件中:
kubeadm init --config=kubeadm-config.yaml --upload-certs --v=6 | tee kubeadm-init.log

3.k8s不支持vfs文件驱动,会报错。解决方法:
需要 然后删掉/var/lib/docker目录

systemctl stop docker

mv /var/lib/docker /var/lib/docker.bak

修改 /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd 这一行后面加上 –storage-driver=overlay2

重启docker

systemctl start docker

这里我更换成了overlay2驱动,也可以使用devicemapper等
使用docker info 查看驱动,已经变成overlay2

4.安装网络插件时,kubectl get po -n kube-system -o wide 查看状态一直处于 ImagePullBackOff 状态,原因是拉取镜像失败,可能是服务器访问docker.io不稳定导致。
tail -f /var/log/messages 查看错误信息,发现镜像下载不下来,只好从其他服务器下载好镜像,通过docker save 和 docker load 把镜像准备好

5.dashboard的namespace是kubernetes-dashboard,然而k8s集群的是kube-system。很多教程上把dashboard的namespace当作是kube-system,应该是新旧版本不同导致的,直接后果就是dashboard起来之后报一堆错(dashboard的用户无权限访问apiserver),无法使用

6.rook-ceph启动失败
在dashboard中开业看到提示信息:
在这里插入图片描述
意思是1个节点被污染了,且不被容忍(master节点默认不允许部署pod,也就是被污染了),两个节点不满足亲和性要求。
去查看 cluster.yaml,发现默认是要部署三个节点,且不允许一台机器上部署多个节点
在这里插入图片描述
解决方案:
1.把master节点的污染标记去掉
kubectl taint nodes --all node-role.kubernetes.io/master-

2.设置容忍污点

3.修改节点数量 3 --> 2(也是我最终采取的方案)

清除并重新部署

kubectl delete namespace rook-ceph
kubectl apply -f common.yaml
kubectl apply -f operator.yaml
kubectl apply -f cluster.yaml

你可能感兴趣的:(docker)