Kubernetes 系列(1) —— Kubernetes 的基本概念

2021-03-20 14:08:26 浏览数 (1)

Kubernetes 的基本概念

Kubernetes 架构是一个比较典型的二层架构和 server-client 架构。Master 作为中央的管控节点,会去与 Node 进行一个连接。

UI 和 CLI 等用户组件不能直接和 Node 进行连接,只能通过 Master 对 Node 进行操作。用户组件将命令传送给 Master,再由 Master 将组件下发给各个节点。

Master 节点

Kubernetes 里的 Master 指的是集群控制节点,每个 Kubernetes 集群需要有一个 Master 来负责整个集群的管理与控制。

Master 节点主要由四个部分组成

  • API Server
  • Scheduler 调度器
  • Controller-mannager 控制管理器
  • etcd

API Server API Server 主要用于处理 API 操作。Kubernetes 中所有组件都会和 API Server 进行连接。API Server 主要负责输出 RESTful 风格的 Kubernetes API,是发往集群的 REST 操作命令的接入点,并负责接收、校验并响应所有 REST 请求,结果状态被持久存储与 etcd 中。

Controller-mannager 控制管理器是 Kubernetes 里所有资源对象的自动化控制中心,具备管理生命周期功能和负责 API 业务逻辑

  • 生命周期功能:包括 Namspace 创建和生命周期,Event 垃圾回收、Pod 终止和垃圾回收、级联垃圾回收及 Node 垃圾回收。
  • API 业务逻辑:由ReplicaSet 执行 Pod 扩展

Scheduler Scheduler 主要负责对 Pod 进行调度,是 kubernetes 用于部署和管理大规模容器应用的平台。API Server 确认 Pod 对象请求后 便由 scheduler 根据集群内各节点的可用状态,以及容器运行资源需求作出调度决策。

etcd etcd 是一个分布式存储系统,用于保存 API Server 中的原信息。etcd 本身具有高可用性,用以保证整个 Master 组件的高可用性。

Node 节点

Node 节点时 Kubernetes 集群中工作负载节点,每个节点都会被 master 分配一些工作负载,当某个节点宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

Kubernetes 的 Node 是真正负责运行业务负载的,每个业务负载会以 Pod 的形式运行。一个 Pod 中会运行一个或多个容器,Kubelet 主要负责这些容器的运行。

Node 节点上的主要组件为

  • Kubelet
  • Container-Runtime 容器运行时
  • Kube-proxy

Kubelet Kubelet 是运行于工作节点上的守护进程,它从 API Server 接收关于 Pod 对象的配置信息,并确保他们期望状态。Kubelet 会在 API Server 上注册当前的工作节点,定期向 Master 汇报资源的使用状况。

Containe-Runtime 每个 Node 都会提供一个容器运行时环境,他负责镜像的下载和容器的运行,Kubelet 并未固定链接至某容器的运行时环境,而是以插件的方式载入配置的容器环境。

kube-proxy 每个工作节点都需要运行一个kube-proxy 守护进程,他能够 按需为 Service 资源对象生成 iptables 或 ipvs 规则,从而捕获访问当前 Service 的 ClusterIP 的流量并将其转发至正确的后端 Pod 对象。

pod

Pod 是 Kubernetes 的一个最小调度以及资源单元。Pod 资源对象是一种集合了一个或多个应用容器、存储资源、专用 IP 及支撑容器运行的其他选项的逻辑单元。即 Pod 内部的容器都是运行于同一局域网中的多个主机。

每个 Pod 都会有一个 Pause 容器,该容器可以视为 Pod 的根容器。Pause 容器能够代表整个 Pod 中容器组的状态,同时 Pod 中的业务容器共享 Pause 容器的 IP,也共享 Pause 容器挂接的 Volume。

Volume

Volume 是数据卷,是 Pod 中能够被多个容器访问的共享目录。Docker 的数据卷与 Pod 的数据卷有很多相似之处,但是 Pod 的数据卷的生命周期与 Pod 的生命周期相同,但是容器的数据卷却不是如此。

Deployment

Deployment 是定义在 Pod 上的一个抽象,是一个更新 RC 和 Pod 机制。Kubernetes 通过 Controller 帮助 Deployment 维护 Pod 中的容器数目,同时,他也会帮助 Deployment 自动恢复失败的 Pod。

Deployment 会创建 ReplicaSet ,再由 ReplicaSet 去创建 Pod。

Service

Service 定义了一个服务的访问入口地址,前端的 Pod 通过这个入口地址访问其背后的一组 pod 副本组成集群实例,Service 与 其后端的 Pod 是通过 Label Selector 来实现无缝对接的。RC 的作用实际上是保证 Service 的服务能力和服务质量始终处于预期标准。

Namespace

Namespace 在很多情况下用于实现多租户的资源隔离。同时 Namespace 还具有鉴权、资源管理等功能。Namespce 通过将集群内部的资源对象分配道不同的 Namespace 中,形成逻辑上分组的不同项目。

同一个 Namespace 中的资源需要命名的唯一性,不同的 Namespace 中的资源可以重名。

Kubernetes 集群启动后会创建一个名为 “default” 的命名空间,如果不进行特别说明,用户创建的 Pod、RC、Service 都会被系统创建到默认的 Namespace 中。

kubernetes 的架构图

0 人点赞