zoukankan      html  css  js  c++  java
  • K8S Scale、Rolling Update、Cron Job

    Scale

    假设现在 apply 了一个 deployment

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web-server
          component: web-server
      template:
        metadata:
          labels:
            app: web-server
            component: web-server
        spec:
          containers:
          - name: web-server
            image: web-server:1.0
    

    可以通过 scale 命令扩展成 3 个 Pod,K8S 会多启动两个 Pod,原来的 Pod 依然正常运行

    kubectl scale --replicas=3 deployment web-server
    

    也可以改变 yaml 文件

    ...
    spec:
      replicas: 3
    ...
    

    然后 apply,K8S 会发现 deployment 已经部署,但新的 replicas 变成 3 了,所以会多启动两个 Pod

    kubectl apply -f web-server.yml
    

    replicas 的值也可以缩小,K8S 会自动停止多余的 Pod



    Rolling Update

    启动配置的时候记录版本的操作

    kubectl apply -f web-server.yml --record=true
    

    查看历史版本

    kubectl rollout history deployment/web-server
    

    可以看到

    REVISION  CHANGE-CAUSE
    1         kubectl create --filename=web-server.yml --record=true
    

    可以通过 set image 命令升级版本

    kubectl set image deployment web-server web-server=web-server:2.0
    

    再查看历史版本,可以看到

    REVISION  CHANGE-CAUSE
    1         kubectl create --filename=web-server.yml --record=true
    2         kubectl set image deployment web-server web-server=web-server:2.0
    

    也可以在 web-server.yml 里面把 image 改了,然后重新 apply,也会触发 Rolling Update

    kubectl apply -f web-server.yml
    

    Rolling Update 会边启动新的 Pod 边停止旧的 Pod,比如 replicas 是 3,然后有一个 Service 连着这三个 Pod,那么在做 Rolling Update 的时候,会先启动一个新版本的 Pod,并且这个 Pod 也会连上 Service,然后停掉其中一个旧的 Pod,再启动新版本的 Pod,再停止旧的 Pod,如此循环,直到 3 个 Pod 都是新版的为止



    Cron Job

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: cron-job-test
      namespace: default
    spec:
      concurrencyPolicy: Replace   # 并发策略,如果时间到时,已经有一个 Pod 在运行,怎么处理
                                   # Allow(默认):新的 Job 会和旧的 Job 一起运行
                                   # Replace:停止旧的 Job,启动新的 Job
                                   # JobForbid:如果有旧的 Job 在运行,那么不会创建新的 Job
    
      failedJobsHistoryLimit: 10       # 保留多少个失败的任务,默认没限制
      successfulJobsHistoryLimit: 10   # 保留多少个成功的任务,默认没限制
    
      startingDeadlineSeconds: 15        # Pod 必须在 15 秒内开始执行,否则将不运行,且标记失败    
      terminationGracePeriodSeconds: 30  # Job 存活时间,默认为永久
    
      schedule: '*/1 * * * *'          # 每分钟执行一次
    
      jobTemplate:
        spec:
          template:
            metadata: {}
            spec:
              containers:
              - name: cron-job-test
                image: cron-job-test:1.0
    
  • 相关阅读:
    JS获取图片的缩略图,并且动态的加载多张图片
    小扬的马【未完成】
    小宇和小曾的字符串 【未完成】
    数据库笔记【转】
    分解质因数
    汉诺塔
    排列组合
    数字字符出现频率
    文章中字符数统计
    是否阶乘之和?
  • 原文地址:https://www.cnblogs.com/moonlight-lin/p/14270161.html
Copyright © 2011-2022 走看看