将kubernetes主服务暴露给主机

时间:2015-06-22 12:48:42

标签: kubernetes

我尝试了kubernetes并遇到了非常基本的问题。我在VirtualBox上运行的ubuntu上设置了单节点kubernetes。 This正是我所拥有的。我的流浪文件是这样的(所以在我的Mac上我可以运行ubuntu的虚拟机) -

Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant"

  config.vm.define "app" do |d|

  d.vm.box = "ubuntu/trusty64"

  d.vm.hostname = "kubernetes"

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  d.vm.network "private_network", ip: "192.168.20.10"

  d.vm.provision "docker"

  end
end

要启动主人,我有init.sh这样的东西 -

docker run --net=host -d gcr.io/google_containers/etcd:2.0.9 /usr/local/bin/etcd --addr=127.0.0.1:4001 --bind-addr=0.0.0.0:4001 --data-dir=/var/etcd/data

docker run --net=host -d -v /var/run/docker.sock:/var/run/docker.sock \
gcr.io/google_containers/hyperkube:v0.18.2 /hyperkube kubelet \
    --api_servers=http://localhost:8080 \
    --v=2 \
    --address=0.0.0.0 \
    --enable_server \
    --hostname_override=127.0.0.1 \
    --config=/etc/kubernetes/manifests

docker run -d --net=host --privileged gcr.io/google_containers/hyperkube:v0.18.2 /hyperkube proxy --master=http://127.0.0.1:8080 --v=2

wget http://storage.googleapis.com/kubernetes-release/release/v0.19.0/bin/linux/amd64/kubectl
sudo chmod +x ./kubectl

这会带来在vm中运行的简单kubernetes。现在,如果我使用kubectl获得服务,我可以看到kubernetes服务正在运行 -

kubernetes            component=apiserver,provider=kubernetes                          <none>                  10.0.0.2     443/TCP
kubernetes-ro         component=apiserver,provider=kubernetes                          <none>                  10.0.0.1     80/TCP

我可以在ssh中卷曲到10.0.0.1并查看结果。但我的问题是如何将这个kubernetes主服务暴露给主机,或者当我在服务器上部署这个东西时,如何将这个主服务提供给公共ip?

1 个答案:

答案 0 :(得分:1)

要将Kubernetes公开给主机,请确保使用docker run中的-p选项将容器端口公开给ubuntu。然后你应该能够访问kubernetes,就像它在ubuntu盒子上运行一样,如果你想让它像在主机上运行一样,然后将ubuntu端口转发到你的主机系统。对于部署到服务器有很多方法可以做到这一点,gce现在拥有自己的容器引擎,由alpha / beta中的kubernetes支持。否则,如果你想使用完全相同的系统进行部署,很可能你只需要正确的流浪者提供者和ubuntu盒子,否则一切都应该与你的本地设置相同。