什么是超硬管?

时间:2015-11-27 08:36:30

标签: kubernetes

我正在尝试在aws中设置kubernetes并遵循https://github.com/kubernetes/kubernetes/blob/master/docs/getting-started-guides/docker-multinode

中的指南

我无法理解hyperkube的含义。有人可以向我解释它是什么以及它是如何运作的?

我的另一个问题是在运行命令时

sudo docker run \
    --volume=/:/rootfs:ro \
    --volume=/sys:/sys:ro \
    --volume=/dev:/dev \
    --volume=/var/lib/docker/:/var/lib/docker:rw \
    --volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
    --volume=/var/run:/var/run:rw \
    --net=host \
    --privileged=true \
    --pid=host \
    -d \
    gcr.io/google_containers/hyperkube:v${K8S_VERSION} \
    /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-multi \
      --cluster-dns=10.0.0.10 \
      --cluster-domain=cluster.local

默认启动一个pod。从命令文档中,它看起来像是从--config=/etc/kubernetes/manifests-multi属性获取pod清单。但是我的主机中没有此目录。有人可以告诉我从哪里获得这个pod清单?

5 个答案:

答案 0 :(得分:95)

Kubernetes是一组守护进程/二进制文件:

  • kube-apiproxy(AKA the master),
  • kubelet(启动/停止容器,同步配置),
  • kube-scheduler(资源经理)
  • kube-controller-manager(监控RC,并保持所需状态)
  • kube-proxy(在每个节点上公开服务)

hyperkube二进制文件是一个二进制文件(类似于busybox的方式),它结合了所有以前单独的二进制文件。

以下命令:

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-multi \
  --cluster-dns=10.0.0.10 \
  --cluster-domain=cluster.local

运行守护程序kubelet

答案 1 :(得分:6)

Kubernetes是一组二进制文件

  1. kube-apiproxy
  2. kube-scheduler
  3. kube-control-manager
  4. 小玩意
  5. kube-proxy

hyperkube 是所有这些二进制文件的包装。因此,一旦部署了hyperkube,它将安装所有二进制文件。 无需单独安装这些二进制文件。

答案 2 :(得分:3)

如果您更关心在AWS中运行集群,而不是通过手工创建每个组件的经验(除非您为了学习而这样做,否则您不应该打扰),我d强烈建议使用交钥匙脚本创建AWS集群,如documented here

对于其他任何查看此问题/答案的人,都有一个page in the docs on how to choose a cluster creation method that fits your needs

至于你关于hyperkube的问题,配置文件内置在hyperkube docker镜像中,如果你很好奇,可以从its Dockerfile看到。

答案 3 :(得分:1)

我自己开始了我的kubernetes之旅,但是如果你看一下github上的源代码,你会看到超级管的来源。它内置于kubernetes的核心 - https://github.com/kubernetes/kubernetes/blob/master/cmd/hyperkube/hyperkube.go

Kubernetes旨在将容器提升到一个全新的水平,并将它们包装在google调用pod中。超级硬盘 - 请纠正我,如果我错了是组成pod的容器的调度,创建和管理的arch / krux /骨干,并且基本上运行了show,因此名称" hyperkube "此外,超级多维数据库可以快速响应事件,并能够即时做出有关服务/堆栈/容器/主机运行状况的决策。

如果您想要一个简单的方法来开始使用kubernetes,我建议尝试使用rancher(而不是rancherOS),因为rancherlabs刚刚将kubernetes部署到他们的内置堆栈中 - rancher也使用了docker-compose以及它所调用的内容rancher-compose - 当你创建一个堆栈/服务时,你可以看看构成该堆栈/服务的元素以及yml格式的堆栈中的容器 - 这将有助于您更好地理解组成的元素您正在运行的服务和堆栈,也可以帮助您解决手动部署问题 - 它是基于gui的,但是您可以将您的主机添加到任何牧场服务器,抛出一些日志堆栈,如kabana或sysdig,如果您从cli工作 - 只要主机注册了牧场主(不,我根本不为他们工作) - 您可以通过添加主机并指定自定义来注册任何带有牧场主的主机。此外,牧场主实际上可以跨托管平台管理kubernetes / stacks /卷 - 这太棒了。这是一个很好的方式来可视化和查看您的docker主机发生的事情。

我希望这能回答一些问题并引导您朝着正确的方向前进。

它是kubernetes集群的决策者和生命的提供者。

答案 4 :(得分:1)

Hyperkube是所有API服务器二进制文件的包装,Kubernetes的运行方式是使用hyperkube来调用API服务器,调度程序,控制器管理器,kube-proxy和kubelet。

现在,所有这些定义主节点的二进制文件都使用YAML清单来定义上述服务。您始终可以根据部署方案将部署类型选择为在容器内还是在主机上。

这些用于服务的pod清单实际上定义了服务的所需状态,该状态存储在etcd中,首先从api服务器准备就绪。

现在,一旦定义了pod清单,您就可以使用hyperkube来配置这些服务,使其在容器内或主机上运行。

因此,hyperkube简而言之是所有服务的核心,而此hyperkube的唯一目的是管理Kubernetes集群中的所有服务,从而简化了部署。