【问题标题】:Expose kubernetes master service to host将 Kubernetes 主服务公开给主机
【发布时间】:2015-09-07 22:22:20
【问题描述】:

我正在尝试使用 kubernetes,但遇到了非常基本的问题。我已经在 VirtualBox 中运行的 ubuntu 上设置了单节点 kubernetes。 This 正是我所拥有的。我的流浪文件是这样的(所以在我的mac上我可以让virtualbox运行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

要启动 master,我有 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 中 curl 到 10.0.0.1 并查看结果。但我的问题是如何将这个 kubernetes 主服务公开给主机,或者当我在服务器上部署这个东西时,我怎样才能让这个主服务对公共 ip 可用?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

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

    【讨论】:

    • 对于部署,我可能会使用 GKE,或者,如果我想按照自己的方式做更多,OpenShift Origin 或 Kubernetes 项目本身的 SaltStack 部署,或 NixOS 部署脚本(/etc/nixos/configuration.nix 在 NixOS 系统上)。简而言之,我不会不惜一切代价尝试镜像开发环境设置。
    • 我不知道这是不是营销哈哈。但是,开个玩笑,拥有同构环境确实有助于减少将代码从一个环境移动到另一个环境的错误数量。
    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 2020-07-28
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多