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

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

相关推荐
阿里云云原生21 小时前
RCA 决定 AgenticOps 的行动方向:STAROps 如何把根因定位做成系统能力
云原生
我有2只猫21 小时前
vLLM Docker 本地部署小模型
docker·容器·vllm
腾讯数据架构师1 天前
壁仞 GPU 怎么接入 Kubernetes 和 AI 平台?CubeStudio 壁仞算力适配实操
人工智能·容器·kubernetes·cube-studio·ai平台
有脚就行1 天前
第28篇-Kubernetes-GPU调度机制-Device-Plugin与GPU-Operator
人工智能·容器
键盘鼓手苏苏1 天前
AI 内容生成管线设计:从多模态编排到质量守门的生产级架构
云原生·kubernetes·k8
huaiixinsi1 天前
Docker 负责打包,Kubernetes 负责调度:一文吃透容器化与 K8s 编排
docker·容器·kubernetes
Henry-SAP1 天前
具身智能新突破:开源生态与IPO热潮
人工智能·云原生·sap·erp
风翼靓崽1 天前
记一次使用snap 安装dive后,docker镜像和容器都看不到
运维·docker·容器
嘟嘟07171 天前
从浏览器到 hello world:Docker + nginx 反向代理 + Node 最小服务器一次讲清
docker·容器·node.js
小月土星1 天前
当 LLM 遇上集装箱:我的 Docker 学习笔记与 AI 后端的思考(含反向代理Nginx)
后端·docker·容器