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

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

相关推荐
Empty_7773 分钟前
K8S-中的优先级
云原生·容器·kubernetes
❀͜͡傀儡师2 小时前
Docker部署Rustscan端口扫描工具
运维·docker·容器
一只懒鱼a3 小时前
docker搭建rabbit集群
docker·容器·rabbitmq
java_logo3 小时前
Onlyoffice Documentserver Docker 容器化部署指南
运维·人工智能·docker·容器·onlyoffice·milvus·documentserver
Heavydrink3 小时前
华为云EulerOS 2.0安装redis详细教程
docker·容器·华为云
总有刁民想爱朕ha3 小时前
银河麒麟v10服务器版Docker部署.NET 8 WebAPI教程
docker·容器·.net·银河麒麟v10服务器版
Henry Zhu1234 小时前
VPP中的DPDK插件源码详解第一篇:DPDK插件的作用和意义以及整体架构
运维·服务器·网络·计算机网络·云原生
Jerry952706285 小时前
1.无服务器架构入门
云原生·架构·serverless·无服务器架构
潘晓可5 小时前
Docker部署Bookstack
运维·docker·容器
Serverless社区5 小时前
阿里云新发的AgentRun 有哪些“大招”,一文详解来了
运维·阿里云·云原生·serverless