k8s(三) -- 集群重启, Node 节点如何重新加入集群
“ 拥抱 "微服务+云原生", 基于容器的微服务架构会逐渐成为开发应用系统的主流, 而 Kubernetes 将是运行微服务应用的理想平台”
本来是没有安排这一篇文章的, 这是昨天搭建好集群后就关机了, 今天开机重启了所有虚拟机后发现无法部署 Pod, 一直处于
Pending
状态(Error:FailedScheduling...
), Node 节点也处于Not Ready
状态, 重新加入 Master 还抛错, 所以才有了这一片文章, 希望能让大家少挑一波坑.
1. 常见定位/分析方法
命令携带
--v=5
打印执行日志
[root@node01 ~]# kubeadm join 192.168.3.26:6443 --token 4ggbj1.8lc9alo71fwsor2o --discovery-token-ca-cert-hash sha256:0e524805dd05d25709ad7f49035e935387f034706cf009c0c6650f2a72baf62f --v=5
...
I0206 20:07:58.994775 23055 checks.go:286] validating the existence of file /etc/kubernetes/pki/ca.crt
I0206 20:07:58.994818 23055 checks.go:432] validating if the connectivity type is via proxy or direct
[preflight] Some fatal errors occurred:
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
error execution phase preflight
查看 Node 详细信息
kubectl describe node [node ip]
可以不携带 [node ip], 将会打印所有 node 的详细信息, 包括内存, CPU, 系统信息, Namespace 等.
查看 pod, 获取 pod name
kubectl get pods
查看 pod 状态, 定位错误
kubectl describe pods nginx-f89759699-f892v
查看异常服务
kubectl describe services nginx
查看集群组件状态
kubectl get cs
查看集群 IP 端口, 运行时长
kubectl get svc
删除 Pod
kubectl delete pod nginx-f89759699-6f6zc --force --grace-period=0
2. Node 节点如何重新 join Master
2.1 重新生成 token
Master Node 在
kubeadm init
时会输出的kubeadm join命令, 该命令中携带着一个 token, 该 token 有效期为 24 小时, 如果过期了, 需要通过以下命令重新生成
kubeadm token create --print-join-command
2.2 Master 移除旧的 Node
kubectl delete node node01
2.3 reset Node 节点
kubeadm reset
该命令会对 Node 进行重置操作, 比如: 重置
kubelet.conf
文件,ca.crt
证书等.
2.4 Node 移除 ca.crt 证书(如果存在)
如果 Node 节点加入过 k8s 集群, 在会在
/etc/kubernetes/pki/
中存在一份ca.crt
证书, 如果 token 改变后需要删除该 ca 证书, 再次 join 会自动颁发新的 ca 证书, 否则就会报下面的错.
[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
error execution phase preflight
2.5 Node 重新加入集群
kubeadm join 192.168.3.26:6443 --token 4ggbj1.8lc9alo71fwsor2o --discovery-token-ca-cert-hash sha256:0e524805dd05d25709ad7f49035e935387f034706cf009c0c6650f2a72baf62f
这个命令是
2.1 重新生成 token
中自动生成的, copy 到 Node 节点执行就好了.
我是帅帅, 一个集帅气, 幽默与内涵, 并且热爱编程, 拥抱开源, 喜欢烹饪与旅游的暖男, 我们下期再见. 拜了个拜!
每文一骚
————
The only unchanging rule in the world is that everything is changing.
世界上唯一不变的真理就是一切都在变化
日常求赞
————
你们白漂的力量就是我拖更的史诗级动力, 点赞, 评论, 再看, 赞赏, 看都看到这了, 随便点一个咯, 拜托了, 这真的对我很重要!!!
关注加好友
拉你进大佬交流群
————————————————