一、Deployment控制器
1. 生成模板文件
Bash
kubectl create deployment myweb --image=myos:httpd --dry-run=client -o yaml
2. 集群扩缩容
Bash
kubectl scale deployment mydeploy --replicas 10
3. 版本管理
查看历史版本
Bash
kubectl rollout history deployment mydeploy
添加版本注释
Bash
kubectl annotate deployments mydeploy kubernetes.io/change-cause="httpd.v1"
4. 滚动更新
Bash
# 步骤1:修改资源清单(添加镜像拉取策略) vim mydeploy.yaml # 添加内容: # imagePullPolicy: Always # 步骤2:更新版本注释 kubectl annotate deployments mydeploy kubernetes.io/change-cause="add imagePullPolicy" # 步骤3:触发滚动更新 kubectl set image deployment mydeploy web=myos:nginx # 步骤4:添加新版本注释 kubectl annotate deployments mydeploy kubernetes.io/change-cause="update nginx.v1"
5. 版本回滚
Bash
kubectl rollout undo deployment mydeploy --to-revision 1
6. 资源清理
Bash
kubectl delete deployments mydeploy
二、DaemonSet控制器
特点
- 每个Node节点自动创建1个Pod副本
- 确保集群节点无空缺无重复
创建方法
Bash
# 从Deployment模板修改: # 1. 修改kind: DaemonSet # 2. 删除replicas字段 # 3. 修改标签防止冲突(如app: ds-httpd) kubectl apply -f myds.yaml
三、Job/CronJob控制器
特点对比
类型 | 用途 | 重启策略 |
---|---|---|
Job | 单次任务(如数据处理) | OnFailure 或 Never |
CronJob | 周期性任务(如定时备份) | 同上 |
模板生成
Bash
# Job模板 kubectl create job myjob --image=myos:8.5 --dry-run=client -o yaml -- sleep 3 # CronJob模板 kubectl create cronjob mycj --image=myos:8.5 --schedule='* * * * *' --dry-run=client -o yaml -- sleep 3
配置要点
Yaml
restartPolicy: OnFailure # 禁止使用Always,否则任务永不终止
四、StatefulSet控制器
核心特点
- 保证Pod按顺序创建/删除(如mysql-0, mysql-1)
- 支持通过DNS名称直接访问指定Pod
配置流程
1. 创建Headless Service
Yaml
# stssvc.yaml apiVersion: v1 kind: Service metadata: name: stssvc spec: type: ClusterIP clusterIP: None # 关键配置 selector: app: sts-httpd ports: - protocol: TCP port: 80 targetPort: 80
2. 创建StatefulSet
Yaml
# mysts.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: mysts spec: serviceName: stssvc # 关联Headless服务 replicas: 3 selector: matchLabels: app: sts-httpd template: metadata: labels: app: sts-httpd spec: containers: - name: web image: myos:httpd
五、弹性云服务
资源配置模板
Yaml
# mycluster.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mydeploy spec: replicas: 1 selector: matchLabels: app: deploy-httpd template: metadata: labels: app: deploy-httpd spec: containers: - name: web image: myos:httpd resources: requests: cpu: 300m # 必须配置才能启用HPA --- apiVersion: v1 kind: Service metadata: name: websvc spec: type: ClusterIP clusterIP: 10.245.1.80 selector: app: deploy-httpd ports: - protocol: TCP port: 80 targetPort: 80
六、HPA控制器
配置模板
Yaml
# myhpa.yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: myhpa spec: behavior: scaleDown: stabilizationWindowSeconds: 60 # 缩容冷却时间 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: mydeploy minReplicas: 1 maxReplicas: 3 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # CPU使用率阈值