外部访问kubernetes

docker run \ --volume=/:/rootfs:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:rw \ --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-amd64:v${K8S_VERSION} \ /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.0.0.10 \ --cluster-domain=cluster.local \ --allow-privileged=true --v=2 

curl localhost:8080确认API正在运行。

但试图访问它与主机的IP curl dockerHostIp:8080失败:

 Failed to connect to ipOfDockerHost port 8080: Connection refused 

我怎样才能把K8暴露在外面? (docker-host是一个Ubuntu服务器)据我所知使用–net =主机应该解决这个问题。 但在这种情况下不起作用。

当您使用docker启动kubernetes时,您可以select两种模式:

  • –config =的/ etc / kubernetes /舱单
  • –config = / etc / kubernetes / manifests-multi 。

如果您查看这些文件,您会注意到一个区别:– --insecure-bind-address is different

当你使用--config=/etc/kubernetes/manifests ,你只要求本地访问。

您应该从--config=/etc/kubernetes/manifests-multi

注意:

  • 当您使用–config = / etc / kubernetes / manifests-multi时,您将需要手动启动etcd
  • 作为docker支持现在不工作,请按照这篇文章