Kubernetes 服务网络
Kubernetes services networking
我一直在尝试让 spark 在我本地机器上的 kubernetes 上运行。
但是,我在尝试了解服务网络的工作原理时遇到了问题。
我运行在笔记本电脑的容器中安装 kubernetes:
- Etcd 2.0.5.1
- Kubelet 1.1.2
- 代理 1.1.2
- SkyDns 2015-03-11-001
- Sky2kube 1.11
然后我将启动位于 kubernetes github 存储库示例中的 spark。
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
我的 docker 网络:172.17.0.1/16
什么有效:
- Spark master 启动,我可以连接到 webUI。
- Spark worker 尝试为 spark-master 做 dns 查询并且是
成功的。 (returnsmaster正确的服务ip)
什么不起作用:
- Spark worker 无法连接到服务ip。没有通往
该主机在该容器中,也不在本地计算机(笔记本电脑)上。还
我没有看到 iptables 中发生任何事情。它试图连接到某个地方
在 10.0.0.0/8 网络中,我也没有任何路由。能
有人对此有所了解吗?
详情:
我如何启动容器:
sudo docker 运行 \
--net=主机\
-d kubernetes/etcd:2.0.5.1 \
/usr/local/bin/etcd\
--addr=$(主机名-i):4001 \
--绑定地址=0.0.0.0:4001 \
--data-dir=/var/etcd/data
sudo docker 运行 \
--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=主机\
--pid=主机\
--特权=真\
-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 运行 -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 运行 -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 运行 -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
谢谢!
我发现问题出在哪里,代理不是 运行,因为 --cluster-dns 和 --cluster-domain 不是代理的参数。现在 iptables 已创建,spark worker 可以连接到 spark-master 的服务 ip。
我一直在尝试让 spark 在我本地机器上的 kubernetes 上运行。 但是,我在尝试了解服务网络的工作原理时遇到了问题。
我运行在笔记本电脑的容器中安装 kubernetes:
- Etcd 2.0.5.1
- Kubelet 1.1.2
- 代理 1.1.2
- SkyDns 2015-03-11-001
- Sky2kube 1.11
然后我将启动位于 kubernetes github 存储库示例中的 spark。
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 我的 docker 网络:172.17.0.1/16
什么有效:
- Spark master 启动,我可以连接到 webUI。
- Spark worker 尝试为 spark-master 做 dns 查询并且是 成功的。 (returnsmaster正确的服务ip)
什么不起作用:
- Spark worker 无法连接到服务ip。没有通往 该主机在该容器中,也不在本地计算机(笔记本电脑)上。还 我没有看到 iptables 中发生任何事情。它试图连接到某个地方 在 10.0.0.0/8 网络中,我也没有任何路由。能 有人对此有所了解吗?
详情:
我如何启动容器:
sudo docker 运行 \ --net=主机\ -d kubernetes/etcd:2.0.5.1 \ /usr/local/bin/etcd\ --addr=$(主机名-i):4001 \ --绑定地址=0.0.0.0:4001 \ --data-dir=/var/etcd/data
sudo docker 运行 \ --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=主机\ --pid=主机\ --特权=真\ -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 运行 -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 运行 -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 运行 -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
谢谢!
我发现问题出在哪里,代理不是 运行,因为 --cluster-dns 和 --cluster-domain 不是代理的参数。现在 iptables 已创建,spark worker 可以连接到 spark-master 的服务 ip。