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 中。

相关推荐
福大大架构师每日一题6 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
莹雨潇潇6 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
weixin_453965007 小时前
[单master节点k8s部署]30.ceph分布式存储(一)
分布式·ceph·kubernetes
weixin_453965007 小时前
[单master节点k8s部署]32.ceph分布式存储(三)
分布式·ceph·kubernetes
tangdou3690986557 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
Lansonli8 小时前
云原生(四十一) | 阿里云ECS服务器介绍
服务器·阿里云·云原生
Dylanioucn9 小时前
【分布式微服务云原生】掌握分布式缓存:Redis与Memcached的深入解析与实战指南
分布式·缓存·云原生
tangdou36909865510 小时前
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
docker·容器
later_rql10 小时前
k8s-集群部署1
云原生·容器·kubernetes
weixin_4539650012 小时前
[单master节点k8s部署]31.ceph分布式存储(二)
分布式·ceph·kubernetes