k8s 启动一个nginx,节点IP是docker ip,而不是flannel定义的网段ip,怎么解决?

请教一下,启动一个nginx服务测试,节点IP是docker ip,而不是flannel定义的网段ip,怎么解决?
$ kubectl run test-nginx --image=nginx:alpine
$ kubectl expose deployment test-nginx --port=80 --type=NodePort
分配的pod IP 为啥不是flannel的网段10.244.2.x
master执行:

img

slave2执行:

img

巧妹:
slave2节点的route

巧妹:

img

chatgpt:不喜勿喷
该问题可能是由于kube-flannel组件无法获取到pod的网络信息而导致的。可能的解决方法如下:

1.检查kube-flannel的配置是否正确,特别是podSubnet的值是否正确。可以尝试在kube-flannel的ConfigMap中手动添加subnet-file配置,将podSubnet值写入文件并保存,然后在kube-flannel配置文件中添加该文件路径。例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
data:
  subnet.env: |
    FLANNEL_NETWORK=10.244.0.0/16
    FLANNEL_SUBNET=10.244.0.1/24
    FLANNEL_MTU=1450
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: kube-flannel-ds-amd64
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: kube-flannel
  template:
    metadata:
      labels:
        app: kube-flannel
    spec:
      containers:
      - name: kube-flannel
        image: quay.io/coreos/flannel:v0.14.0
        env:
        - name: POD_SUBNET
          valueFrom:
            configMapKeyRef:
              name: kube-flannel-cfg
              key: subnet.env
        command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=$(POD_IFACE_NAME)
        volumeMounts:
        - name: run
          mountPath: /run
        - name: flannel-cfg
          mountPath: /etc/kube-flannel/
      volumes:
      - name: run
        hostPath:
          path: /run
      - name: flannel-cfg
        configMap:
          name: kube-flannel-cfg


检查kube-flannel是否正确配置了网络插件,例如ip-masq和kube-subnet-mgr。可以查看kube-flannel的配置文件,以确认这些插件是否已正确配置。例如:


command:
        - /opt/bin/flanneld
        args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=$(POD_IFACE_NAME)

检查节点是否正常工作。可能是由于节点出现问题,例如节点资源不足或磁盘空间不足等,导致kube-flannel无法正常工作。可以查看节点的日志和状态,以确认是否存在这些问题。例如:

kubectl describe node <node-name>
kubectl logs kube-flannel-ds-<node-name>