Kubernetes 核心概念梳理:从零开始的容器编排之旅

发布时间:2026/6/9 8:08:31

Kubernetes 核心概念梳理:从零开始的容器编排之旅 Kubernetes 核心概念梳理从零开始的容器编排之旅Kubernetes 核心概念梳理从零开始的容器编排之旅1. 先从一个场景讲起为什么要用 K8s2. 从一个最简单的比喻开始3. K8s 的核心组件重点3.1 Cluster —— 整个数据中心3.2 Master主节点—— 大脑3.3 Node工作节点—— 干活的人4. 核心资源对象你看得见摸得着的概念4.1 Pod —— 最小调度单位4.2 Deployment —— 管理 Pod 的“经理”4.3 Service —— 给 Pod 一个固定的“门牌号”4.4 Ingress —— “七层路由网关”4.5 Namespace —— 虚拟隔离墙5. 一个请求从外到内要经过哪些 K8s 组件6. 其他常见但重要的概念简单提一下7. 小白常见疑问解答Q1K8s 和 Docker 是什么关系Q2我必须自己搭建 K8s 集群吗Q3K8s 学习曲线是不是很陡8. 一个最小可行的学习路径写在最后Kubernetes 核心概念梳理从零开始的容器编排之旅一篇写给小白的 Kubernetes 入门指南用通俗的语言讲清楚 K8s 是什么、能干什么、以及它最核心的那些组件。1. 先从一个场景讲起为什么要用 K8s假设你开发了一个 Web 应用它跑在一个 Docker 容器里。一开始很顺利用户也不多。但后来用户量暴涨一个容器扛不住了你需要启动10 个、100 个容器。这时候问题就来了容器应该分布在哪些服务器上某个容器挂了谁来自动重启它流量来了怎么平均分给这些容器需要发布新版本怎么做到不停机更新容器越来越多怎么让它们互相发现、通信Kubernetes简称 K8s因为 K 和 s 之间有 8 个字母就是来解决这些问题的。它是一个开源的容器编排平台帮助你自动化管理大量容器就像一个“容器的总管家”。一句话你只管把应用塞进容器K8s 帮你管好它们的生死、分布、网络、存储、升级。2. 从一个最简单的比喻开始想象你要经营一家快递分拣中心一台台物理服务器 一个个分拣车间有电、有网、有空间。容器 一个分拣工人每个人做一件具体的事比如扫码、打包。Kubernetes 这个分拣中心的总调度系统它知道哪个车间还有空位资源充足。哪个工人累了容器挂了需要换一个。快递来了用户请求应该分配给哪个工人。某类工人不够了自动多招几个扩容。你不需要亲自去盯着每个工人K8s 帮你自动安排一切。3. K8s 的核心组件重点3.1 Cluster —— 整个数据中心一个 K8s集群Cluster就是由多台机器组成的一个统一资源池。你可以把集群想象成上面说的“整个快递分拣中心”。集群由两类机器组成3.2 Master主节点—— 大脑Master 是整个集群的控制中心它不跑你的业务容器而是负责调度、监控、管理。它里面装着好几个关键组件API Server所有操作的入口。你敲的kubectl命令最终都发给它。Scheduler调度器决定新创建的容器应该放在哪个 Node 上。Controller Manager控制器管理器运行各种“守护线程”确保集群的状态符合你的期望比如保证始终有 3 个副本在跑。etcdK8s 的“数据库”存储集群的所有配置和状态信息键值存储必须做备份。3.3 Node工作节点—— 干活的人Node 就是跑业务容器的机器物理机或虚拟机。每个 Node 上都运行着kubeletNode 的“代理人”负责跟 Master 通信执行 Master 下发的任务启动/停止容器。kube-proxy管理网络规则让服务可以访问到容器。容器运行时比如 Docker、containerd真正跑容器的引擎。你可以随时向集群添加新的 NodeK8s 会自动利用它们。4. 核心资源对象你看得见摸得着的概念在 K8s 里你通过YAML 文件描述你想要的状态然后交给 Master 去实现。下面是最常用的几个资源4.1 Pod —— 最小调度单位Pod 是一组通常是一个紧密相关的容器的组合。它们是 K8s 里最小、最简单的部署单元。一个 Pod 里的容器共享同一个网络 IP、存储卷可以用localhost互相访问。大多数时候一个 Pod 只跑一个主容器比如你的应用。比喻Pod 就像一个工人容器加上他的工具包存储卷、网络配置。你只跟工人打交道不需要关心他具体在哪个车间Node。关键特性Pod 是“临时的”它可能随时被销毁、重建比如 Node 挂了、升级版本。所以不要认为 Pod 是稳定的——它的 IP 会变。4.2 Deployment —— 管理 Pod 的“经理”你一般不直接创建 Pod而是通过Deployment来管理。Deployment 可以指定你想跑多少个副本比如 3 个相同的 Pod。滚动升级更新镜像版本时一次替换一个 Pod全程不停机。回滚新版本出问题了一键回到旧版本。自动重启如果某个 Pod 挂了Deployment 会重新拉起一个。比喻Deployment 就是一个小组长他确保组里始终有 3 个工人Pod在干活。工人病倒了他立刻招新工人补上。常用命令示例不是重点了解即可apiVersion:apps/v1kind:Deploymentmetadata:name:my-appspec:replicas:3# 我要 3 个副本selector:matchLabels:app:my-apptemplate:# Pod 的模板metadata:labels:app:my-appspec:containers:-name:my-containerimage:nginx:1.204.3 Service —— 给 Pod 一个固定的“门牌号”因为 Pod 的 IP 会变化你不可能让前端硬编码后端的 Pod IP。Service就是来解决这个问题的Service 给一组 Pod通过标签选择器选中提供一个固定的虚拟 IP和 DNS 名称。只要通过 Service 访问请求会自动负载均衡到后面的 Pod 上。比喻Pod 就像外卖骑手不断换人Service 就是餐厅的固定电话。你只管打这个电话总能找到人接单。Service 的几种类型ClusterIP默认只在集群内部可访问适合内部通信。NodePort在每个 Node 上开一个端口可以从集群外部访问。LoadBalancer配合云厂商的负载均衡器把外部流量引入集群。4.4 Ingress —— “七层路由网关”Service 的 LoadBalancer 只能提供四层TCP/UDP负载均衡要想实现基于域名的路由比如api.example.com转到后端 Aweb.example.com转到后端 B就需要Ingress。Ingress 可以看做是集群外的“反向代理”类似 Nginx它根据 URL 路径或域名将流量路由到不同的 Service。比喻Ingress 就是大厦前台你说“我去 302 找技术部”前台帮你指路。你说“我去 801 找财务部”前台指向另一边。4.5 Namespace —— 虚拟隔离墙一个集群可以划分成多个Namespace用来隔离不同的环境或团队比如dev、test、prod。不同 Namespace 里的资源名称可以重复。网络默认互通但可以设置策略隔离。比喻K8s 集群是一栋大楼Namespace 就是不同的楼层。开发部在 3 楼测试部在 4 楼各自有各自的会议室Service、Pod互不干扰。5. 一个请求从外到内要经过哪些 K8s 组件假设你部署了一个 Web 应用域名app.example.com。用户在浏览器输入http://app.example.com。DNS 解析到云厂商的Load Balancer对应 K8s 的 LoadBalancer 类型的 Service 或 Ingress Controller。流量进入集群首先到达Ingress Controller比如 nginx-ingress。Ingress Controller 根据规则比如域名是app.example.com路径是/将请求转发给对应的ClusterIP Service。Service 再将请求负载均衡到后端的某个Pod通过 kube-proxy 维护的 iptables/IPVS 规则。Pod 里的容器处理请求并返回响应。整个过程对用户透明你只管写好 Ingress 和 Service 规则即可。6. 其他常见但重要的概念简单提一下ConfigMap把配置信息比如数据库地址从容器镜像里抽出来便于修改而不重建镜像。Secret类似 ConfigMap但专门存敏感信息密码、token会做编码和更严格的访问控制。PersistentVolume (PV) / PersistentVolumeClaim (PVC)Pod 的存储抽象。Pod 需要永久保存数据比如数据库就可以申请一个 PVC然后 K8s 会绑定一个实际的 PV可以是云盘、NFS 等。StatefulSet为有状态应用如 MySQL、Redis设计的控制器保证每个 Pod 有稳定、唯一的标识和存储。DaemonSet在每个 Node 上都跑一个 Pod比如日志收集、监控 agent。Job / CronJob一次性任务或定时任务。7. 小白常见疑问解答Q1K8s 和 Docker 是什么关系Docker 是容器运行时负责打包和运行单个容器。K8s 是容器编排平台负责管理成百上千个容器在多个服务器上的运行。K8s 可以配合 Docker 使用也支持 containerd、CRI-O 等其他运行时。类比Docker 是一个个集装箱容器K8s 是一艘集装箱货轮的智能调度系统。Q2我必须自己搭建 K8s 集群吗不一定。你可以使用云厂商提供的托管 K8s 服务阿里云 ACK腾讯云 TKE华为云 CCEAWS EKSAzure AKS… 这些服务已经帮你搭好了 Master 和生产环境你只需要部署应用就行。本地学习可以用Minikube、Kind或Docker Desktop 自带的 K8s。Q3K8s 学习曲线是不是很陡是的K8s 的概念确实比较多。但你可以分阶段学先理解 Pod、Deployment、Service —— 足够跑起一个简单的无状态应用。再学 Ingress、ConfigMap、Secret —— 让应用配置分离、对外可访问。最后学 PV/PVC、StatefulSet、Helm —— 处理有状态应用和复杂部署。不要试图一口气全部掌握边练边学就好。8. 一个最小可行的学习路径本地装好 Docker并熟悉基本命令。安装 Minikube或者用云开发环境如 Killercoda。学写第一个 Deployment Service YAML部署一个 nginx。用kubectl get pods、kubectl logs、kubectl exec观察。修改 replicas体验扩容缩容。尝试滚动更新改镜像 tag观察版本替换过程。添加一个 IngressMinikube 可以启用 ingress 插件体验域名路由。完成以上步骤你已经超过了 50% 的初学者可以自信地说“我会用 K8s 跑应用了”。写在最后Kubernetes 之所以成为容器编排的事实标准是因为它抽象出了一套既强大又相对简单的原语Pod、Service、Deployment 等。你不需要关心底层服务器细节只需要描述“我想要什么样子”K8s 会帮你自动达成。对于小白来说最怕的是概念轰炸。但你可以把 K8s 先理解为一个能自动管理容器应用的大型自动化系统你通过 YAML 告诉它你的需求它保证现实符合你的期望。一旦你动手跑起来第一个 Pod就会发现这些概念其实都对应着实际的功能。希望这篇梳理能帮你迈出 K8s 学习的第一步。如果你对某个概念比如 Ingress Controller 如何工作、PersistentVolume 绑定流程还想深入了解随时可以问我。

相关新闻