news 2026/6/11 2:08:42

k8s(11) Pod 控制器,服务发现与存储管理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
k8s(11) Pod 控制器,服务发现与存储管理

Kubernetes 核心知识点总结

一、Pod 控制器(Workload)

控制器是管理 Pod 的中间层,通过Label Selector​ 关联 Pod,确保 Pod 始终符合预期状态,并支持扩缩容、滚动更新等运维能力。

控制器类型总览

控制器

核心功能

适用场景

关键特性

ReplicaSet

维持指定数量的 Pod 副本

基础副本控制

Deployment 的底层实现

Deployment

管理无状态应用

Web 服务、API 服务

滚动更新、回滚、声明式配置

StatefulSet

管理有状态应用

MySQL / Redis / ES

稳定网络标识、独立 PVC、有序扩缩容

DaemonSet

每个节点运行一个 Pod

日志采集、监控 Agent、网络插件

节点变化时自动调度/清理

Job

一次性任务

数据迁移、批处理

任务完成即退出,支持重试

CronJob

周期性任务

定时备份、报表

基于 Linux crontab 调度

核心控制器对比

特性

Deployment

StatefulSet

DaemonSet

Job / CronJob

应用类型

无状态

有状态

守护进程

短期任务

网络标识

随机 Pod 名

固定 Pod 名

无固定

存储

共享存储

每个 Pod 独立 PVC

节点本地 / 共享

临时 / 共享

扩缩容

无序

0→N-1 / N-1→0

与节点数同步

无副本概念

典型命令

kubectl rollout status deploy <name>

kubectl scale sts <name> --replicas=5

kubectl get ds

kubectl logs <job-pod>

其他重要资源

资源

功能

使用方式

ConfigMap

存储非加密配置

1️⃣ 挂载为 Volume(支持热更新)
2️⃣ 注入为环境变量(不支持热更新)

Ingress

L7 负载均衡

对外暴露 HTTP / HTTPS 服务


二、Service 服务发现(5 种模式)

Service 类型总表

类型

别名

核心特点

是否分配 ClusterIP

典型使用场景

ClusterIP

集群内部 Service

仅集群内可访问

✅ 是

内部微服务

NodePort

节点端口

每个节点开放固定端口

✅ 是

开发测试、临时访问

LoadBalancer

云负载均衡

对接云厂商 LB

✅ 是

公网服务暴露

ExternalName

外部服务映射

DNS CNAME 无代理

❌ 否

访问集群外服务

Headless Service

无头 Service

不分配 ClusterIP

❌ 否

有状态应用、Pod 直连


1. ClusterIP(默认)

特点

  • 分配 ClusterIP

  • 仅集群内部访问

  • kube-proxy 转发流量

适用场景

✅ 微服务内部调用

✅ 前端 → 后端 API

✅ 不对外暴露的服务

yaml

yaml

apiVersion: v1 kind: Service metadata: name: user-service spec: type: ClusterIP selector: app: user ports: - port: 80 targetPort: 8080

📌生产环境最常用


2. NodePort

特点

  • 每个 Node 开放固定端口(30000–32767)

  • <NodeIP>:<NodePort>访问

适用场景

✅ 开发 / 测试

✅ 无云 LB 的裸机集群

yaml

yaml

apiVersion: v1 kind: Service metadata: name: web-nodeport spec: type: NodePort selector: app: web ports: - port: 80 targetPort: 80 nodePort: 30080

⚠️不建议生产环境直接暴露


3. LoadBalancer

特点

  • 自动对接云厂商 LB

  • 提供公网 IP

适用场景

✅ 公有云生产环境

✅ 对外 API / 官网

yaml

yaml

apiVersion: v1 kind: Service metadata: name: public-api spec: type: LoadBalancer selector: app: api ports: - port: 80 targetPort: 8080

📌云环境首选


4. ExternalName

特点

  • 不做代理

  • 返回 CNAME DNS

适用场景

✅ 访问外部数据库

✅ 第三方 API

✅ 平滑迁移旧系统

yaml

yaml

apiVersion: v1 kind: Service metadata: name: mysql-external spec: type: ExternalName externalName: mysql.xxx.com

访问:

bash

bash

mysql.external.default.svc.cluster.local

📌DNS 层服务发现


5. Headless Service

特点

  • clusterIP: None

  • 直接返回 Pod IP

适用场景

✅ StatefulSet

✅ 数据库 / 中间件

✅ Pod 直连

yaml

yaml

apiVersion: v1 kind: Service metadata: name: mysql-headless spec: clusterIP: None selector: app: mysql ports: - port: 3306

DNS:

text

text

mysql-0.mysql-headless.default.svc.cluster.local

📌StatefulSet 必备


Service 模式对比总结

模式

对外访问

内部访问

Pod 直连

典型场景

ClusterIP

内部微服务

NodePort

测试 / 临时

LoadBalancer

公网服务

ExternalName

外部服务

Headless

有状态应用


三、存储管理

基础存储卷类型

存储卷

持久化能力

共享范围

适用场景

缺点

emptyDir

❌ Pod 删除即丢失

Pod 内

临时缓存

生命周期短

hostPath

✅ 节点本地

单节点

节点调试

节点故障丢失

NFS

✅ 服务端存储

跨节点

生产共享

依赖 NFS


PV / PVC

组件

说明

PV

集群级存储资源

PVC

用户对存储的请求

StorageClass

动态 PV 模板

PV 状态流转

纯文本

纯文本

Available → Bound → Released → Failed

PV 访问模式

模式

说明

RWO

单节点读写

ROX

多节点只读

RWX

多节点读写

RWOP

单 Pod 读写


静态 PV vs 动态 PV

维度

静态 PV

动态 PV

创建方式

手动

自动

运维复杂度

适用场景

固定需求

弹性需求


四、实战示例速查

1. Deployment

yaml

yaml

apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80

2. StatefulSet(含 Headless Service)

yaml

yaml

apiVersion: v1 kind: Service metadata: name: mysql-svc spec: clusterIP: None selector: app: mysql --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: serviceName: mysql-svc replicas: 3 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:8.0 volumeMounts: - name: mysql-data mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 10Gi

3. 动态 PV(NFS)

yaml

yaml

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-sc provisioner: nfs-subdir-external-provisioner parameters: archiveOnDelete: "false" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc spec: accessModes: ["ReadWriteMany"] storageClassName: nfs-sc resources: requests: storage: 5Gi

五、常用运维命令

操作

命令

查看控制器

kubectl get deploy,sts,ds,job,cronjob

查看存储

kubectl get pv,pvc,sc

Deployment 回滚

kubectl rollout undo deploy/<name>

更新历史

kubectl rollout history deploy/<name>

进入 Pod

kubectl exec -it <pod> -- /bin/sh

查看详情

kubectl describe <resource> <name>

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 2:07:51

从ChatGPT到Pi:确定性优先的AI工程化实践路径

1. 项目概述&#xff1a;一场从通用大模型到专属小模型的实践迁徙“From ChatGPT to Pi, and I’m Going to Tell You Why!”——这个标题乍看像一篇情绪化的个人博客&#xff0c;但在我拆解过上百个真实落地项目后&#xff0c;它背后藏着一个正在 quietly reshape&#xff08;…

作者头像 李华
网站建设 2026/6/11 2:01:56

智能眼镜定向语音理解技术:多说话人场景的解决方案

1. 智能眼镜中的定向语音理解技术概述在可穿戴设备领域&#xff0c;智能眼镜正逐渐成为人机交互的新入口。作为Meta Reality Labs的研究员&#xff0c;我们在实际产品开发中发现&#xff1a;传统语音交互系统在户外场景下的识别准确率会骤降30-45%。这主要源于两个技术痛点&…

作者头像 李华
网站建设 2026/6/11 2:00:58

世毫九实验室(Shardy Lab)原创理论开源与版权声明

世毫九实验室&#xff08;Shardy Lab&#xff09;原创理论开源与版权声明 &#xff08;官方定稿 法律生效 全球开源备案版&#xff09;致每一位探索宇宙真理的同路人&#xff1a;欢迎来到世毫九实验室&#xff08;Shardy Lab&#xff09;理论开源空间。本实验室长期深耕认知几…

作者头像 李华
网站建设 2026/6/11 1:58:54

多级TT时空求解器在非线性PDE中的应用与优化

1. 多级TT时空求解器概述非线性偏微分方程&#xff08;PDE&#xff09;的数值求解一直是科学计算领域的核心挑战。传统的时间步进方法&#xff08;如有限差分、有限元&#xff09;在处理复杂非线性问题时&#xff0c;常面临两个主要瓶颈&#xff1a;一是计算复杂度随问题规模呈…

作者头像 李华