阅读时间: 3 分钟
Kubernetes是一个用于部署和管理容器的开源平台。它提供了一个容器运行时间、容器编排、以容器为中心的基础设施编排、自愈机制、服务发现和负载平衡。它的主要应用是跨主机集群的应用容器的部署、扩展、管理和组合。
但Kubernetes不仅仅是一个容器编排器。它可以被认为是云原生应用程序的操作系统,因为它是应用程序运行的平台,就像桌面应用程序在MacOS、Windows或Linux上运行一样。
Kubernetes架构
从高层次来看,Kubernetes架构由一个控制平面(主控)、一个用于保持集群状态一致的分布式存储系统(etcd),以及一些集群节点(Kubelets)。
Kubernetes控制平面


Kubernetes控制平面
控制平面是维护所有Kubernetes对象记录的系统。它持续管理对象的状态,对集群中的变化做出反应;它还致力于使系统对象的实际状态与期望状态相匹配。
控制平面由五个主要组件组成。
- Kube-apiserver
- Kube-controller-manager
- Kube-scheduler
- 等等
- 云控制器-管理器
Kube-apiserver
API服务器提供API以支持不同类型的应用程序的生命周期协调(扩展、更新等)。它还充当集群的网关,所以API服务器必须能被集群外的客户端访问。
Kube-controller-manager
控制器管理器是一个运行核心控制循环的守护进程,观察集群的状态,并做出改变以推动状态朝向期望的状态。云控制器管理器集成到每个公共云中,以优化对可用性区域、虚拟机实例、存储服务以及DNS、路由和负载平衡的网络服务的支持。
Kube-scheduler
调度器负责集群中各节点的容器调度;它考虑到各种约束条件,如资源限制或保证,以及亲和与反亲和规范。
Etcd
一致且高可用的键值存储,用作Kubernetes所有集群数据的备份存储。
如果你的Kubernetes集群使用etcd作为其备份存储,请确保你对这些数据有一个备份计划。
云控制器管理器
云控制器管理器让你把你的集群连接到云提供商的API中,并把与该云平台互动的组件与只与你的集群互动的组件分开。
注意: 如果你在自己的场所,或在自己的PC内的学习环境中运行Kubernetes,集群没有云控制器管理器。
以下控制器可以有云提供商的依赖性。
- 节点控制器。用于检查云提供商,以确定一个节点在停止响应后是否已在云中被删除
- 路由控制器。用于在底层云基础设施中设置路由
- 服务控制器。用于创建、更新和删除云提供商的负载均衡器
集群节点


Kubernetes集群节点
集群节点是运行容器的机器,由主节点管理。Kubelet是**Kubernetes中主要和最重要的控制器。**它负责驱动容器执行层,通常是Docker。
集群节点由三个主要部分组成。
- Kubelet
- Kube-proxy
- 容器运行时间
Kubelet
一个在集群中每个节点上运行的代理。它确保容器在一个Pod中运行。
Kubelet通过各种机制提供一组PodSpecs,并确保这些PodSpecs中描述的容器正在运行和健康。kubelet不会管理不是由Kubernetes创建的容器。
Kube-Proxy
Kube代理是一个网络代理,运行在集群的每个节点上,实现了Kubernetes服务概念的一部分。
Kube-proxy维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与你的Pod进行网络通信。
Kube-proxy使用操作系统的数据包过滤层,如果有且可用的话。否则,kube-proxy会自己转发流量。
容器运行时间
容器运行时是负责运行容器的软件。
Kubernetes支持几种容器运行时间。Docker、containerd、CRI-O,以及Kubernetes CRI(容器运行时接口)的任何实现。