Mind and Hand Help

rolling-update in k8s

example

update.sh

#!/bin/bash # shellcheck disable=SC2164 disable=SC1090 disable=SC2154 SHELL_FOLDER=$(cd "$(dirname "$0")" && pwd) cd "$SHELL_FOLDER" source <(curl -sSL https://dev.kubectl.net/func/log.sh) source <(curl -sSL https://dev.kubectl.net/func/version_utils.sh) namespace="rolling-update" deployment_name="rolling-update-example" container_name="rolling-update-example" image_name="rolling-update-example" # 判断deployment(rolling-update-example)是否存在 if kubectl get deployment/$deployment_name -n $namespace >/dev/null 2>&1; then log_info "k8s" "deployment($deployment_name) exists" else log_info "k8s" "deployment($deployment_name) does not exist, create it" kubectl apply -f deploy.yml log_info "k8s" "deployment($deployment_name) created,then exit" exit fi if [ -z "$git_version" ]; then log_error "git_version is empty" exit 1 fi kubectl set image deployment/$deployment_name \ -n $namespace \ $container_name=$image_name:$git_version

deploy.yml

apiVersion: apps/v1 kind: Deployment metadata: name: rolling-update-example namespace: rolling-update spec: replicas: 2 selector: matchLabels: app: rolling-update-example strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 # 更新过程中允许超出期望副本数的最大值,可以是数字或百分比 maxUnavailable: 0 # 更新过程中允许不可用的最大副本数,可以是数字或百分比 template: metadata: labels: app: rolling-update-example spec: containers: - image: "rolling-update-example:latest" name: rolling-update-example env: - name: TZ value: Asia/Shanghai - name: JAVA_OPTIONS value: -Xms256M -Xmx256M imagePullPolicy: Always ports: - containerPort: 8080 - containerPort: 50000 # lifecycle: # preStop: # 结束回调钩子 # exec: # command: [ "curl", "-XPOST", "127.0.0.1:50000/actuator/shutdown" ] livenessProbe: httpGet: path: /liveness port: 8080 initialDelaySeconds: 30 # 延迟加载时间 periodSeconds: 10 # 重试时间间隔 timeoutSeconds: 5 # 超时时间设置 successThreshold: 1 # 健康阈值 failureThreshold: 6 # 不健康阈值 readinessProbe: httpGet: path: /readiness port: 8080 initialDelaySeconds: 30 # 延迟加载时间 periodSeconds: 10 # 重试时间间隔 timeoutSeconds: 5 # 超时时间设置 successThreshold: 1 # 健康阈值 failureThreshold: 6 # 不健康阈值 --- # service apiVersion: v1 kind: Service metadata: name: rolling-update-example-service namespace: rolling-update spec: selector: app: rolling-update-example type: ClusterIP ports: - port: 8080 targetPort: 8080
27 January 2026