OfficialAccount本来是没有安排这一篇文章的,这是昨天搭建好集群后就关机了,今天开机重启了所有虚拟机后发现无法部署Pod,一直处于Pending状态(Error:FailedSc" />

vlambda博客
学习文章列表

k8s(三) -- 集群重启, Node 节点如何重新加入集群

 拥抱 "微服务+云原生"基于容器的微服务架构会逐渐成为开发应用系统的主流, 而 Kubernetes 将是运行微服务应用的理想平台

JavaFamily
Java 进阶学习. 从 How 到 Why....
37篇原创内容
Official Account



k8s(三) -- 集群重启, Node 节点如何重新加入集群

本来是没有安排这一篇文章的, 这是昨天搭建好集群后就关机了, 今天开机重启了所有虚拟机后发现无法部署 Pod, 一直处于 Pending 状态(Error: FailedScheduling...), Node 节点也处于 Not Ready 状态, 重新加入 Master 还抛错, 所以才有了这一片文章, 希望能让大家少挑一波坑.

k8s(三) -- 集群重启, Node 节点如何重新加入集群

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]

k8s(三) -- 集群重启, Node 节点如何重新加入集群

可以不携带 [node ip], 将会打印所有 node 的详细信息, 包括内存, CPU, 系统信息, Namespace 等.

  • 查看 pod, 获取 pod name

kubectl get pods
  • 查看 pod 状态, 定位错误

kubectl describe pods nginx-f89759699-f892v

k8s(三) -- 集群重启, Node 节点如何重新加入集群

k8s(三) -- 集群重启, Node 节点如何重新加入集群

  • 查看异常服务

kubectl describe services nginx

k8s(三) -- 集群重启, Node 节点如何重新加入集群

  • 查看集群组件状态

kubectl get cs

k8s(三) -- 集群重启, Node 节点如何重新加入集群

  • 查看集群 IP 端口, 运行时长

kubectl get svc

k8s(三) -- 集群重启, Node 节点如何重新加入集群

  • 删除 Pod

kubectl delete pod nginx-f89759699-6f6zc --force --grace-period=0

k8s(三) -- 集群重启, Node 节点如何重新加入集群

2. Node 节点如何重新 join Master

2.1 重新生成 token

Master Node 在 kubeadm init 时会输出的kubeadm join命令, 该命令中携带着一个 token, 该 token 有效期为 24 小时, 如果过期了, 需要通过以下命令重新生成

kubeadm token create --print-join-command

k8s(三) -- 集群重启, Node 节点如何重新加入集群

2.2 Master 移除旧的 Node

kubectl delete node node01

k8s(三) -- 集群重启, Node 节点如何重新加入集群

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.
世界上唯一不变的真理就是一切都在变化


日常求赞

你们白漂的力量就是我拖更的史诗级动力, 点赞, 评论, 再看, 赞赏, 看都看到这了, 随便点一个咯, 拜托了, 这真的对我很重要!!!



关注加好友


拉你进大佬交流群