Kubernetes

Kubernetes架构简介

2019-12-11  本文已影响0人  王勇1024

Kubernetes是什么?

我们首先看一下“维基百科”对Kubernetes的说明:

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。该系统由 Google设计并捐赠给Cloud Native Computing Foundation(CNCF,今属[Linux基金会])来使用。
它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。CNCF于2017年宣布首批Kubernetes认证服务提供商(KCSPs),包含IBM、华为、MIRANTIS等服务商。

Kubernetes能做什么?

Kubernetes 的主要优势在于,它提供了一个便捷有效的平台,让您可以在物理机和虚拟机集群上调度和运行容器。更广泛一点说,它可以帮助您在生产环境中,完全实施并依托基于容器的基础架构运营。由于 Kubernetes 的实质在于实现操作任务自动化,所以您可以将其它应用平台或管理系统分配给您的许多相同任务交给容器来执行。

利用 Kubernetes,您能够达成以下目标:

Kubernetes架构图

上面描述了Kubernetes这么多强大的功能,相信你已经迫不及待想对Kubernetes有更深入的了解了。我们就先从下面的这张图来了解一下Kubernetes的整体架构吧。

iKubernetes架构图

每一个 Kubernetes 就集群都由一组 Master 节点和一系列的 Worker 节点组成,其中 Master 节点主要负责存储集群的状态并为 Kubernetes 对象分配和调度资源。

Master

作为管理集群状态的 Master 节点,它主要负责接收客户端的请求,安排容器的执行并且运行控制循环,将集群的状态向目标状态进行迁移,Master 节点内部由三个组件构成:

Worker

其他的 Worker 节点负责运行应用,它主要由 kubelet 、Container runtime 和 kube-proxy 三部分组成:

etcd

etcd 是一个分布式的一个存储系统,kube-apiserver 中所需要的这些原信息都被放置在 etcd 中,etcd 本身是一个高可用系统,通过 etcd 保证整个 Kubernetes 的 Master 组件的高可用性。etcd可以以组件的形式部署在Master节点,也可以以高可用的形式单独部署在集群外。

kubectl

kubectl 是Kubernetes集群的命令行管理工具,通过kubectl命令可以实现与Kubernetes集群的交互。

除了核心组件,还有一些推荐的 Add-ons:

kube-dns 负责为整个集群提供 DNS 服务
Ingress Controller 为服务提供外网入口
Heapster 提供资源监控
Dashboard 提供 GUI
Federation 提供跨可用区的集群
Fluentd-elasticsearch 提供集群日志采集、存储与查询

上一篇下一篇

猜你喜欢

热点阅读