初识Kubernetes 集群
要搭建k8s集群,从了解开始
原文链接:https://kubernetes.io/docs/concepts/overview/components/
什么叫Kubernetes
Kubernetes (K8s) 集群是一组节点,它们以高效、自动化、分布式和可扩展的方式运行容器化应用程序。K8s 集群允许工程师跨多个物理、虚拟和云服务器编排和监控容器。这将容器与底层硬件层分离,并实现敏捷和健壮的部署。一个 Kubernetes 集群由一组工作机器组成,称为节点,运行容器化应用程序。每个集群至少有一个工作节点,工作节点托管豆荚它们是应用程序工作负载的组成部分。这 控制平面管理集群中的工作节点和 Pod。在生产环境中,控制平面通常跨多台计算机运行,集群通常运行多个节点,提供容错和高可用性。
Kubernetes的组件
控制平面的组件对集群做出全局决策(例如,调度),以及检测和响应集群事件。
控制平面组件可以在集群中的任何机器上运行。但是,为简单起见,设置脚本通常在同一台机器上启动所有控制平面组件,并且不在这台机器上运行用户容器。
API 服务器是 Kubernetes 的一个组件控制平面公开 Kubernetes API。API 服务器是 Kubernetes 控制平面的前端。
Kubernetes API 服务器的主要实现是kube-apiserver。kube-apiserver 旨在水平扩展——也就是说,它通过部署更多实例来扩展。可以运行多个 kube-apiserver 实例并平衡这些实例之间的流量。
一致且高度可用的键值存储,用作 Kubernetes 的所有集群数据的后备存储。
监视新创建的控制平面组件豆荚没有分配节点,并选择一个节点让它们运行。
调度决策考虑的因素包括:个人和集体资源要求、硬件/软件/策略约束、亲和性和反亲和性规范、数据局部性、工作负载间干扰和截止日期。
一个 Kubernetes控制平面嵌入云特定控制逻辑的组件。云控制器管理器允许您将集群链接到云提供商的 API,并将与该云平台交互的组件与仅与您的集群交互的组件分开。
cloud-controller-manager 仅运行特定于您的云提供商的控制器。如果您在自己的场所运行 Kubernetes,或者在您自己 PC 内的学习环境中运行 Kubernetes,则集群没有云控制器管理器。
与 kube-controller-manager 一样,cloud-controller-manager 将几个逻辑上独立的控制循环组合成一个二进制文件,您可以将其作为单个进程运行。您可以水平扩展(运行多个副本)以提高性能或帮助容忍故障。
以下控制器可以具有云提供商依赖项:
- 节点控制器:用于检查云提供商以确定节点停止响应后是否已在云中删除
- 路由控制器:用于在底层云基础设施中设置路由
- 服务控制器:用于创建、更新和删除云提供商负载均衡器
节点组件
节点组件在每个节点上运行,维护运行的 pod 并提供 Kubernetes 运行时环境。
运行在每个代理上的代理节点在集群中。
kubelet 采用一组通过各种机制提供的 PodSpec,并确保这些 PodSpec 中描述的容器运行且健康。kubelet 不管理不是由 Kubernetes 创建的容器。
kube-proxy 是一个网络代理,运行在每个节点在您的集群中,实现 Kubernetes 的一部分服务概念。
kube-proxy在节点上维护网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。
kube-proxy 使用操作系统包过滤层(如果有并且可用)。否则,kube-proxy 会自行转发流量。
容器运行时是负责运行容器的软件。
Kubernetes 支持容器运行时,例如容器化,CRI-O,以及Kubernetes CRI(容器运行时接口)的任何其他实现。
插件使用 Kubernetes 资源 (守护程序集, 部署等)来实现集群功能。因为这些提供集群级别的功能,所以插件的命名空间资源属于kube-system
命名空间。
虽然其他插件不是严格要求的,但所有 Kubernetes 集群都应该有集群 DNS,因为许多示例都依赖它。
除了您环境中的其他 DNS 服务器之外,集群 DNS 是一个 DNS 服务器,它为 Kubernetes 服务提供 DNS 记录。
由 Kubernetes 启动的容器会自动在其 DNS 搜索中包含此 DNS 服务器。
Dashboard是用于 Kubernetes 集群的通用、基于 Web 的 UI。它允许用户对集群中运行的应用程序以及集群本身进行管理和故障排除。
Container Resource Monitoring在中央数据库中记录有关容器的通用时间序列指标,并提供用于浏览该数据的 UI。
集群级别的日志机制负责将容器日志保存到具有搜索/浏览界面的中央日志存储中。