跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

当你部署Kubernetes时,你会得到一个集群。

Kubernetes集群由一组运行容器化应用程序的工作机器(称为节点)组成。每个集群至少有一个工作节点。

工作节点承载作为应用程序工作负载组件的Pod。控制平面管理集群中的工作节点和Pod。在生产环境中,控制平面通常运行在多台计算机上,集群通常运行多个节点,从而提供容错性和高可用性。

本文档概述了一个完整且可工作的Kubernetes集群所需的各种组件。


Kubernetes集群的组件

控制平面组件


控制平面的组件做出关于集群的全局决策(例如,调度),以及检测和响应集群事件(例如,当部署的副本字段不满足时启动新的pod)。

控制平面组件可以在集群中的任何机器上运行。但是,为了简单起见,设置脚本通常在同一台机器上启动所有控制平面组件,而不在此机器上运行用户容器。有关跨多台机器运行的控制平面设置示例,请参阅使用kubeadm创建高可用集群。

kube apiserver


API服务器是Kubernetes控制平面的一个组件,用于公开Kubernetesnenenebb API。API服务器是Kubernetes控制平面的前端。

Kubernetes API服务器的主要实现是kube-apiserver。kube-apiserver被设计为水平扩展——也就是说,它通过部署更多实例来扩展。您可以运行几个kube-apiserver实例,并平衡这些实例之间的流量。

etcd


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

如果您的Kubernetes集群使用etcd作为其备份存储,请确保您有数据备份计划。

您可以在官方文档中找到有关etcd的深入信息。

kube调度器(kube-scheduler)


控制平面组件,用于监视新创建的没有指定节点的Pod,并选择要在其上运行的节点。

调度决策考虑的因素包括:单个和集体资源需求、硬件/软件/策略约束、相关性和反相关性规范、数据局部性、工作负载间干扰和截止日期。

kube控制管理器 (kube-controller-manager)


运行控制器进程的控制平面组件。

从逻辑上讲,每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译成一个二进制文件,并在一个进程中运行。

有许多不同类型的控制器。例如:

  • 节点控制器:负责节点故障时的通知和响应。
  • 作业控制器:观察表示一次性任务的作业对象,然后创建Pod来运行这些任务直至完成。
  • EndpointSlice控制器:填充EndpointSlice对象(提供服务和Pods之间的链接)。
  • ServiceAccount控制器:为新命名空间创建默认的ServiceAccounts。
     

以上内容并非详尽无遗。

云控制器管理器


一个嵌入云特定控制逻辑的Kubernetes控制平面组件。云控制器管理器允许您将集群链接到云提供商的API,并将与该云平台交互的组件与仅与集群交互的组件分离。
云控制器管理器仅运行特定于云提供商的控制器。如果您在自己的场地上运行Kubernetes,或者在自己电脑内的学习环境中运行,则集群没有云控制器管理器。

与kube控制器管理器一样,云控制器管理器将几个逻辑独立的控制循环组合成一个二进制文件,作为一个进程运行。您可以水平扩展(运行多个副本)以提高性能或帮助容忍故障。

以下控制器可以具有云提供程序依赖项:

  • 节点控制器:用于检查云提供程序,以确定节点在停止响应后是否已在云中删除
  • 路由控制器:用于在底层云基础设施中设置路由
  • 服务控制器:用于创建、更新和删除云提供商负载均衡器
     

节点组件(Node Components)


节点组件在每个节点上运行,维护运行的pod并提供Kubernetes运行时环境。

kubelet


在群集中每个节点上运行的代理。它确保容器在Pod中运行。

kubelet采用一组通过各种机制提供的PodSpec,并确保这些PodSpecs中描述的容器运行正常。kubelet不管理不是由Kubernetes创建的容器。

kube代理(kube-proxy)


kube-proxy是在集群中的每个节点上运行的网络代理,实现了Kubernetes服务概念的一部分。

kube代理维护节点上的网络规则。这些网络规则允许通过集群内外的网络会话与Pods进行网络通信。

kube代理使用操作系统数据包过滤层(如果有),并且它是可用的。否则,kube代理会自己转发流量。

容器运行时(Container runtime)


一个使Kubernetes能够有效运行容器的基本组件。它负责管理Kubernetes环境中容器的执行和生命周期。

Kubernetes支持容器运行时,如containerd、CRI-O和KubernetesCRI(容器运行时接口)的任何其他实现。

加载项(Addons)


插件使用Kubernetes资源(DaemonSet、Deployment等)来实现集群功能。因为它们提供了集群级的功能,所以插件的名称空间资源属于kube系统名称空间。

选定的插件如下所述;有关可用加载项的扩展列表,请参阅加载项。

域名服务器


虽然其他插件不是严格要求的,但所有Kubernetes集群都应该有集群DNS,因为许多示例都依赖于它。

集群DNS是一个DNS服务器,除了您环境中的其他DNS服务器之外,它还为Kubernetes服务提供DNS记录。

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

Web UI(仪表板)


Dashboard是用于Kubernetes集群的通用、基于web的UI。它允许用户管理和排除集群中运行的应用程序以及集群本身的故障。

容器资源监控


容器资源监视在中央数据库中记录有关容器的通用时间序列度量,并提供用于浏览该数据的UI。

群集级日志记录


集群级日志记录机制负责将容器日志保存到具有搜索/浏览界面的中央日志存储中。

网络插件


网络插件是实现容器网络接口(CNI)规范的软件组件。它们负责将IP地址分配给pod,并使它们能够在集群内相互通信。

接下来是什么

Learn more about the following:

本文地址
最后修改
星期日, June 2, 2024 - 18:10

Tags

Article