--- title: Kubernetes 组件 content_template: templates/concept weight: 20 card: name: concepts weight: 20 --- {{% capture overview %}} 当你部署完 Kubernetes, 即拥有了一个完整的集群。 {{< glossary_definition term_id="cluster" length="all" prepend="一个 Kubernetes 集群包含">}} 本文档概述了交付正常运行的 Kubernetes 集群所需的各种组件。 这张图表展示了包含所有相互关联组件的 Kubernetes 集群。 ![Components of Kubernetes](/images/docs/components-of-kubernetes.png) {{% /capture %}} {{% capture body %}} ## 控制平面组件(Control Plane Components) 控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 `replicas` 字段时,启动新的 {{< glossary_tooltip text="pod" term_id="pod">}})。 控制平面组件可以在集群中的任何节点上运行。然而,为了简单起见,安装脚本通常会启动同一个计算机上所有控制平面组件,并且不会在计算机上运行用户容器。请参阅[构建高可用性集群](/docs/admin/high-availability/)示例对于多主机 VM 的安装。 ### kube-apiserver {{< glossary_definition term_id="kube-apiserver" length="all" >}} ### etcd {{< glossary_definition term_id="etcd" length="all" >}} ### kube-scheduler {{< glossary_definition term_id="kube-scheduler" length="all" >}} ### kube-controller-manager {{< glossary_definition term_id="kube-controller-manager" length="all" >}} 这些控制器包括: * 节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应。 * 副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod。 * 端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod)。 * 服务帐户和令牌控制器(Service Account & Token Controllers): 为新的命名空间创建默认帐户和 API 访问令牌. ### 云控制器管理器-(cloud-controller-manager) [cloud-controller-manager](/docs/tasks/administer-cluster/running-cloud-controller/) 运行与基础云提供商交互的控制器。cloud-controller-manager 二进制文件是 Kubernetes 1.6 版本中引入的 alpha 功能。 cloud-controller-manager 仅运行云提供商特定的控制器循环。您必须在 kube-controller-manager 中禁用这些控制器循环,您可以通过在启动 kube-controller-manager 时将 `--cloud-provider` 参数设置为 `external` 来禁用控制器循环。 cloud-controller-manager 允许云供应商的代码和 Kubernetes 代码彼此独立地发展。在以前的版本中,核心的 Kubernetes 代码依赖于特定云提供商的代码来实现功能。在将来的版本中,云供应商专有的代码应由云供应商自己维护,并与运行 Kubernetes 的云控制器管理器相关联。 以下控制器具有云提供商依赖性: * 节点控制器(Node Controller): 用于检查云提供商以确定节点是否在云中停止响应后被删除 * 路由控制器(Route Controller): 用于在底层云基础架构中设置路由 * 服务控制器(Service Controller): 用于创建、更新和删除云提供商负载均衡器 * 数据卷控制器(Volume Controller): 用于创建、附加和装载卷、并与云提供商进行交互以编排卷 ## Node 组件 节点组件在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行环境。 ### kubelet {{< glossary_definition term_id="kubelet" length="all" >}} ### kube-proxy {{< glossary_definition term_id="kube-proxy" length="all" >}} ### 容器运行环境(Container Runtime) {{< glossary_definition term_id="container-runtime" length="all" >}} ## 插件(Addons) 插件使用 Kubernetes 资源 ({{< glossary_tooltip term_id="daemonset" >}}, {{< glossary_tooltip term_id="deployment" >}}等) 实现集群功能。因为这些提供集群级别的功能,所以插件的命名空间资源属于 `kube-system` 命名空间。 所选的插件如下所述:有关可用插件的扩展列表,请参见[插件 (Addons)](/docs/concepts/cluster-administration/addons/)。 ### DNS 尽管并非严格要求其他附加组件,但所有示例都依赖[集群 DNS](/docs/concepts/services-networking/dns-pod-service/),因此所有 Kubernetes 集群都应具有 DNS。 除了您环境中的其他 DNS 服务器之外,集群 DNS 还是一个 DNS 服务器,它为 Kubernetes 服务提供 DNS 记录。 Cluster DNS 是一个 DNS 服务器,和您部署环境中的其他 DNS 服务器一起工作,为 Kubernetes 服务提供DNS记录。 Kubernetes 启动的容器自动将 DNS 服务器包含在 DNS 搜索中。 ### 用户界面(Dashboard) [Dashboard](/docs/tasks/access-application-cluster/web-ui-dashboard/) 是 Kubernetes 集群的通用基于 Web 的 UI。它使用户可以管理集群中运行的应用程序以及集群本身并进行故障排除。 ### 容器资源监控 [容器资源监控](/docs/tasks/debug-application-cluster/resource-usage-monitoring/)将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供用于浏览这些数据的界面。 ### 集群层面日志 [集群层面日志](/docs/concepts/cluster-administration/logging/) 机制负责将容器的日志数据保存到一个集中的日志存储中,该存储能够提供搜索和浏览接口。 {{% /capture %}} {{% capture whatsnext %}} * 进一步了解 [Nodes](/docs/concepts/architecture/nodes/) * 进一步了解 [kube-scheduler](/docs/concepts/scheduling/kube-scheduler/) * 阅读 etcd 官方[文档](https://etcd.io/docs/) {{% /capture %}}