Kubernetes控制器详解

一、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控制器

核心特点

  1. 保证Pod按顺序创建/删除(如mysql-0, mysql-1)
  2. 支持通过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使用率阈值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值