docker - Load balancing is not working properly -
we want test kubernetes load balancing. create 2 node cluster thats runs 6 replicas of our container. container has running apache2 server , php , print pod name if browse hostname.php
cluster details: 172.16.2.92 -- master , minion 172.16.2.91 -- minion
rc , service details:
frontend-controller.json:
{ "kind":"replicationcontroller", "apiversion":"v1beta3", "metadata":{ "name":"frontend", "labels":{ "name":"frontend" } }, "spec":{ "replicas":6, "selector":{ "name":"frontend" }, "template":{ "metadata":{ "labels":{ "name":"frontend" } }, "spec":{ "containers":[ { "name":"php-hostname", "image":"naresht/hostname", "ports":[ { "containerport":80, "protocol":"tcp" } ] } ] } } } }
frontend-service.json:
{ "kind":"service", "apiversion":"v1beta3", "metadata":{ "name":"frontend", "labels":{ "name":"frontend" } }, "spec":{ "createexternalloadbalancer": true, "ports": [ { "port":3000, "targetport":80, "protocol":"tcp" } ], "publicips": [ "172.16.2.92"], "selector":{ "name":"frontend" } } }
pod details: frontend-01bb8, frontend-svxfl , frontend-yki5s running on node 172.16.2.91 frontend-65ykz , frontend-c1x0d , frontend-y925t running on node 172.16.2.92
if browse 172.16.2.92:3000/hostname.php, prints pod name.
problem:
running watch -n1 curl 172.16.2.92:3000/hostname.php on node 172.16.2.92 gives pods(frontend-65ykz , frontend-c1x0d , frontend-y925t ). not showing other node 172.16.2.91 pods. running same command on node 172.16.2.91 gives pods. not showing other node 172.16.2.92 pods. running same command outside of cluster showing 172.16.2.92 pods. want see pods not specific node pods, if run wherever.
check below details more information , if wrong
# kubectl nodes
name labels status 172.16.2.91 kubernetes.io/hostname=172.16.2.91 ready 172.16.2.92 kubernetes.io/hostname=172.16.2.92 ready
# kubectl pods
pod ip container(s) image(s) host labels status created message frontend-01bb8 172.17.0.84 172.16.2.91/172.16.2.91 name=frontend running minute php-hostname naresht/hostname running minute frontend-65ykz 10.1.64.79 172.16.2.92/172.16.2.92 name=frontend running minute php-hostname naresht/hostname running minute frontend-c1x0d 10.1.64.77 172.16.2.92/172.16.2.92 name=frontend running minute php-hostname naresht/hostname running minute frontend-svxfl 172.17.0.82 172.16.2.91/172.16.2.91 name=frontend running minute php-hostname naresht/hostname running minute frontend-y925t 10.1.64.78 172.16.2.92/172.16.2.92 name=frontend running minute php-hostname naresht/hostname running minute frontend-yki5s 172.17.0.83 172.16.2.91/172.16.2.91 name=frontend running minute php-hostname naresht/hostname running minute kube-dns-sbgma 10.1.64.11 172.16.2.92/172.16.2.92 k8s-app=kube-dns,kubernetes.io/cluster-service=true,name=kube-dns running 45 hours kube2sky gcr.io/google_containers/kube2sky:1.1 running 45 hours etcd quay.io/coreos/etcd:v2.0.3 running 45 hours skydns gcr.io/google_containers/skydns:2015-03-11-001 running 45 hours
# kubectl services
name labels selector ip(s) port(s) frontend name=frontend name=frontend 192.168.3.184 3000/tcp kube-dns k8s-app=kube-dns,kubernetes.io/cluster-service=true,name=kube-dns k8s-app=kube-dns 192.168.3.10 53/udp kubernetes component=apiserver,provider=kubernetes <none> 192.168.3.2 443/tcp kubernetes-ro component=apiserver,provider=kubernetes <none> 192.168.3.1 80/tcp
# iptables -t nat -l
chain kube-portals-container (1 references) target prot opt source destination redirect tcp -- anywhere 192.168.3.184 /* default/frontend: */ tcp dpt:3000 redir ports 50734 redirect tcp -- anywhere kube02 /* default/frontend: */ tcp dpt:3000 redir ports 50734 redirect udp -- anywhere 192.168.3.10 /* default/kube-dns: */ udp dpt:domain redir ports 52415 redirect tcp -- anywhere 192.168.3.2 /* default/kubernetes: */ tcp dpt:https redir ports 33373 redirect tcp -- anywhere 192.168.3.1 /* default/kubernetes-ro: */ tcp dpt:http redir ports 60311 chain kube-portals-host (1 references) target prot opt source destination dnat tcp -- anywhere 192.168.3.184 /* default/frontend: */ tcp dpt:3000 to:172.16.2.92:50734 dnat tcp -- anywhere kube02 /* default/frontend: */ tcp dpt:3000 to:172.16.2.92:50734 dnat udp -- anywhere 192.168.3.10 /* default/kube-dns: */ udp dpt:domain to:172.16.2.92:52415 dnat tcp -- anywhere 192.168.3.2 /* default/kubernetes: */ tcp dpt:https to:172.16.2.92:33373 dnat tcp -- anywhere 192.168.3.1 /* default/kubernetes-ro: */ tcp dpt:http to:172.16.2.92:60311
thanks
because flannel not working
/root/kube/reconfdocker.sh on everynode
it restart docker , flannel check ifconfig docker0 , flannel0 bridge ips should in same network. load balancing work. works me.
Comments
Post a Comment