kubernetes Node 宕机 Pod 驱离

一、背景描述

当某个节点宕机时,运行在改节点上Pod能快速驱逐到其他可调用节点上。

  • 默认节点宕机 5 分钟才会执行驱逐Pod操作,手动驱逐更快但是要人工介入

1.1、添加配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  replicas: 1
    spec:
      containers:
        - name: tomcat
          image: "tomcat:8.5.51"
          imagePullPolicy: Always
          ports:
          - name: http
            protocol: TCP
            containerPort: 80
      tolerations:
      # 节点控制器无法触及节点,对应节点状态ready值为Unknown
      - effect: NoExecute
        key: node.kubernetes.io/unreachable
        operator: Exists
        # 驱逐时间
        tolerationSeconds: 30
      # 节点还没有准备好,对应节点状态Ready值为false
      - effect: NoExecute
        key: node.kubernetes.io/not-ready
        operator: Exists
        # 驱逐时间
        tolerationSeconds: 30

二、驱逐模拟

2.1、节点详情

root@node-01:~$ kubectl get node
NAME      STATUS     ROLES    AGE    VERSION
node-01   Ready      master   133m   v1.19.3
node-02   Ready      <none>   133m   v1.19.3
node-03   Ready      <none>   133m   v1.19.3

2.2、查看部署服务运行所在节点

root@node-01:~/Helm-Quark$ kubectl get pod -o wide -w
NAME                          READY   STATUS    RESTARTS   AGE   IP                NODE      NOMINATED NODE   READINESS GATES
dsad-quark-57b46c6858-v4r9s   1/1     Running   0          43m   100.114.252.150   node-03   <none>           <none>

2.3、模拟节点宕机

  • 关闭 Node-03 机器
  • 此时 Node-03 为 NotReady 状态
root@node-01:~$ kubectl get node
NAME      STATUS     ROLES    AGE    VERSION
node-01   Ready      master   133m   v1.19.3
node-02   Ready      <none>   133m   v1.19.3
node-03   NotReady   <none>   133m   v1.19.3

2.3、Pod 驱逐验证

  • 这里可以看到已经驱逐到 Node-02 节点中
root@node-01:~/Helm-Quark$ kubectl get pod -o wide -w
NAME                           READY   STATUS    RESTARTS   AGE   IP              NODE      NOMINATED NODE   READINESS GATES
test2-quark-56d7b649cc-cwwkl   1/1     Running   0          95s   100.81.24.208   node-03   <none>           <none>
test2-quark-56d7b649cc-cwwkl   1/1     Terminating   0          3m22s   100.81.24.208   node-03   <none>           <none>
test2-quark-56d7b649cc-bxvzq   0/1     Pending       0          0s      <none>          <none>    <none>           <none>
test2-quark-56d7b649cc-bxvzq   0/1     Pending       0          0s      <none>          node-02   <none>           <none>
test2-quark-56d7b649cc-bxvzq   0/1     ContainerCreating   0          0s      <none>          node-02   <none>           <none>
test2-quark-56d7b649cc-bxvzq   0/1     ContainerCreating   0          2s      <none>          node-02   <none>           <none>
test2-quark-56d7b649cc-bxvzq   1/1     Running             0          4s      100.114.252.143   node-02   <none>           <none>

2.4、节点选择器与标签

  • 如果设置指定节点,当指定结果宕机时,虽然Pod会驱逐到其他节点中,但一直会是 Pending 状态
  • 如果设置节点标签,尽量在多个节点设置标签,如果只有一个节点宕机且Pod只运行在这个标签选择器中,其他节点没有该标签即使Pod驱逐到其他节点也会是 Pending 状态,如果多节点都有该标签则 Running 状态

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/kubernetes/852.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
kubernetes Node 宕机 Pod 驱离
一、背景描述 当某个节点宕机时,运行在改节点上Pod能快速驱逐到其他可调用节点上。 默认节点宕机 5 分钟才会执行驱逐Pod操作,手动驱逐更快但是要人工介入 ……
<<上一篇
下一篇>>
文章目录
关闭
目 录