外部访问kubernetes

时间:2016-03-15 08:28:40

标签: docker 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正在运行。

但尝试使用主机的curl dockerHostIp:8080等IP来访问它会失败:

Failed to connect to ipOfDockerHost port 8080: Connection refused

如何将k8暴露在外? (docker-host是一个ubuntu服务器) 据我所知,使用--net = host应该可以解决这个问题。但在这种情况下它不起作用。

1 个答案:

答案 0 :(得分:2)

当您使用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支持目前无法正常工作