国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

企業(yè)級(jí)實(shí)戰(zhàn) Spring Boot + K8S 中的滾動(dòng)發(fā)布、優(yōu)雅停機(jī)、彈性伸縮、應(yīng)用監(jiān)控、配置分離

這篇具有很好參考價(jià)值的文章主要介紹了企業(yè)級(jí)實(shí)戰(zhàn) Spring Boot + K8S 中的滾動(dòng)發(fā)布、優(yōu)雅停機(jī)、彈性伸縮、應(yīng)用監(jiān)控、配置分離。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

下面為大家介紹我司生產(chǎn)環(huán)境使用了3年的基于K8S的dev ops 配置實(shí)現(xiàn) K8s + SpringCloud實(shí)現(xiàn)零宕機(jī)發(fā)版,優(yōu)雅重啟:健康檢查+滾動(dòng)更新+優(yōu)雅停機(jī)+彈性伸縮+Prometheus監(jiān)控+配置分離(鏡像復(fù)用)

匯總配置

業(yè)務(wù)層面

項(xiàng)目依賴 pom.xml

使用 spring-boot-starter-actuator 鏡像 存活、就緒檢查

使用 prometheus 進(jìn)行應(yīng)用監(jiān)控

<!-- 引入Spring boot的監(jiān)控機(jī)制-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

定義訪問端口、路徑及權(quán)限 application.yaml

spring:
  application:
    name: project-sample
  profiles:
    active: @profileActive@
  lifecycle:
    timeout-per-shutdown-phase: 30s     # 停機(jī)過程超時(shí)時(shí)長(zhǎng)設(shè)置30s,超過30s,直接停機(jī)

server:
  port: 8080
  shutdown: graceful                    # 默認(rèn)為IMMEDIATE,表示立即關(guān)機(jī);GRACEFUL表示優(yōu)雅關(guān)機(jī)

management:
  server:
    port: 50000                         # 啟用獨(dú)立運(yùn)維端口
  metrics:
    tags:
      application: ${spring.application.name}
  endpoint:                             # 開啟shutdown和health、serviceregistry(用于nacos下線)端點(diǎn)
    shutdown:
      enabled: true
    serviceregistry:
       enabled: true
    health:
      probes:
        enabled: true
  endpoints:
    web:
      exposure:
        base-path: /actuator            # 指定上下文路徑,啟用相應(yīng)端點(diǎn)
        include: health,shutdown,metrics,prometheus

運(yùn)維層面

  • 打包屬于我們自己的dockerfile基礎(chǔ)鏡像
FROM openjdk:8-jdk-alpine

LABEL Author  andanyang
## 時(shí)區(qū)環(huán)境
ENV TZ=Asia/Shanghai
ENV JAVA_OPT
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /root
## 使用 skywalking 不用可忽略
COPY skywalking-agent /root/agent

## 解決EasyExcel 缺少字體問題
RUN apk --update add curl bash ttf-dejavu && \
  rm -rf /var/cache/apk/*
RUN apk --update --no-cache add tini
## 使用 tini 啟動(dòng)應(yīng)用 讓容器里也可以使用jps等命令
ENTRYPOINT ["tini"]
docker build -t common/jdk8 .
  • 打包各個(gè)服務(wù)的鏡像

    FROM common/jdk8
    ## 不使用 skywalking 可移除
    CMD /usr/bin/java -Djava.security.egd=file:/dev/./urandom -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/root/log/ -javaagent:/root/agent/skywalking-agent.jar ${JAVA_OPT} -jar ${app_name}.jar
                    
    COPY ${app_name}-impl/target/${app_name}-impl.jar ${app_name}.jar
    
    

k8s部署模版deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {APP_NAME}
  labels:
    app: {APP_NAME}
spec:
  selector:
    matchLabels:
      app: {APP_NAME}
  replicas: {REPLICAS}                            # Pod副本數(shù)
  strategy:
    type: RollingUpdate                           # 滾動(dòng)更新策略
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      name: {APP_NAME}
      labels:
        app: {APP_NAME}
      annotations:
        timestamp: {TIMESTAMP}
        prometheus.io/port: "50000"               # 不能動(dòng)態(tài)賦值
        prometheus.io/path: /actuator/prometheus
        prometheus.io/scrape: "true"              # 基于pod的服務(wù)發(fā)現(xiàn)
    spec:
      affinity:                                   # 設(shè)置調(diào)度策略,采取多主機(jī)/多可用區(qū)部署
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - {APP_NAME}
              topologyKey: "kubernetes.io/hostname" # 多可用區(qū)為"topology.kubernetes.io/zone"
      terminationGracePeriodSeconds: 30             # 優(yōu)雅終止寬限期
      containers:
      - name: {APP_NAME}
        image: {IMAGE_URL}
        imagePullPolicy: Always
        ports:
        - containerPort: {APP_PORT}
        - name: management-port
          containerPort: 50000         # 應(yīng)用管理端口
        readinessProbe:                # 就緒探針
          httpGet:
            path: /actuator/health/readiness
            port: management-port
          initialDelaySeconds: 30      # 延遲加載時(shí)間
          periodSeconds: 10            # 重試時(shí)間間隔
          timeoutSeconds: 1            # 超時(shí)時(shí)間設(shè)置
          successThreshold: 1          # 健康閾值
          failureThreshold: 9          # 不健康閾值
        livenessProbe:                 # 存活探針
          httpGet:
            path: /actuator/health/liveness
            port: management-port
          initialDelaySeconds: 30      # 延遲加載時(shí)間
          periodSeconds: 10            # 重試時(shí)間間隔
          timeoutSeconds: 1            # 超時(shí)時(shí)間設(shè)置
          successThreshold: 1          # 健康閾值
          failureThreshold: 6          # 不健康閾值
        resources:                     # 容器資源管理
          limits:                      # 資源限制(監(jiān)控使用情況)
            cpu: 0.5
            memory: 1Gi
          requests:                    # 最小可用資源(靈活調(diào)度)
            cpu: 0.1
            memory: 200Mi
        lifecycle:
          preStop:
              exec:
                command:               # 結(jié)束回調(diào)鉤子,在實(shí)戰(zhàn)中SpringClould 中防止注冊(cè)中心沒有及時(shí)下掉服務(wù),最好需要手動(dòng)下線服務(wù)。再安全下線
                  - /bin/sh
                  - "-c"
                  - >-
                    curl -X "POST" "http://localhost:50000/actuator/service-registry?status=DOWN" -H "Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8";sleep
                    10s;curl -X "POST" "http://localhost:50000/actuator/shutdown" -H "Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8";
        env:
          - name: TZ
            value: Asia/Shanghai
          - name: JAVA_OPT              # 配置JAVA啟動(dòng)參數(shù)
          	value: "-Xmx4g -Xms4g"
---
kind: HorizontalPodAutoscaler            # 彈性伸縮控制器
apiVersion: autoscaling/v2beta2
metadata:
  name: {APP_NAME}
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: {APP_NAME}
  minReplicas: {REPLICAS}                # 縮放范圍
  maxReplicas: 6
  metrics:
    - type: Resource
      resource:
        name: cpu                        # 指定資源指標(biāo)
        target:
          type: Utilization
          averageUtilization: 50

友情導(dǎo)讀

k8s學(xué)習(xí)系列

Prometheus 實(shí)戰(zhàn)系列

Prometheus Operator實(shí)戰(zhàn)—— Prometheus、Alertmanager、Grafana 監(jiān)控Springboot服務(wù)

基于K8S構(gòu)建企業(yè)級(jí)Jenkins CI/CD平臺(tái)實(shí)戰(zhàn)(一) 之 環(huán)境搭建

基于K8S構(gòu)建企業(yè)級(jí)Jenkins CI/CD平臺(tái)實(shí)戰(zhàn)(二) 之 kubernetes-plugin 插件使用

Jenkins優(yōu)化Kubernetes部署流水線文章來源地址http://www.zghlxwxcb.cn/news/detail-463416.html

到了這里,關(guān)于企業(yè)級(jí)實(shí)戰(zhàn) Spring Boot + K8S 中的滾動(dòng)發(fā)布、優(yōu)雅停機(jī)、彈性伸縮、應(yīng)用監(jiān)控、配置分離的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java企業(yè)級(jí)開發(fā)學(xué)習(xí)筆記(4.4)Spring Boot加載自定義配置文件

    Java企業(yè)級(jí)開發(fā)學(xué)習(xí)筆記(4.4)Spring Boot加載自定義配置文件

    創(chuàng)建 Spring Boot 項(xiàng)目 單擊【創(chuàng)建】按鈕 在 resources 里創(chuàng)建 myconfig.properties 文件 設(shè)置文件編碼 設(shè)置學(xué)生的四個(gè)屬性值 在 cn.kox.boot 包里創(chuàng)建config子包,在子包里創(chuàng)建 StudentConfig 打開自帶的測(cè)試類 ConfigDemo01ApplicationTests 注入學(xué)生配置實(shí)體,創(chuàng)建 testStudentConfig() 測(cè)試方法,在里面輸

    2024年02月08日
    瀏覽(27)
  • “深入理解Spring Boot:構(gòu)建獨(dú)立、可擴(kuò)展的企業(yè)級(jí)應(yīng)用程序的最佳實(shí)踐“

    標(biāo)題:深入理解Spring Boot:構(gòu)建獨(dú)立、可擴(kuò)展的企業(yè)級(jí)應(yīng)用程序的最佳實(shí)踐 摘要:Spring Boot是一個(gè)強(qiáng)大的框架,可以幫助開發(fā)人員快速構(gòu)建獨(dú)立、可擴(kuò)展的企業(yè)級(jí)應(yīng)用程序。本文將深入探討Spring Boot的核心概念和最佳實(shí)踐,并通過示例代碼演示其用法。 正文: 什么是Spring Bo

    2024年02月14日
    瀏覽(33)
  • Java企業(yè)級(jí)信息系統(tǒng)開發(fā)學(xué)習(xí)筆記(4.2)Spring Boot項(xiàng)目單元測(cè)試、熱部署與原理分析

    Java企業(yè)級(jí)信息系統(tǒng)開發(fā)學(xué)習(xí)筆記(4.2)Spring Boot項(xiàng)目單元測(cè)試、熱部署與原理分析

    該文章主要為完成實(shí)訓(xùn)任務(wù),詳細(xì)實(shí)現(xiàn)過程及結(jié)果見【http://t.csdn.cn/pG623】 1. 添加測(cè)試依賴啟動(dòng)器和單元測(cè)試 修改pom.xml文件,添加依賴 刷新項(xiàng)目依賴 2. 創(chuàng)建測(cè)試類與測(cè)試方法 在 src/test/java 里創(chuàng)建 cn.kox.boot 包,創(chuàng)建測(cè)試類 TestHelloWorld01 給測(cè)試類添加測(cè)試啟動(dòng)器注解與Spring

    2024年02月10日
    瀏覽(27)
  • 企業(yè)級(jí)DevOps實(shí)戰(zhàn)

    Zookeeper(動(dòng)物管理員)是一個(gè)開源的分布式協(xié)調(diào)服務(wù),目前由Apache進(jìn)行維護(hù)。 MQ概念 MQ(消息隊(duì)列)是一種應(yīng)用程序之間的通信方法,應(yīng)用程序通過讀寫出入隊(duì)列的消息(針對(duì)應(yīng)用程序的數(shù)據(jù))通信,而無須專用連接。 MQ是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),是指把要傳輸?shù)臄?shù)據(jù)(消

    2024年02月20日
    瀏覽(24)
  • CDH6.3.2企業(yè)級(jí)安裝實(shí)戰(zhàn)

    1、環(huán)境介紹 IP 操作系統(tǒng) 聯(lián)網(wǎng) 10.191.15.15 Centos 7.4 離網(wǎng) 10.191.15.16 Centos 7.4 離網(wǎng) 10.191.15.17 Centos 7.4 離網(wǎng) 10.191.15.18 Centos 7.4 離網(wǎng) 2、搭建本地Yum源 2.1 配置本地基礎(chǔ)Yum源 1、上傳鏡像到服務(wù)器 下載的Centos鏡像為 CentOS-7-x86_64-Everything-1708.iso , 放置目錄為: /root/download

    2024年01月18日
    瀏覽(35)
  • 前端工程化實(shí)戰(zhàn)-開發(fā)企業(yè)級(jí)CLI

    前端工程化實(shí)戰(zhàn)-開發(fā)企業(yè)級(jí)CLI

    1. 前言 腳手架大家一定都不陌生,比如我們經(jīng)常使用的 vue-cli、create-react-app,它可以幫助我們快速的初始化一個(gè)項(xiàng)目,無需從零配置,極大的方便我們的開發(fā)。到這里你可能會(huì)疑惑,既然市面上有成熟的腳手架,為什么需要寫一個(gè)屬于自己的腳手架呢。因?yàn)楣材_手架雖然強(qiáng)

    2024年02月12日
    瀏覽(106)
  • 企業(yè)級(jí)微服務(wù)架構(gòu)實(shí)戰(zhàn)項(xiàng)目--xx優(yōu)選-用戶登錄

    企業(yè)級(jí)微服務(wù)架構(gòu)實(shí)戰(zhàn)項(xiàng)目--xx優(yōu)選-用戶登錄

    1.登錄常量 ?2.登錄地址 ?3.配置域名 4.啟動(dòng)程序 ? ? 觸發(fā)連接小程序后端的登錄接口 ? ?小程序controller的登錄方法 ?

    2024年02月11日
    瀏覽(21)
  • Android企業(yè)級(jí)實(shí)戰(zhàn)-界面篇-2,android音頻開發(fā)

    Android企業(yè)級(jí)實(shí)戰(zhàn)-界面篇-2,android音頻開發(fā)

    ?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"? RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android” android:id=“@id/user_profile_layout” android:layout_width=“fill_parent” android:layout_height=“100.0dip” android:clickable=“true” android:clipChildren=“false” ImageView android:id=“@id/profile_cover” android:layout_width=“

    2024年04月27日
    瀏覽(24)
  • Kafka在企業(yè)級(jí)應(yīng)用中的實(shí)踐

    Kafka在企業(yè)級(jí)應(yīng)用中的實(shí)踐

    前面說了很多Kafka的性能優(yōu)點(diǎn),有些童鞋要說了,這Kafka在企業(yè)開發(fā)或者企業(yè)級(jí)應(yīng)用中要怎么用呢?今天咱們就來簡(jiǎn)單探究一下。 Kafka 提供了一個(gè)可靠的消息傳遞機(jī)制,使得企業(yè)能夠?qū)⒉煌M件之間的通信解耦,實(shí)現(xiàn)高效的異步處理。在企業(yè)級(jí)應(yīng)用中,可以通過以下步驟來使

    2024年02月11日
    瀏覽(22)
  • Spring Boot + k8s = 王炸!

    來源:https://blog.csdn.net/qq_14999375/article/details/123309636 K8s + Spring Boot實(shí)現(xiàn)零宕機(jī)發(fā)布:健康檢查+滾動(dòng)更新+優(yōu)雅停機(jī)+彈性伸縮+Prometheus監(jiān)控+配置分離(鏡像復(fù)用) 健康檢查類型:就緒探針(readiness)+ 存活探針(liveness) 探針類型:exec(進(jìn)入容器執(zhí)行腳本)、tcpSocket(探測(cè)端口

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包