Kubernetes核心概念
PV与PVC
StatefulSet 使用 PVC 进行持久化存储。
常用命令
# 查看 PV
kubectl get pv
# 描述 PV
kubectl describe pv pv-name
# 删除 PV
kubectl delete pv pv-name
# 查看 PVC
kubectl get pvc
# 描述 PVC
kubectl describe pvc pvc-name
# 删除 PVC
kubectl delete pvc pvc-name
# 查看 StorageClass
kubectl get scKubernetes配置管理
Secret
apiVersion: v1
kind: Secret
metadata:
name: webapp-secret
type: Opaque
data:
# echo -n "dbpassword" | base64
DB_PASSWORD: ZGJwYXNzd29yZA==Secret使用示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
template:
spec:
containers:
- name: webapp
image: webapp:v1
ports:
- containerPort: 80
envFrom:
- configMapRef:
name: webapp-config
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: webapp-secret
key: DB_PASSWORD敏感数据保护
生产环境中建议:
- 启用 Secret 加密存储
- 使用 RBAC 限制 Secret 访问
- 考虑使用 Vault 等外部密钥管理
Ingress
Ingress 提供 HTTP/HTTPS 路由,将外部请求转发到集群内部 Service。
核心功能
| 功能 | 说明 |
|---|---|
| 基于域名路由 | 根据请求域名分发到不同后端 |
| 基于路径路由 | 根据 URL 路径分发请求 |
| TLS 终止 | 解密 HTTPS 流量,减轻后端负担 |
| 负载均衡 | 多后端服务时自动分配流量 |
基础配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80Workload
工作负载资源用于管理容器化应用的部署和运行。
Workload 类型概览
| 类型 | 说明 | 适用场景 |
|---|---|---|
| Pod | 最小调度单位 | 直接管理容器 |
| Deployment | 无状态应用 | Web 服务、API |
| StatefulSet | 有状态应用 | 数据库、消息队列 |
| DaemonSet | 节点守护进程 | 日志收集、监控 |
| Job | 一次性任务 | 数据处理、批任务 |
| CronJob | 周期性任务 | 定时备份、报告 |
Pod
Pod 是 Kubernetes 的最小调度单位,代表一个或多个共享网络和存储的容器。同一 Pod 内的容器共享 localhost 和存储卷,通常一个 Pod 只运行一个主容器。
Deployment
Deployment 用于管理无状态应用,通过 ReplicaSet 控制 Pod 副本数量,支持滚动更新和回滚。大部分 Web 服务和 API 都使用 Deployment 部署。
StatefulSet
StatefulSet 用于管理有状态应用(如 MySQL、Kafka),与 Deployment 的核心区别:Pod 有稳定的网络标识(pod-0、pod-1)和持久化存储,且按顺序部署和扩缩。
DaemonSet
DaemonSet 确保每个节点都运行一个 Pod 副本,适用于日志采集(Fluentd)、节点监控(Node Exporter)、网络插件(Calico)等需要每节点运行的守护进程。
Job 与 CronJob
Job 创建一次性任务,运行完成后 Pod 不会重启。CronJob 基于 Cron 表达式创建周期性任务,适合定时备份、报表生成等场景。