工作负载控制器

工作负载控制器(Wordload Controllers)

工作负载控制器:用于更高层次对象,部署和管理Pod。
常见的工作负载控制器:

  • Deployment:无状态应用部署
  • StatefulSet:有状态应用部署
  • DaemonSet:确保所有Node运行同一个Pod
  • Job:一次性任务
  • Cronjob:定时任务

控制器作用:

  • 管理Pod对象
  • 使用标签与Pod关联
  • 控制器实现了Pod的运维,如滚动更新、管理副本、维护Pod状态等。

一、创建一个deployment

vim deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: test
  name: test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: test
  strategy: {}
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - image: nginx:1.16
        name: nginx
        livenessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 3
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /
            port: 80
          initialDelaySeconds: 3
          periodSeconds: 10

二、创建一个service,将80端口暴露出去

vim server.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: test
  name: test
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: test
  type: NodePort
status:

创建deployment和server

[root@k8s-master ~]# kubectl apply -f deployment.yaml
[root@k8s-master ~]# kubectl apply -f server.yaml
[root@k8s-master ~]# kubectl get pod,service      #查看pod和sservice信息,通过浏览器访问node节点+端口就可以访问nginx页面 

三、应用升级

更新镜像三种方式,自动触发滚动升级:

  • kubectl apply -f xxx.yaml
    spec:
      containers:
      - image: nginx:1.16 #将nginx:1.16替换成nginx:1.19.6
        name: nginx
        livenessProbe:
 # 最后执行apply
  • kubectl set image deployment nginx=nginx:1.18
    #第一种和第二种升级过程是一致的,升级过程中会先启动一个最新的,然后杀掉一个旧的,这样对用户体验影响最小,处于平滑升级

  • kubectl edit deployment test # 使用编辑器打开

滚动升级:滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中全部旧版本升级到新版本。

升级检测

for i in {1..1000};do curl -I 10.105.75.166;sleep 1;done

四、水平扩容和缩容(启动多实例,提高并发)

  • 修改yaml中replicas值,在执行apply (第一种方法)
  • kubectl scale deployment test --replicas=5 (第二种方法)
[root@k8s-master ~]# kubectl scale deployment test --replicas=5
NAME                    READY   STATUS    RESTARTS   AGE
test-58bf6f65c8-2nt6t   1/1     Running   0          5m20s
test-58bf6f65c8-2tgh2   1/1     Running   0          21m
test-58bf6f65c8-hrpl8   1/1     Running   0          21m
test-58bf6f65c8-jscnh   1/1     Running   0          20m
test-58bf6f65c8-vk8rs   1/1     Running   0          5m20s

五、应用回滚

kubectl rollout history deployment test # 查看历史发布版本

kubectl rollout undo deployment test # 回滚上一个版本

kubectl rollout undo deployment test --to-revision=2 # 指定历史回滚的版本

kubectl describe rs | egrep "revision:|Name:|Image:"	#获取对应发布版本号和镜像版本

kubectl rollout undo deployment test --to-revision=1	#指定回滚的历史版本

六、应用下线

[root@k8s-master ~]# kubectl delete deployment test

[root@k8s-master ~]# kubectl delete service test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值