如何让NodeMCU访问Kind集群中部署的Flask API?
问题:Kind集群中Flask API无法被跨网段NodeMCU访问
我用Kubernetes Kind集群部署Flask API,本地用flask run运行时,应用绑定本机IP 192.168.100.19,同网段的NodeMCU(IP 192.168.100.36)能正常访问。
但部署到Kind集群后,Kind节点处于192.168.64.1网段,我用MetalLB创建该网段的IP池,给Flask API分配了负载均衡IP 192.168.63.200,此时NodeMCU无法和这个IP通信。
我尝试过以下两种方案,但都没解决问题:
方案1:通过ExtraPortMappings绑定容器端口到本机IP
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: iot-cluster05 nodes: - role: control-plane kubeadmConfigPatches: - | kind: InitConfiguration nodeRegistration: kubeletExtraArgs: node-labels: "ingress-ready=true" extraPortMappings: - containerPort: 80 hostPort: 80 protocol: TCP - containerPort: 443 hostPort: 443 protocol: TCP - containerPort: 5000 hostPort: 5000 protocol: TCP listenAddress: "192.168.100.19"
方案2:硬编码本机IP为node-ip
kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 name: iot-cluster01 nodes: - role: control-plane extraPortMappings: - containerPort: 30000 hostPort: 80 protocol: TCP kubeadmConfigPatches: - | kind: InitConfiguration nodeRegistration: kubeletExtraArgs: node-ip: "192.168.100.19" cluster-dns: "192.168.100.1" - | kind: ClusterConfiguration apiServer: extraArgs: advertise-address: "192.168.100.19" bind-address: "0.0.0.0" controllerManager: extraArgs: bind-address: "0.0.0.0" node-cidr-mask-size: "24" allocate-node-cidrs: "true" cluster-cidr: "10.244.0.0/16" containerdConfigPatches: - | [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true
环境版本信息
- MetalLB版本:0.13.7
- Kind版本:v0.18.0
- Docker版本:v23.0.1
内容的提问来源于stack exchange,提问作者sam hassan
相关产品推荐
相关产品推荐

