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:
- Nodes and their communication with the control plane.
- Kubernetes controllers.
- kube-scheduler which is the default scheduler for Kubernetes.
- Etcd's official documentation.
- Several container runtimes in Kubernetes.
- Integrating with cloud providers using cloud-controller-manager.
- kubectl commands.
- 登录 发表评论
- 11 次浏览
Tags
最新内容
- 2 days 7 hours ago
- 2 days 9 hours ago
- 2 days 9 hours ago
- 5 days 1 hour ago
- 5 days 8 hours ago
- 5 days 9 hours ago
- 5 days 9 hours ago
- 5 days 9 hours ago
- 1 week 2 days ago
- 1 week 2 days ago