Add StatefulSet DaemonSet Job CronJob sections

This commit is contained in:
yeasy
2026-04-04 15:28:42 -07:00
parent 4937192bf1
commit 6668bfd7b3
2 changed files with 125 additions and 8 deletions

View File

@@ -178,7 +178,121 @@ Deployment 的核心能力包括:
> 早期 Kubernetes 使用 Replication Controller (RC) 来管理副本现已被 ReplicaSet/Deployment 取代
### 13.2.4 服务
### 13.2.4 StatefulSet
Deployment 适合无状态应用 **StatefulSet** 用于管理有状态应用如数据库消息队列 Deployment 不同StatefulSet 为每个 Pod 提供稳定的网络标识和持久化存储
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
serviceName: mysql
replicas: 3
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
```
StatefulSet 的核心特性
* **稳定的网络标识**Pod 名称按顺序编号mysql-0, mysql-1, mysql-2配合 Headless Service 提供可预测的 DNS 名称
* **有序部署与删除**Pod 按序号顺序创建逆序删除
* **持久化存储**通过 `volumeClaimTemplates` 为每个 Pod 自动创建独立的 PVC
### 13.2.5 DaemonSet
**DaemonSet** 确保在集群的每个节点或指定节点上运行一个 Pod 副本典型用途包括日志收集监控代理和网络插件
```yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd:v1.17
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
hostPath:
path: /var/log
```
当新节点加入集群时DaemonSet 会自动在该节点上创建 Pod当节点被移除时对应的 Pod 也会被回收
### 13.2.6 Job CronJob
**Job** 用于运行一次性任务确保指定数量的 Pod 成功完成后自动退出**CronJob** 则按照 cron 表达式周期性地创建 Job
```yaml
apiVersion: batch/v1
kind: Job
metadata:
name: data-migration
spec:
completions: 1
template:
spec:
containers:
- name: migrate
image: myapp/migrate:latest
command: ["python", "migrate.py"]
restartPolicy: Never
backoffLimit: 3
```
```yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: daily-backup
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: myapp/backup:latest
restartPolicy: OnFailure
```
Job `backoffLimit` 控制失败重试次数`completions` 指定需要成功完成的 Pod 数量CronJob 适用于定时备份报表生成等场景
### 13.2.7 服务
服务 (Service) 定义了一组 Pod 的逻辑集合和访问策略由于 Pod IP 地址是动态分配的Service 提供了一个稳定的访问入口
@@ -203,7 +317,7 @@ spec:
| **NodePort** | 在每个节点上开放固定端口集群外部可通过 `节点IP:端口` 访问 |
| **LoadBalancer** | 通过云平台的负载均衡器暴露服务 |
### 13.2.5
### 13.2.8
(Volume) Pod 中的容器提供持久化存储Kubernetes 支持多种卷类型
@@ -216,7 +330,7 @@ spec:
生产环境中推荐使用 PersistentVolume (PV) PersistentVolumeClaim (PVC) 来管理存储实现存储资源与使用者的解耦
### 13.2.6 标签
### 13.2.9 标签
标签 (Label) 是附加到 Kubernetes 对象上的键值对用于组织和选择对象子集标签是 Kubernetes 中实现松耦合的关键机制
@@ -229,7 +343,7 @@ $ kubectl get pods -l env=production
```
ServiceDeployment 等资源都通过标签选择器 (`selector`) 来关联目标 Pod
### 13.2.7 API 访问控制
### 13.2.10 API 访问控制
Kubernetes API 的访问通过三个阶段进行控制
@@ -237,11 +351,11 @@ Kubernetes API 的访问通过三个阶段进行控制:
2. **授权 (Authorization)**判断请求者是否有权限执行操作通常使用 RBAC
3. **准入控制 (Admission Control)**在请求被持久化之前对其进行校验或修改
### 13.2.8 Dashboard
### 13.2.11 Dashboard
Kubernetes Dashboard 是一个基于 Web 的用户界面用于部署容器化应用监控集群资源和排查问题Dashboard 的部署方法详见[部署 Dashboard](../14_kubernetes_setup/14.7_dashboard.md) 章节
### 13.2.9 命令行工具 kubectl
### 13.2.12 命令行工具 kubectl
`kubectl` Kubernetes 的命令行工具用于与集群进行交互常用命令如下

View File

@@ -5,14 +5,17 @@ Kubernetes 是当前最主流的容器编排平台,其声明式管理模型和
| 概念 | 要点 |
|------|------|
| **Pod** | 最小调度单位包含一组共享网络和存储的容器 |
| **Deployment** | 管理 Pod 副本集支持滚动更新和回滚 |
| **Deployment** | 管理无状态应用的 Pod 副本集支持滚动更新和回滚 |
| **StatefulSet** | 管理有状态应用提供稳定的网络标识和持久化存储 |
| **DaemonSet** | 确保每个节点运行一个 Pod 副本适用于日志监控等场景 |
| **Job/CronJob** | 运行一次性或定时任务确保任务成功完成 |
| **Service** | Pod 提供稳定的网络访问入口和负载均衡 |
| **Namespace** | 资源隔离和多租户支持 |
| **ConfigMap/Secret** | 配置与敏感信息的管理 |
| **Master 节点** | 运行 API ServerSchedulerController Manager |
| **Worker 节点** | 运行 kubeletkube-proxy 和容器运行时 |
### 13.6.1 延伸阅读
### 延伸阅读
- [部署 Kubernetes](../14_kubernetes_setup/README.md)搭建 Kubernetes 集群
- [Etcd](../15_etcd/README.md)Kubernetes 使用的分布式存储