Advertisement

k8s 基础概念

阅读量:

Kubernetes也被称作K8S(这一叫法源自字母k与s之间恰存八空格),主要用于自动部署与扩展以及管理容器化应用的开源系统

Kubernetes 组件

当你部署完 Kubernetes,便拥有了一个完整的集群。

一组作业机器被称作节点,并将容器化应用程序注入其中。每个集群必须至少包含一个作业节点。

工作节点会被托管Pod;同时Pod充当了应用负载的组件。 控制平面负责管理集群内的所有工作节点以及Pod。 在生产环境中中,在实际部署中控制平面往往会分布在多台计算机上;同时每个集群一般配置了若干个 worker node(即 worker 节点),从而实现系统的容错性和高可用性。

本文档概述了一个正常运行的 Kubernetes 集群所需的各种组件。

Kubernetes 的组件

Kubernetes 集群的组件

控制平面组件(Control Plane Components)

控制平面组件将负责为集群实施全局决策,并举例说明其行为(如资源调度)。 同时能够检测并响应集群事件,在当集群部署配置中 replicas 字段未达到预期值时,则会导致新的 pods 被启动。

控制平面组件可以在集群中的任意节点运行。然而通常设置脚本会将所有控制平面组件部署在同一台计算设备上并且不会在该计算设备上执行用户的容器。

kube-apiserver

API 服务器是 Kubernetes 控制平面的一个重要组成部分,在该部分中不仅提供了Kubernetes API服务还负责接收并处理来自客户端的请求。从架构角度来看API服务器位于Kubernetes控制平面的前端部分。

Kubernetes API 服务器的核心功能由 kube-apiserver 实现。该系统采用水平伸缩设计策略,在部署多实例服务器时能够自动调整资源分配。通过多实例服务器的部署和负载均衡管理模块的支持,在各个节点之间实现了流量的有效分配。

etcd

一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。

如果你的 Kubernetes 集群采用 etcd 作为后端数据库,请建议采取措施制定一份全面的数据备份方案。

kube-scheduler

kube-scheduler 负责作为控制平面的核心组件。它监控所有新创建且尚未分配资源到Compute Nodes的Pods,并通过优化资源分配到合适的位置来提升系统效率。

在调度决策过程中需综合考虑Pod资源需求与Pod集合的整体资源需求;同时需满足软硬件环境限制与策略执行要求;还需遵循系统间互操作性原则与反向互操作性原则;此外还需关注数据存储位置以及各工作负载之间的相互影响因素与最终截止时间要求。

kube-controller-manager

kube-controller-manager 是控制平面的组件, 负责运行控制器进程。

从逻辑上讲,在实现过程中每个控制器都是一个独立的进程;为了以降低复杂性为目标,在实现过程中它们被整合到同一个可执行文件中并在同一个进程中运行

这些控制器包括:

  • 节点控制器(Node Controller):主要负责在节点出现问题时进行通知和应对
    • 任务控制器(Job Controller):跟踪表示一次性任务的 Job 对象,并生成Pods来执行这些任务直至完成
    • 端点分片控制器(EndpointSlice controller):填充表示端点分片的EndpointSlice对象,并提供Service与Pod之间的连接
    • 服务账号控制器(ServiceAccount controller):生成默认的服务账号用于新的命名空间

Node 组件

节点组件将在所有节点上自动运行,并持续监控 Pod 的运行状态以提供 Kubernetes 运行环境。

kubelet

kubelet 将会负责管理集群中的每一个 node instance,并确保所有的 containers 都被 Pod 包含或管理。

kubelet 接收一批通过多种渠道获得的一组PodSpecs文档集合,并对其中所描述的所有容器均运行良好且状态正常予以保证。同时该系统明确限定其管理权限仅限于Kubernetes官方认证的应用程序和服务资源范畴之外的内容

kube-proxy

kube-proxy 负责在每个节点(node)上运行网络代理功能,并构成 Kubernetes 服务的基础架构。

kube-proxy 负责制定和管理节点上的相关网络策略;这些策略支持通过相应的网络会话机制与Pod进行通信;无论是来自集群内部还是外部的网络流量都会被处理。

如果操作系统的数据包过滤机制被支持,则 kube-proxy 将利用该机制来进行网络规则的配置;反之,则只负责流量转发。

容器运行时(Container Runtime)

容器运行环境是负责运行容器的软件。

Kubernetes 兼容多种容器运行环境。其中一种常见的具体实现包括 containerd 和 CRI-O 以及 Kubernetes 提供的其他相关扩展。

插件(Addons)

该插件具体使用 Kubernetes 的 DaemonSet 和 Deployment 等资源进行集群功能的具体实现。由于这些插件负责提供集群级别的功能,在该插件中所涉及的命名空间域的资源都归属于 kube-system 命名空间。

下面描述众多插件中的几种。有关可用插件的完整列表。

DNS

虽然其他插件并非非必要组件,但通常Kubernetes集群都配备集群DNS服务,因为许多示例依赖DNS服务

集群DNS是一种DNS服务器,在环境中的其他DNS服务器的帮助下运作,并负责向Kubernetes服务分配DNS记录。

Kubernetes 启动的容器自动将此 DNS 服务器包含在其 DNS 搜索列表中。

全部评论 (0)

还没有任何评论哟~