k8s通过编排文件,实现服务的滚动更新

k8s通过编排文件,实现服务的滚动更新

powershell 复制代码
apiVersion: apps/v1
kind: pod
metadata:
  name: 'servicename'
  labels:
    app: 'servicename'
spec:
  replicas: 4 ##pod启动数量最少为2,不然滚动更新无意义
  strategy:
    type: RollingUpdate   ##设置类型为滚动更新以及每次启动的最多pod数量
    rollingUpdate:        ##设置类型为滚动更新以及每次启动的最多pod数量
      maxUnavailable: 25% ##设置类型为滚动更新以及每次启动的最多pod数量
      maxSurge: 25%       ##设置类型为滚动更新以及每次启动的最多pod数量
  selector:
    matchLabels:
      app: 'servicename'
  template:
    metadata:
      labels:
        app: 'servicename'
        ctime: "20231204192836"
    spec:
      containers:
      - name: 'servicename'
        image: 镜像地址
        imagePullPolicy: Always
        lifecycle:    ##此处内容添加为下线控制内容,前端服务可不需要
          preStop:    ##此处内容添加为下线控制内容,前端服务可不需要
            exec:     ##此处内容添加为下线控制内容,前端服务可不需要
              command:##此处内容添加为下线控制内容,前端服务可不需要
                - 'sh'##此处内容添加为下线控制内容,前端服务可不需要
                - '-c'##此处内容添加为下线控制内容,前端服务可不需要
                - 'wget http://localhost/pms-framework-portal/service/deregister;sleep 30'##此处内容添加为下线控制内容,前端服务可不需要
##添加探针,对启动服务端的容器进行健康检测            
        readinessProbe:            # 就绪探针
          tcpSocket:
            port: 80
          initialDelaySeconds: 10    # 第一次探测时等待10s
          periodSeconds: 10        # 每10s执行一次
          timeoutSeconds: 3        #单次执行超时时间
        livenessProbe:             # 存活探针
          tcpSocket:
            port: 80
          initialDelaySeconds: 10  # 第一次探测时等待10s
          timeoutSeconds: 5        #单次执行超时时间
          periodSeconds: 30        #每30s执行一次
          successThreshold: 1       #成功阀值
          failureThreshold: 5        #失败阀值
        command:
##tini启动方式便于读取PID打印线程日志和内存日志等
        - /sbin/tini
        - java
##开启JDK感知容器分配资源limits
        - -XX:+UnlockExperimentalVMOptions
        - -XX:+UseCGroupMemoryLimitForHeap
##内存优化配置
        - -XX:InitialRAMPercentage=25.0
        - -XX:MinRAMPercentage=25.0
        - -XX:MaxRAMPercentage=75.0
        - -XX:MetaspaceSize=256M
        - -XX:MaxMetaspaceSize=512M
##内存溢出堆栈打印
        - -XX:+HeapDumpOnOutOfMemoryError
        - -XX:HeapDumpPath=/
##堆配置打印
        - -XshowSettings:vm
##GC配置
        - -XX:+UseG1GC
        - -XX:+PrintGCDetails
        - -XX:+PrintGCDateStamps
        - -XX:+PrintAdaptiveSizePolicy
        - -XX:+PrintTenuringDistribution
        - -Xloggc:gc.log
##线程优化配置
        - -Dserver.tomcat.prestartminSpareThreads=true
        - -Dserver.tomcat.minSpareThreads=20          
        - -Dserver.tomcat.maxThreads=500
        - -Dserver.tomcat.acceptCount=100
        - -Dserver.tomcat.maxIdelTime=60000
        - -Dserver.tomcat.enableLookups=false
##内嵌Tomcat请求大小限制,-1表示不限制
        - -Dserver.tomcat.maxPostSize=-1

以上内容,除了实现滚动更新,另外对服务做了内存、线程等优化

相关推荐
阿里云云原生35 分钟前
HiRoute:Jev 模型智能路由实践
云原生
阿里云云原生2 小时前
云栖实录丨面向 AgenticOps 的开源建设:采集标准化、统一语义建模与能力评测
云原生·开源
cubestudio2 小时前
云原生分布式训练怎么调度才不浪费算力?CubeStudio 分布式训练与加速架构解析(CRD+Operator / gang 调度 / 亲和反亲和 / GPU 利用率 / 共享 GPU)
人工智能·云原生·gpu
mengge.cloud2 小时前
1019Namespace ,Contexts ,Kubernetes Pod
运维·服务器·网络·云原生·容器·kubernetes·云计算
阿里云云原生2 小时前
从单点探索到规模化运营:滔搏体育的企业级多智能体实践
云原生
flytalei3 小时前
从 Docker Compose 到 K3s:逐浪博客 MySQL 数据迁移实战与一致性验证
mysql·docker·容器
周周爱喝粥呀3 小时前
详细教程:在 Docker 中部署 PostgreSQL 并使用 pgAdmin 可视化管理
docker·postgresql·容器
暖核5 小时前
从零理解 Kubernetes Pod:命名空间、生命周期、Pause 容器详解
云原生·容器·kubernetes
川石课堂软件测试6 小时前
涨薪技术|0到1学会性能测试第8课-Analysis分析图
服务器·数据库·python·sql·jmeter·mysql·容器
7177777 小时前
国内 Docker 镜像仓库推荐:Gitee 与主流方案对比及选型指南
docker·容器·gitee