首页 文章

Kubernetes服务网络

提问于
浏览
1

我一直在尝试在我的本地机器上使用kubernetes . 但是我在试图了解服务网络如何工作时遇到了问题 .

我在笔记本电脑上的容器中运行kubernetes:

  • Etcd 2.0.5.1

  • Kubelet 1.1.2

  • 代理1.1.2

  • SkyDns 2015-03-11-001

  • Sky2kube 1.11

然后我发射火花,它位于kubernetes github repo的例子中 .

kubectl create -f kubernetes / examples / spark / spark-master-controller.yaml kubectl create -f kubernetes / examples / spark / spark-master-service.yaml kubectl create -f kubernetes / examples / spark / spark-webui.yaml
kubectl create -f kubernetes / examples / spark / spark-worker-controller.yaml kubectl create -f kubernetes / examples / spark / zeppelin-controller.yaml kubectl create -f kubernetes / examples / spark / zeppelin-service.yaml

我的本地网络:10.7.64.0/24我的码头网络:172.17.0.1/16

什么有效:

  • Spark master启动,我可以连接到webUI .

  • Spark工作者尝试对spark-master执行dns查询并且成功 . (它返回主服务器的正确服务ip)

什么行不通:

  • Spark工作者无法连接到服务ip . 在该容器中或本地计算机(笔记本电脑)上没有到该主机的路由 . 我也看不到iptables中发生的任何事情 . 它试图连接到10.0.0.0/8网络中的某个地方,我也没有任何路由 . 有人能否对此有所了解?

细节:

我如何启动容器:

sudo docker run \ --net = host \ -d kubernetes / etcd:2.0.5.1 \ / usr / local / bin / etcd \ --addr = $(hostname -i):4001 \ --bind-addr = 0.0 . 0.0:4001 \ --data-dir = / var / etcd / data

sudo docker run \ --volume = /:/ rootfs:ro \ --volume = / sys:/ sys:ro \ --volume = / dev:/ dev \ --volume = / var / lib / docker /:/ var / lib / docker:ro \ --volume = / var / lib / kubelet /:/ var / lib / kubelet:rw \ --volume = / var / run:/ var / run:rw \ --net = host \ --pid = host \ --privileged = true \ -d \ gcr.io/google_containers/hyperkube:v1.2.0 \ / hyperkube kubelet --containerized --hostname-override = "127.0.0.1" --address = "0.0.0.0" --api- servers = http://localhost:8080 --config = / etc / kubernetes / manifests --cluster-dns = 10.7.64.184 --cluster-domain = kubernetes.local

sudo docker run -d --net = host --privileged gcr.io/google-containers/hyperkube:v1.2.0 / hyperkube proxy --master = http://127.0.0.1:8080 --v = 2 --cluster-dns = 10.7.64.184 - cluster-domain = kubernetes.local --cloud-provider =“”

sudo docker run -d --net = host --restart = always \ gcr.io/google_containers/kube2sky:1.11 \ -v = 10 -logtostderr = true -domain = kubernetes.local \ -etcd-server =“http:/ /127.0.0.1:4001"

sudo docker run -d --net = host --restart = always \ -e ETCD_MACHINES =“http://127.0.0.1:4001”\ -e SKYDNS_DOMAIN =“kubernetes.local”\ -e SKYDNS_ADDR =“10.7.64.184 :53“\ -e SKYDNS_NAMESERVERS =”8.8.8.8:53,8.8.4.4:53“\ gcr.io/google_containers/skydns:2015-03-11-001

谢谢 !

1 回答

  • 0

    我发现问题是什么,代理没有运行,因为--cluster-dns和--cluster-domain不是代理的参数 . 现在创建iptables并且spark worker能够连接到spark-master的服务ip .

相关问题