Kubernetes(K8s)简介

Kubernetes(K8s)是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。它提供了一个强大的基础架构,使得用户能够轻松地部署、管理和扩展容器化的应用程序,并能够有效地利用计算资源。

在 Kubernetes 中,Master 组件是集群的控制平面,负责管理整个集群的操作和状态。以下是 Kubernetes 中 Master 组件的主要组成部分:

  1. kube-apiserver(API 服务器):作为整个 Kubernetes 系统的入口,提供了 RESTful API,用于集群管理和控制。所有的集群操作,包括创建、更新和删除资源对象(如 Pod、Service、Deployment 等),都通过 kube-apiserver 进行。

  2. etcd(分布式键值存储):保存了整个集群的状态信息,包括配置数据、元数据、状态信息等。etcd 是一个分布式、高可用的键值存储系统,对于集群的正确运行至关重要。

  3. kube-scheduler(调度器):负责将新创建的 Pod 分配到集群中的节点上。kube-scheduler 根据一系列的策略和约束条件(如资源需求、硬件约束、亲和性和反亲和性等)选择最合适的节点,并将 Pod 调度过去。

  4. kube-controller-manager(控制器管理器):包含了多个控制器,用于监控集群中各种资源对象的状态,并根据期望状态和实际状态之间的差异进行调节。常见的控制器包括 ReplicaSet、Deployment、Service、Node 等。

  1. Node Controller:Node Controller 负责监视节点的状态,并在节点变为不可用或丢失时采取行动。它确保集群中的节点数量满足最小可用性要求,如果有节点故障,则会将该节点上的 Pod 调度到其他可用节点上。

  2. Replication Controller:Replication Controller 确保集群中指定数量的 Pod 副本保持运行。如果由于节点故障或其他原因导致 Pod 副本不足,Replication Controller 将启动新的 Pod 副本以恢复到期望的状态。

  3. Endpoints Controller:Endpoints Controller 负责将 Service 与其对应的 Pod IP 地址和端口进行关联。当创建或删除 Service 时,Endpoints Controller 更新相关的 Endpoints 对象,以便服务发现和负载均衡正常工作。

  4. Service Account & Token Controllers:Service Account Controller 管理 Service Account 对象,用于身份验证和授权。Token Controller 负责为新的 Service Account 创建访问令牌,以便 Pod 可以通过 API 访问其他资源。

  5. ResourceQuota Controller:ResourceQuota Controller 管理资源配额,限制每个命名空间中的资源使用量。它监控集群中的资源使用情况,并在达到配额限制时阻止进一步的资源分配。

  6. Namespace Controller:Namespace Controller 管理命名空间对象,负责创建、删除和更新命名空间,并确保命名空间的资源隔离和访问控制。

  7. Service Controller:Service Controller 监视 Service 对象的状态,并根据需要创建、更新或删除相关的负载均衡器。它确保 Service 对外提供的网络服务是可用的,并在需要时更新负载均衡规则。

在 Kubernetes 中,Node 组件是集群中工作节点的组成部分,负责运行应用容器、监控节点状态以及与 Master 组件进行通信。以下是 Kubernetes 中 Node 组件的主要组成部分:

  1. kubelet(Kubernetes 客户端):kubelet 是每个节点上的主要代理程序,负责管理节点上的容器和 Pod。它与 Master 节点的 kube-apiserver 通信,接收关于 Pod 的创建、更新和删除等指令,并确保节点上的容器状态与期望状态一致。

  2. kube-proxy(Kubernetes 代理):kube-proxy 负责维护节点上的网络规则,实现 Kubernetes 服务的负载均衡和服务发现功能。它监听 kube-apiserver 上的服务和端点的变化,并相应地更新节点上的网络规则。

  3. Container Runtime(容器运行时):Kubernetes 支持多种容器运行时,如 Docker、containerd、cri-o 等。这些容器运行时负责管理节点上的容器生命周期,包括镜像管理、容器创建、启动、停止和删除等操作。

  4. kubelet CRI 插件(可选):如果使用的容器运行时支持 Container Runtime Interface (CRI),则 kubelet 通过 CRI 插件与容器运行时进行通信,以管理容器的生命周期。

  5. CNI 插件(Container Network Interface,可选):用于配置和管理节点上的容器网络。CNI 插件负责为容器分配 IP 地址、创建网络命名空间、设置网络规则等,以确保容器之间可以相互通信。

  6. 容器存储接口(CSI,可选):如果需要在容器中使用持久化存储,可以通过容器存储接口(CSI)与存储后端进行交互。CSI 允许 Kubernetes 中的卷插件将持久化存储资源(如云盘、网络存储等)挂载到 Pod 中。

相关推荐
喂完待续15 小时前
【序列晋升】31 Spring Cloud App Broker 微服务时代的云服务代理框架
spring·spring cloud·微服务·云原生·架构·big data·序列晋升
pwj去战斗吧16 小时前
k8s+jenkins+harbor构建Devops平台
kubernetes·jenkins·devops
ChaITSimpleLove17 小时前
零代码入侵:Kubernetes 部署时自动注入 kube-system UID 到 .NET 9 环境变量
kubernetes·.net·环境变量·uid·kube-system·集群环境唯一id
無名之輩19 小时前
Nvidia Device Plugin入门三之volume mount策略
kubernetes
Lin_Aries_042120 小时前
使用阿里云容器镜像服务 ACR
linux·阿里云·docker·云原生·centos·云计算
Twilight-pending21 小时前
计算机系统性能、架构设计、调度策略论文分类体系参考
人工智能·云原生·分类·数据挖掘
zzz.1021 小时前
【Kubernetes知识点】CRD客户资源定义及Gateway
云原生·容器·kubernetes
AKAMAI1 天前
Queue-it 为数十亿用户增强在线体验
人工智能·云原生·云计算
逍遥浪子~1 天前
docker实践(一)
运维·docker·容器
AI云原生1 天前
如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器的教程
运维·docker·云原生·容器·serverless·firefox·kubeless