外部访问 kubernetes
external access to 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
A curl localhost:8080
确认 API 是 运行。
但是尝试使用主机的 IP 访问它,例如 curl dockerHostIp:8080
失败:
Failed to connect to ipOfDockerHost port 8080: Connection refused
如何将k8s暴露在外? (docker-host 是一个 ubuntu 服务器)
据我所知,使用 --net=host 应该可以解决这个问题。但在这种情况下它不起作用。
当您使用 docker 启动 kubernetes 时,您可以在两个模型之间进行选择:
如果您查看这些文件,您会注意到一个区别:--insecure-bind-address is different
。
当您使用 --config=/etc/kubernetes/manifests
时,您只要求本地访问。
您应该从 --config=/etc/kubernetes/manifests-multi
开始。
注意:
- 使用 --config=/etc/kubernetes/manifests-multi
时需要手动启动 etcd
- 关注 this post,因为 docker 支持暂时不起作用
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
A curl localhost:8080
确认 API 是 运行。
但是尝试使用主机的 IP 访问它,例如 curl dockerHostIp:8080
失败:
Failed to connect to ipOfDockerHost port 8080: Connection refused
如何将k8s暴露在外? (docker-host 是一个 ubuntu 服务器) 据我所知,使用 --net=host 应该可以解决这个问题。但在这种情况下它不起作用。
当您使用 docker 启动 kubernetes 时,您可以在两个模型之间进行选择:
如果您查看这些文件,您会注意到一个区别:--insecure-bind-address is different
。
当您使用 --config=/etc/kubernetes/manifests
时,您只要求本地访问。
您应该从 --config=/etc/kubernetes/manifests-multi
开始。
注意:
- 使用 --config=/etc/kubernetes/manifests-multi 时需要手动启动 etcd
- 关注 this post,因为 docker 支持暂时不起作用