什么是Kubernetes?
Kubernetes是用于Docker容器的开源编排系统。 它管理跨多个主机的容器化应用程序,并提供用于部署,维护和扩展应用程序的基本机制。
它允许用户为所需状态提供声明性原语,例如“需要运行5台WildFly服务器和1台MySQL服务器”。 Kubernetes的自我修复机制(例如自动重新启动,重新调度和复制容器)可确保满足此状态。 用户只需定义状态,Kubernetes可以确保在集群上始终满足该状态。
它与Docker有何关系?
Docker提供了容器的生命周期管理。 Docker映像定义了运行时容器的构建时间表示。 在这些容器上有用于启动,停止,重新启动,链接和执行其他生命周期方法的命令。 容器可以按照技术提示#66所示进行手动链接,也可以按照技术提示#68所示使用Fig进行编排。 容器可以在多个主机上运行,如技术提示#69所示 。
Kubernetes使用Docker打包,实例化和运行容器化的应用程序。
Kubernetes如何简化容器化应用程序的部署?
一个典型的应用程序将在多个主机上具有一组容器。 例如,您的Web层(Apache或Undertow )可能在一组容器上运行。 同样,您的应用程序层( WildFly )将在另一组容器上运行。 Web层需要将请求委派给应用程序层。 在某些情况下,或者至少在一开始,您可能会将Web和应用程序服务器打包在同一组容器中。 无论如何,数据库层通常都将在单独的层上运行。 这些容器需要彼此通信。 使用上述任何解决方案都需要编写脚本来启动容器,并在出现故障时进行监视/弹跳。 定义应用程序状态后,Kubernetes会为用户完成所有这些操作。
Kubernetes与云无关。 这使其可以在公共,私有或混合云上运行。 任何云提供商,例如Google Cloud Engine。 OpenShift v3将基于Docker和Kubernetes 。 它甚至可以在各种虚拟机管理程序上运行,例如VirtualBox 。
Kubernetes的关键概念
在很高的层次上,有三个关键概念:
- Pod是可以创建,计划和管理的最小可部署单元。 它是属于应用程序的容器的逻辑集合。
- 主节点是提供集群统一视图的中央控制点。 有一个控制多个小兵的主节点。
- Minion是一个工作节点,负责按主节点的委托运行任务。 奴才可以运行一个或多个吊舱。 它在容器化环境中提供了特定于应用程序的“虚拟主机”。
一幅图片总值一千个单词,因此这是Kubernetes的高级逻辑框图:
在50,000英尺的视野之后,让我们在30,000英尺处低一点,看看Kubernetes如何使所有这些事情发生。 Master和Minion的一些关键组件可以实现这一目标。
- Replication Controller是Master上的一种资源,可确保请求的Pod数量始终在奴才上运行。
- 服务是主服务器上的一个对象,可在一组复制的Pod之间提供负载平衡。
- 标签是Replication Watch Controller用于服务发现的分布式可监视存储中的任意键/值对。
- Kubelet :每个小兵都运行服务来运行容器并由主服务器进行管理。 除Docker外,Kubelet是安装在其中的另一项关键服务。 它将容器清单读取为描述Pod的YAML文件。 Kubelet确保在pod中定义的容器已启动并继续运行。
- Master提供RESTful Kubernetes API ,用于验证和配置Pod,Service和Replication Controller。
Kubernetes设计概述提供了所有关键组件的精彩摘要,如下所示。
大量的文档已经可以在github.com/GoogleCloudPlatform/kubernetes/tree/master/docs上找到 。 随后的博客将解释Kubernetes版本的Tech Tip#66 。
OpenShift v3使用Kubernetes和Docker提供更高级别的PaaS平台。
有趣的是,“ Kubernetes”实际上是一个希腊语单词κυβερνήτης,意思是“船舵手”。 从这个意义上讲,Kubernetes为您的Docker容器提供了该规则。
翻译自: https://www.javacodegeeks.com/2015/01/key-concepts-of-kubernetes.html