1

I have configured a Kubernetes kind cluster to run a flask API. The flask App when run locally with flask run produces an IP which is the local machine assigned IP from the local network (192.168.100.19). My Nodemcu which also has an IP of (192.168.100.36) can talk to the Flask API.

However, things are different when I run the Flask app from the kind cluster. The kind nodes are in the network of 192.168.64.1 so my nodes' IPs are in that range. I used metallb to create the IP pools in that range as well so my Flask API is given a Loadbalancer IP of 192.168.63.200 This Flask API IP cannot be communicated with the Nodemcu IP of 192.168.100.36

I know this is all about networking and things. This is what I've tried and and none work

  • ExtraPortMappings to bind the running container port to the local machine IP. In some instances, I changed the listenAddress to 0.0.0.0
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"
  • Hardcode the local machine IP as the 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

Settings Details

  • Metallb version 0.13.7
  • Kind v0.18.0
  • Docker v23.0.1
sam hassan
  • 197
  • 3
  • 14

0 Answers0