Kubernetes架构 - Kubernetes集群管理和初始化节点

时间:2018-03-27 14:49:30

标签: kubernetes

我正在尝试将我的部署方案从docker更改为kubernetes。现在我探讨了kubernetes的体系结构 - 集群,节点,Pod,服务,副本集/控制器,Kubernetes-cni,kube-ctl ..等等。现在我需要开始部署到kubernetes集群。在我探索时,我发现了可以在同一台机器中创建单个节点和主机的文档和讨论,也可以在VM中创建。还为群集创建找到了kubespray和minikube文档。

我在这里添加了与kubernetes交手的困惑。如果我离开了我们的背景,请原谅我,因为我正在学习期间。

  1. 为了创建和使用kubernetes,为什么在同一个或虚拟机中存在类似单个节点和主节点的变体?为什么集群容器存在偏差?
  2. 如何决定是否需要在同一台机器上选择单节点和主机,或者我需要将Vms用于不同的节点?
  3. Minikube和Kubespray如何在kubernetes架构中提供不同的方法?,因为kubernetes是单一来源的产品 - 谷歌。
  4. 如果我在我的ubuntu 16.04中安装kubeadm,kubernetes-cni和kubelet,我可以在同一台机器上启动节点吗?
  5. 任何人都可以帮我澄清这些混淆。作为一个好的首发,我面临着很多关于kubernetes架构的误解。因此,请通过提供建议和教程以适当的方式指导我。

    - 提前致谢 -

1 个答案:

答案 0 :(得分:1)

概念和术语的分类非常复杂,文档仍然非常稀疏。

1. For creating and working with kubernetes, 
why there is a variation like single node and master in same or in VMs? 
Why there is a deviation in cluster container?

这种偏差是为了支持许多不同的使用案例 - 在他们的笔记本电脑上工作的容器工作负载开发人员在没有大量操作仪式的情况下需要相当于假的集群; kubernetes ops人们在小而真实的集群上学习和测试;适用于不同规模工厂的实际生产工作量。

对于第一种情况,对于容器工作负载开发,有一个名为minikube的软件,它类似于kubernetes的分布,可以自动创建单个虚拟机 - 使用VirtualBox或其他桌面级虚拟机工具 - 即预先配置为运行组合kubernetes主节点和节点,足以运行真正的kubernetes工作负载,但在笔记本电脑上。

对于第二种情况,出于非生产目的,主机和辅助功能可以在一台机器上运行,或者一台主机可以与少量工作机一起使用。

生产kubernetes集群通常会有3台或5台或7台主机 - 虚拟机或裸机。需要多个主服务器来维护etcd的仲裁 - 其中kubernetes存储所有运行时状态 - 在机器故障的情况下。 3台主机允许1台主机在不中断集群的情况下发生故障。 5个主人将容忍2个主机故障等。

这些主服务器可以支持大量的工作机器 - 数十到数百个 - 运行容器工作负载。在生产环境中,人们不希望在主计算机上运行客户端工作负载。

2. How I can decide whether I need to choose single node and master 
in same machine. Or do I need to use Vms for different nodes?

参见上文 - 进行开发,请使用minikube。对于生产,如果您自己运行群集,则计划使用多个冗余主服务器,或使用云提供商管理的kubernetes产品。

3. How the Minikube and Kubespray is providing different methodology
in kubernetes architecture?

Minikube仅用于开发。 Kubespray是构建生产集群时提供一些自动化帮助的众多工具之一。 Kubespray的显着特点是使用Ansible进行机器设置和自动化。根据您对Ansible和/或其竞争对手的满意度和兴趣,这可能是也可能不合适。

4. Why have so many options when kubernetes is the product of a 
single source - google.

Kubernetes当然起源于谷歌,但现在有许多公司的数百名或更多工程师,包括微软,亚马逊,RedHat,甲骨文和大量小公司,积极致力于此。这是一个了不起的项目。

5. If I am installing kubeadm, kubernetes-cni and kubelet in my ubuntu 16.04
Can I initiate nodes in the same machine ?

Kubeadm是一个设置工具,而不是生产运行时工具,但是,您可以在与kubernetes master所需的位相同的计算机上运行容器。除了etcd,kubelet,apiserver,控制器管理器之外,你还需要运行Docker-Kubelet与Docker对话来安排容器。我只建议不要在这台机器上运行任何其他东西 - 不正确的配置会导致机器作为主人/工人的问题,因此任何其他工作都将丢失。