Kubernetes是谷歌严格保密十几年的秘密武器—Borg的开源版本。Borg是谷歌的一个内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。
Kubernetes是一个完备的分布式系统支撑平台。Kubernetes具有完备的集群管理能力,包括多层次的安全保护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内置智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。
上图可以看到如下组件,使用特别的图标表示Service和Label:
-
Pod
-
Container(容器)
-
Label(标签)
-
Replication Controller(复制控制器)
-
Service(服务)
-
Node(节点)
-
Kubernetes Master(Kubernetes主节点)
集群组成
master: 管理节点,冗余
node: 工作节点
master核心组件
kube-apiserver 提供资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
kube-controller-manager 负责维护集群状态,比如故障检测、自动扩展、滚动更新等
kube-scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
etcd etcd的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转
node核心组件
kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
kube-proxy 负责为service提供cluster内部的服务发现和负载均衡
Container runtime 负责镜像管理以及Pod和容器的真正运行(CRI)
pod 支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间 通信和文件共享这种简单高效的方式组合完成服务
推荐的Add-ons
kube-dns/coredns 负责为整个集群提供DNS服务
Ingress Controller/traefik 为服务提供外网入口
Heapster 提供资源监控
Dashboard 提供GUI
Federation 提供跨可用区的集群
Fluentd-elasticsearch 提供集群日志采集、存储与查询