栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

工作负载控制器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

工作负载控制器

文章目录
  • 工作负载控制器(Wordload Controllers)
    • 一、创建一个deployment
    • 二、创建一个service,将80端口暴露出去
    • 三、应用升级
    • 四、水平扩容和缩容(启动多实例,提高并发)
    • 五、应用回滚
    • 六、应用下线

工作负载控制器(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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号