首页 > 解决方案 > 使用 Kubernetes 进行零停机部署

问题描述

我正在尝试使用 Kubernetes 实现零停机部署。我读到的是,我们readiness-probe可以RollingUpdateDeployments. 我已经在我的文件中尝试了这两件事,Deployment.yml但是每次我遇到停机时间时,我都想避免这种情况。该服务是基于 HTTP 的服务,因此我使用了HTTP-Get探针。

我正在使用Helm 图表进行部署。我正在通过重新部署相同的代码和相同的 K8s 配置来测试 0 停机时间。

下面给出的是 YAML 文件。

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: depName
  labels:
    app: appName
    chart: chart
    release: relName
    heritage: relService
spec:
  selector:
    matchLabels:
     app: appName
  replicas: 2
  strategy:
    type: RollingUpdate
    rollingUpdate: 
      maxUnavailable: 0
      maxSurge: 1    
  template:
    metadata:
      labels:
        app: appName
    spec:
      containers:
        - name: chartName
          resources:
            limits:
              cpu: 2000m
            requests:
              cpu: 1000m
          image: "repsitoryImage:tag"
          imagePullPolicy: always
          env:
           - name: GET_HOSTS_FROM
             value: dns
           - name: SOME_OTHER_VAR
             value: yasssd
          ports:
           - containerPort: internalPort
             name: someName
          readinessProbe:
            httpGet:
              path: /config
              port: 8080
            initialDelaySeconds: 15
            periodSeconds: 15  
            successThreshold: 1

除此之外,我还配置了 HPA。我希望停机时间为零——这是我无法实现的。

提前致谢 !

标签: kubernetes

解决方案


推荐阅读