2025,每天10分钟,跟我学K8S(三)- k8s 重要概念
在此之前,已经实际操作了一下真实的K8S环境,但是很多名词和操作都不知道到底是什么东西。所以必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石。
下图来自官网,为k8s的一个集群组件概括

Kubernetes 集群由控制平面和一个或多个工作节点组成。以下是主要组件的简要概述:
一、Master组件:
kube-apiserver
API Server 是 Kubernetes 最核心的组件之一,它提供了 Kubernetes 集群中各个组件之间的通信和管理接口,所有操作都需要通过 API Server 发起和处理。当用户使用 kubectl 命令或者其他 Kubernetes 客户端工具时,实际上是通过 API Server 和集群进行交互的。
ETCD
Etcd 是 Kubernetes 集群中的分布式键值存储系统,用于保存集群中的所有状态信息和元数据。所有与 Kubernetes 集群相关的信息,包括 Pod、Service、Deployment 等对象的创建、更新和删除等操作,都将被记录在 Etcd 中。这样可以使得 Kubernetes 系统具有高可用性和复原能力,并且允许多个 Master 节点之间进行数据同步和共享。
kube-scheduler
Scheduler 是 Kubernetes 集群中的另一个重要组件,主要负责根据集群中各个节点的负载情况,以及用户的调度策略,将新创建的 Pod 分配到合适的节点上。Scheduler 会根据 Pod 的资源需求、节点的资源情况、节点之间的网络距离等因素进行智能调度,从而实现负载均衡和资源最大化利用的目标。
kube-controller-manager
Controller Manager 是 Kubernetes 集群中的另一个核心组件,它负责监控和维护集群中所有资源对象的状态,以及进行自动化控制和管理操作。Controller Manager 中包含多个控制器,每个控制器负责监控和维护一种资源对象的状态,如 Deployment、ReplicaSet、DaemonSet 等,同时根据用户的需求,自动进行相应的容器调度、扩容、缩容等操作
二、Node 组件
在每个节点上运行,维护运行的 Pod 并提供 Kubernetes 运行时环境:
kubelet
kubelet 是运行在每个 Node 节点上的代理程序,它负责与 Master 节点上的 API Server 进行通信,并根据 Master 节点下发的指令,调度和管理本地节点上的容器。kubelet 可以监控本地节点上的容器状态,如启动、停止、健康状况等,并定期向 Master 节点报告节点状态信息
kube-proxy(可选)
kube-proxy 是 Kubernetes 集群中的网络代理组件,它主要负责实现集群内 Service 的负载均衡和访问控制等功能。每个 Node 节点上都会部署一个 kube-proxy 组件来负责处理该节点上所有 Service 的流量转发和路由等操作。
容器运行时(Container runtime)
容器运行时是 Kubernetes 中用于运行容器的底层组件,它负责将容器镜像转换为可以运行的进程,并提供容器的隔离、资源管理和网络管理等功能。Kubernetes 支持多种容器运行时,如 Docker、CRI-O、containerd 等,用户可以根据实际需求选择合适的容器运行时。容器运行时通常与 kubelet 紧密集成,在 Kubernetes 集群中发挥着至关重要的作用。。
插件(Addons)
插件扩展了 Kubernetes 的功能。一些重要的例子包括:
DNS
Kubernetes DNS是 Kubernetes 集群中的域名解析系统,它为集群中所有容器提供了简单而可靠的 DNS 服务。通过 Kubernetes DNS,用户可以使用容器名称或 Service 名称等别名方式,轻松地访问到集群中运行的各种应用程序和服务。
Web 界面(Dashboard)
Dashboard是 Kubernetes 集群中的 Web 界面管理工具,它提供了一个易于使用和定制化的界面,让用户可以在不熟悉命令行操作的情况下,轻松地监控和管理集群中的资源对象和应用程序。Dashboard 支持多种自定义插件和主题,用户可以根据自己的需要进行定制和扩展。
容器资源监控(Heapster)
Heapster是 Kubernetes 集群中的监控工具,它可以收集和分析各种容器和节点的性能指标,并将结果汇总和展示给用户。Heapster 支持多种存储后端,如 InfluxDB、ElasticSearch 等,用户可以选择适合自己的存储方式。
集群层面日志
用于将容器日志保存到中央日志存储
三、k8s的核心概念
Kubernetes 是一个基于容器化技术的分布式应用程序编排平台,其核心概念主要包括 Pod、Service、Namespace、Deployment、StatefulSet、DaemonSet、Job 和 CronJob 等。
1.Pod
Pod 是 Kubernetes 中最小的调度和管理单元,它代表着集群中运行的一个或多个容器实例。在一个 Pod 中,所有容器共享相同的网络命名空间、进程命名空间和存储卷,因此它们可以互相通信和共享数据。Pod 可以通过控制器进行创建、扩缩容和更新等操作。
1) 容器
Pod 中的容器是指实际运行业务逻辑的进程,可以使用 Docker、CRI-O、containerd 等各种容器运行时来运行。每个 Pod 中可以包含一个或多个容器,这些容器可以通过共享网络和存储资源,实现相互通信和协作。
2)生命周期
Pod 的生命周期包括 Pending、Running、Succeeded、Failed 和 Unknown 等几个阶段。在创建一个 Pod 后,它会首先进入 Pending 阶段,等待被调度到某个节点上。如果调度成功,Pod 就会进入 Running 阶段,开始正常运行。如果 Pod 运行失败或者所有容器都退出了,Pod 就会进入 Failed 或 Succeeded 阶段。如果调度和运行过程中出现了异常,Pod 就会进入 Unknown 阶段。
3)Pod 网络
Pod 网络是指 Kubernetes 中用于实现容器之间通信的网络环境。Pod 中的每个容器都有一个独立的 IP 地址,但它们共享相同的网络命名空间和端口空间,因此可以互相访问和通信。Kubernetes 支持多种网络插件和方案,如 Flannel、Calico、Cilium 等,用户可以根据实际情况进行选择和配置。
2.Service
Service 是 Kubernetes 中用于提供内部负载均衡和服务发现的组件,它可以将同一个应用程序的不同副本暴露在集群内部,并为这些副本提供唯一的虚拟 IP 地址和 DNS 域名。Service 可以通过控制器进行创建、更新和删除操作。
1) ClusterIP
ClusterIP 是 Service 的默认类型,它会分配一个集群内部的虚拟 IP 地址,并将该地址绑定到 Service 上。当其他 Pod 或容器需要访问 Service 时,只需要使用该虚拟 IP 地址即可。
2) NodePort
NodePort 是一种扩展 ClusterIP 的功能,它会在每个节点上分配一个唯一的端口号,并将该端口号映射到 Service 上。当其他节点或外部网络需要访问 Service 时,只需要使用该节点 IP 地址和映射的端口号即可。
3) LoadBalancer
LoadBalancer 是一种针对外部流量的负载均衡方案,它可以通过云服务商提供的负载均衡器或自定义的负载均衡器,将流量从外部网络转发到集群内部的 Service 上。
3.Namespace
Namespace 是 Kubernetes 中用于隔离和管理资源对象的逻辑分区,它可以帮助用户将不同的资源对象归类、管理和隔离。Kubernetes 中默认存在一些 Namespace,如 default、kube-system 等,用户也可以根据需要创建自定义的 Namespace。
4.Deployment
Deployment 是 Kubernetes 中用于管理 Pod 副本集的控制器,它可以控制一组 Pod 的创建、扩缩容和更新等操作。Deployment 支持滚动更新和回滚等功能,可以实现无缝的应用程序版本升级。
5.StatefulSet
StatefulSet是 Kubernetes 中用于管理有状态应用程序副本集的控制器,它可以为每个 Pod 分配唯一的标识符和稳定的网络名称,保证每个 Pod 的唯一性和可访问性。StatefulSet 还支持有序部署和扩缩容等功能,可以实现高可靠性的有状态应用程序部署和管理。
6.DaemonSet
DaemonSet 是 Kubernetes 中用于在每个节点上运行一组 Pod 的控制器,它通常用于运行系统级别的服务或代理程序等,在每个节点上保证资源对象的一致性和状态。
7.Job
DaemonSet 是 Kubernetes 中用于在每个节点上运行一组 Pod 的控制器,它通常用于运行系统级别的服务或代理程序等,在每个节点上保证资源对象的一致性和状态。
8.CronJob
CronJob 是 Kubernetes 中用于周期性执行任务的控制器,它可以根据用户定义的时间表,自动创建和删除相应的 Job 对象。CronJob 还支持任务成功和失败的检测和处理等功能。
浙公网安备 33010602011771号