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

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

相关推荐
AKAMAI13 小时前
跳过复杂环节:Akamai应用平台让Kubernetes生产就绪——现已正式发布
人工智能·云原生·云计算
阿里云云原生19 小时前
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
云原生
Serverless社区2 天前
函数计算的云上计费演进:从请求驱动到价值驱动,助力企业走向 AI 时代
阿里云·云原生·serverless
资源开发与学习3 天前
Kubernetes集群核心概念 Service
kubernetes
阿里云云原生3 天前
【云栖大会】AI原生、AI可观测、AI Serverless、AI中间件,4场论坛20+议题公布!
云原生
容器魔方3 天前
Bloomberg 正式加入 Karmada 用户组!
云原生·容器·云计算
muyun28003 天前
Docker 下部署 Elasticsearch 8 并集成 Kibana 和 IK 分词器
elasticsearch·docker·容器
Nazi63 天前
k8s的dashboard
云原生·容器·kubernetes
傻傻虎虎3 天前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
是小崔啊3 天前
叩丁狼K8s - 概念篇
云原生·容器·kubernetes