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

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

apiVersion: apps/v1
kind: pod
metadata:
  name: ‘servicename’
  labels:
    app: ‘servicename’
spec:
  replicas: 4 ##pod启动数量最少为2,不然滚动更新无意义
  strategy:
    type: RollingUpdate   ##设置类型为滚动更新
    rollingUpdate:        
      maxUnavailable: 25% ##和期望ready的副本数比,不可用副本数最大比例(或最大值),这个值越小,越能保证服务稳定,更新越平滑
      maxSurge: 25%       ##和期望ready的副本数比,超过期望副本数最大比例(或最大值),这个值调的越大,副本更新速度越快
  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://{servicenamepath}/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

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

### 回答1: Kubernetesk8s)是一个开源的容器编排平台,可以帮助用户自动化部署、扩展和管理容器化应用程序。Deployment是Kubernetes中的一种资源对象,用于定义应用程序的部署方式和更新策略。Deployment文件是一个YAML格式的文件,用于描述Deployment的配置信息。 Deployment文件中包含以下信息: 1. metadata:定义Deployment的名称、命名空间和标签等元数据信息。 2. spec:定义Deployment的规格,包括副本数、容器镜像、容器端口、环境变量、卷挂载等信息。 3. selector:定义Deployment管理的Pod的标签选择器。 4. strategy:定义Deployment的更新策略,包括滚动更新和重建更新两种方式。 5. template:定义Pod的模板,包括容器镜像、容器端口、环境变量、卷挂载等信息。 通过编写Deployment文件,可以方便地部署和管理容器化应用程序。同时,Deployment还支持滚动更新和回滚操作,可以保证应用程序的高可用性和稳定性。 ### 回答2: K8sKubernetes)是一款自动化容器部署、扩展和管理工具。在K8s中,部署文件非常重要,它描述了容器服务和其他软件资源的相关信息。因此,学习K8s deployment文件非常必要。在这份文章中,我们将详细讨论K8s deployment文件的所有内容。 Deployment文件的结构 一个Deployment文件包含以下几个方面: - API版本:deployment文件使用的API版本,通常为“ apps / v1”。 - 种类:Deployment文件的种类为“ Deployment”。 - Metadata:Deployment文件的metadata部分,包括名称和标签等信息。 - Spec:deployment的spec部分,它描述了所需容器的相关信息。 - Selector:用于匹配Deployment的Label Selector,以便与Pod匹配,默认为与Deployment的labels相同。 Deployment文件常用的字段 - replicas:指定所需的副本数。 - strategy:指定更新策略,即RollingUpdate和Recreate。 - template:包含必须部署的Pod的origin template。 K8s deployment的常用命令 - kubectl create -f deployment.yaml:创建名为“ deployment.yaml”的部署文件。 - kubectl get deployments:获取所有的deployment列表。 - kubectl describe deployment <deployment-name>:获取指定deployment的详细信息。 - kubectl rollout status deployment/<deployment-name>:查看指定deployment的滚动更新进度。 - kubectl apply -f deployment.yaml:更新容器或修改其他的Deployment属性。 总结 Deployment文件Kubernetes管理容器的关键部分之一。它描述了所需的容器服务和其他资源信息,可以在多个节点上实现自动化部署和扩展容器的能力。在实践中,我们可以通过运行常用的Kubernetes命令,如kubectl命令,轻松创建、管理和更新Deployment文件。掌握K8s deployment文件的知识,对于容器化应用程序的管理和部署至关重要。 ### 回答3: K8sKubernetes)是一个开源的自动化容器编排系统,可以管理容器化应用程序的部署、维护和扩展。在K8s中,Deployment是一种资源类型,用于管理Pod的创建和更新。Deployment文件中定义了需要创建的Pod副本数、镜像、容器端口、存储卷等信息。本文将详细介绍K8s Deployment文件的各个部分。 1. kind kind定义了Deployment文件中资源类型,用于告诉K8s这是一个Deployment资源。在文件中,kind应该始终是“Deployment”。 2. apiVersion apiVersion指定K8s API的版本,用于指定Deployment资源对象的API版本。在文件中,应将其设置为“apps/v1”。 3. metadata metadata用于定义Deployment对象的名称、标签、注释和命名空间等元数据。其中,name是必须的,用于标识一个Deployment对象。labels是可选的,用于让容器可以选择某个Deployment对象。namespace是可选的,可以将Deployment对象放在指定的命名空间中。 4. spec spec是Deployment的主要部分,用于描述部署的策略和要创建的Pod模板。spec包括以下几个部分: - replicas:定义需要创建的Pod的副本数量。 - selector:用于标识Deployment可以控制的Pod的标签。 - template:定义要创建的Pod的模板,包括容器使用的镜像、容器端口和环境变量等信息。 5. strategy strategy定义了Deployment的更新策略。可以选择RollingUpdate和Recreate两种策略。RollingUpdate逐步替换Pod,使应用程序在更新过程中保持可用。Recreate先删除所有旧的Pod然后再创建新的Pod。 6. template template定义了将创建的Pod的容器和存储等详细信息。Pod的模板定义包括以下几个部分: - metadata:定义Pod的名称、标签和注释等元数据。 - spec:定义Pod所包含的所有容器的详细信息,包括容器的镜像、命令、容器端口和存储等信息。 在K8s中,Deployment文件是非常重要的一部分。使用定义良好的Deployment文件可以使部署和更新应用程序变得快速和容易,并减少因配置错误而导致的故障。以上是K8s Deployment文件的详细介绍,希望能帮助读者更好地理解K8s Deployment的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值