K8s集群里 中Flannel的状态显示为CrashLoopBackOff 时

1.问题:

Flannel的状态显示为CrashLoopBackOff 时

[root@master keepalived]# kubectl get pods -A
NAMESPACE      NAME                              READY   STATUS              RESTARTS         AGE
kube-flannel   kube-flannel-ds-bpqxg             0/1     CrashLoopBackOff    1 (14s ago)      60s
kube-flannel   kube-flannel-ds-gt9m4             0/1     CrashLoopBackOff    1 (44s ago)      59s
kube-flannel   kube-flannel-ds-lmnxz             0/1     CrashLoopBackOff    1 (44s ago)      59s
kube-flannel   kube-flannel-ds-t2h2m             0/1     CrashLoopBackOff    1 (14s ago)      60s
kube-flannel   kube-flannel-ds-vgsjq             0/1     CrashLoopBackOff    1 (54s ago)      59s
kube-system    coredns-65c54cc984-5s2rc          0/1     ContainerCreating   0                3h43m
kube-system    coredns-65c54cc984-gv9zv          0/1     ContainerCreating   0                3h43m
kube-system    etcd-master                       1/1     Running             14               3h43m
kube-system    etcd-master2                      1/1     Running             0                3h41m
kube-system    etcd-master3                      1/1     Running             0                3h35m
kube-system    kube-apiserver-master             1/1     Running             0                3h43m
kube-system    kube-apiserver-master2            1/1     Running             0                3h41m
kube-system    kube-apiserver-master3            1/1     Running             0                3h35m
kube-system    kube-controller-manager-master    1/1     Running             1 (3h41m ago)    3h43m
kube-system    kube-controller-manager-master2   1/1     Running             0                3h41m
kube-system    kube-controller-manager-master3   1/1     Running             0                3h35m
kube-system    kube-proxy-26n24                  1/1     Running             0                3h23m
kube-system    kube-proxy-44mr4                  1/1     Running             0                3h22m
kube-system    kube-proxy-kg22m                  1/1     Running             0                3h36m
kube-system    kube-proxy-tj6nw                  1/1     Running             0                3h43m
kube-system    kube-proxy-xfmw9                  1/1     Running             0                3h41m
kube-system    kube-scheduler-master             1/1     Running             19 (3h41m ago)   3h43m
kube-system    kube-scheduler-master2            1/1     Running             0                3h41m
kube-system    kube-scheduler-master3            1/1     Running             0                3h35m

2. 查看 kube-flannel 日志

可以通过 kubectl logs 命令查看 kube-flannel 的日志,找出它为何处于 CrashLoopBackOff 状态。

kubectl logs <flannel-pod-name> -n kube-flannel
#将 <flannel-pod-name> 替换为实际的 kube-flannel Pod 名称,如 kube-flannel-ds-7qlgm。

从日志中可以看到,kube-flannel 出现了以下错误:

Error registering network: failed to acquire lease: subnet "10.244.0.0/16" specified in the flannel net config doesn't contain "172.16.4.0/24" PodCIDR of the "node1" node

这意味着 Flannel 的网络配置子网 10.244.0.0/16 与 node1 节点的 PodCIDR 172.16.4.0/24 不匹配。

3. 检查 Flannel ConfigMap 配置

确保 Flannel ConfigMap 的配置与集群的 PodCIDR 配置相匹配。可以使用以下命令查看 ConfigMap 的内容:

[root@master keepalived]# kubectl get configmap kube-flannel-cfg -n kube-flannel -o yaml
apiVersion: v1
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "cniVersion": "0.3.1",
      "plugins": [
        {
          "type": "flannel",
          "delegate": {
            "hairpinMode": true,
            "isDefaultGateway": true
          }
        },
        {
          "type": "portmap",
          "capabilities": {
            "portMappings": true
          }
        }
      ]
    }
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "EnableNFTables": false,
      "Backend": {
        "Type": "vxlan"
      }
    }
kind: ConfigMap
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"cni-conf.json":"{\n  \"name\": \"cbr0\",\n  \"cniVersion\": \"0.3.1\",\n  \"plugins\": [\n    {\n      \"type\": \"flannel\",\n      \"delegate\": {\n        \"hairpinMode\": true,\n        \"isDefaultGateway\": true\n      }\n    },\n    {\n      \"type\": \"portmap\",\n      \"capabilities\": {\n        \"portMappings\": true\n      }\n    }\n  ]\n}\n","net-conf.json":"{\n  \"Network\": \"10.244.0.0/16\",\n  \"EnableNFTables\": false,\n  \"Backend\": {\n    \"Type\": \"vxlan\"\n  }\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app":"flannel","k8s-app":"flannel","tier":"node"},"name":"kube-flannel-cfg","namespace":"kube-flannel"}}
  creationTimestamp: "2024-08-09T02:57:06Z"
  labels:
    app: flannel
    k8s-app: flannel
    tier: node
  name: kube-flannel-cfg
  namespace: kube-flannel
  resourceVersion: "1964"
  uid: 0b36f97e-7143-4966-9f73-c34aed3e6792

4.确认 PodCIDR 配置

确保集群中的 PodCIDR 配置与你的 Flannel Network 配置匹配。你可以在 Master 节点上查看 PodCIDR 配置:

[root@master keepalived]# kubectl get nodes -o yaml | grep podCIDR
    podCIDR: 172.16.0.0/24
    podCIDRs:
    podCIDR: 172.16.1.0/24
    podCIDRs:
    podCIDR: 172.16.2.0/24
    podCIDRs:
    podCIDR: 172.16.4.0/24
    podCIDRs:
    podCIDR: 172.16.3.0/24
    podCIDRs:

5. 更新 Flannel ConfigMap

编辑 kube-flannel-cfg ConfigMap:

kubectl edit configmap kube-flannel-cfg -n kube-flannel

将 net-conf.json 中的 Network 字段修改为 172.16.0.0/12(这包括了所有的 PodCIDR 范围):

{
  "Network": "172.16.0.0/12",
  "EnableNFTables": false,
  "Backend": {
    "Type": "vxlan"
  }
}

保存并退出编辑器。

6. 重新启动 Flannel DaemonSet

更新配置后,重新启动 Flannel DaemonSet 以应用更改:

[root@master keepalived]# kubectl rollout restart daemonset kube-flannel-ds -n kube-flannel
daemonset.apps/kube-flannel-ds restarted

7. 验证 Flannel Pods 状态

检查 Flannel Pods 的状态,确保它们已成功启动:

[root@master keepalived]# kubectl get pods -n kube-flannel
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-2vmjl   1/1     Running   0          4s
kube-flannel-ds-6jjp5   1/1     Running   0          4s
kube-flannel-ds-785b7   1/1     Running   0          4s
kube-flannel-ds-846xc   1/1     Running   0          4s
kube-flannel-ds-98rxw   1/1     Running   0          4s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑蛋同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值