架构概览
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
Kubernetes
(通常称为 K8s) 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。Google 设计并捐赠给 Cloud Native Computing Foundation(CNCF,今属 Linux 基金会)来使用的。它旨在提供 “跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括 Docker 等。 -- 摘自维基百科 词条
Kubernetes 控制平面由一系列组件组成,可以运行在一个单独的主节点上,也可以分布部署以支持高可用集群,或者运行在 Kubernetes 之上。
kube-apiserver
etcd
etcd
是一个分布式 key-value 数据库,Kubernetes 用 etcd
作为后端数据存储。集群所有的持久性状态都存储在 etcd
实例中。etcd
提供了可靠配置数据存储。通过 watch
的支持,可以非常快速地通知协调组件变更。
kube-controller-manager
集群内部的管理控制中心,如 Node、Volume、Deployment 、Service 等资源管理,以及空间生命周期,Pod GC、节点 GC 等。
kube-scheduler
执行 pod 的相关调度。调度程序监视未调度的 pod,并根据所请求资源的可用性,服务质量要求、亲和性和反亲和性设置以及其它约束,通过 /binding
pod 子资源 API 绑定到相应节点。
Kubelet 是 Kubernetes 中最重要和突出的控制器,它是驱动容器执行层的 Pod 和 Node API 的主要实现者。没有这些 API,Kubernetes 只是一个后端由键值存储支持的面向 CRUD 的 REST 应用程序框架。
service 的抽象提供了一种在公共访问策略(如负载均衡)下对 pod 进行分组的方式。Service 通过创建 VIP,提供给客户端访问,再透明代理到 Service 中的 pods。每个节点都运行一个 kube-proxy 进程,该进程维护一套 iptables 规则,以捕获对服务 IPs 的访问,并重定向到正确的后端(1.12.x ipvs 正式 GA,性能相对 iptables 有很大的提升)。
附上华为关于 Service 性能这块的介绍,主要是对比 ipvs 和 iptables:
Kubernetes GUI 从体验上来说还是相对比较差的,可以使用一些开源的替代版本:
360 开源的 Kubernetes 多集群 Web UI
API server 提供 。API server 扮演集群网关的角色,它主要处理 REST 操作,验证并更新到 etcd
存储。
Kubelet 决定 Pod 是否可以运行在给定的节点上的最终决策者,不是调度器也或者 DaemonSets。此外,Kubelet 还集成了 资源监控 agent。
每一个节点运行一个容器运行时,负责下载镜像和运行容器。Kubelet 不集成容器运行时。作为替代,定义了一个 控制底层运行时并促进该层的可插拔性。当前支持的有 docker、、、。
提供集群内部解析和服务发现
提供内部服务七层代理到外部
替换 Heapster 监控
Kubernetes GUI
以及包括 等其它 组件。
Rancher 团队是做的比较早的,现在已经发布 2.x 版本了,支持中文,具体可以参考文档