91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes如何進行readinessProbe

發布時間:2021-10-19 17:23:49 來源:億速云 閱讀:113 作者:柒染 欄目:大數據

這篇文章給大家介紹kubernetes如何進行readinessProbe,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

docker容器啟動成功,并不代表容器中的服務就能處理外部的請求。比方說java web項目啟動需要一段時間。
Kubernetes提供了readiness probe來檢測pod中的容器是否可以接受外部流量。
可以在java項目中提供一個接口,kubernetes發請求給此接口,當此接口返回數據時,則表明服務準備就緒,可以接受外部請求了。

先看一個簡單例子,準備一個spring boot工程,提供一個外部接口。以下服務用的端口號是10012

    @GetMapping("/test02/version")
    public String version(){
        return "app02/version/v1";
    }
在node節點上,編寫Docker配置文件,并打成鏡像

Dockerfile

FROM openjdk:8
ADD *.jar /app/app.jar
ADD entrypoint.sh /app/
# PORT="10012" 是項目端口號
ENV PORT="10012" TIME="Asia/Shanghai" JAVA_OPS="-Xmx256m -Xms256m -XX:+UseConcMarkSweepGC"
RUN set -e \
    && chmod +x /app/entrypoint.sh \
    && ln -snf /usr/share/zoneinfo/$TIME /etc/localtime \
    && echo $TIME > /etc/timezone
ENTRYPOINT  ["/app/entrypoint.sh"]
EXPOSE $PORT
STOPSIGNAL SIGTERM
entrypoint.sh

#!/bin/sh
exec java ${JAVA_OPS} -jar /app/app.jar
打成鏡像codingsoldier/app02:v1

docker build -t codingsoldier/app02:v1 .

在master節點上編寫部署文件

k8s-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: service-app02
spec:
  selector:
    app: app02
  ports:
  - name: http
    port: 10012
    targetPort: 10012
k8s-app02.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-app02
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app02
  template:
    metadata:
      labels:
        app: app02
    spec:
      containers:
      - name: app02
        image: codingsoldier/app02:v1
        ports:
        - name: http
          containerPort: 10012
部署服務

kubectl apply -f k8s-service

kubectl apply -f k8s-app02

獲取k8s-service的ip

kubectl get svc 

重新開一個終端,循環調用接口,不要關閉這個終端,要一直開著。

while true; \
curl http://10.101.75.203:10012/test02/version; \
echo " "; \
do sleep 1; \
done;

現在就來升級版本吧

1、把/test02/version接口返回值改成v2

    @GetMapping("/test02/version")
    public String version(){
        return "app02/version/v2";
    }
2、打成jar包,上傳到所有node節點

3、生成docker鏡像

docker build -t codingsoldier/app02:v2 .

4、修改k8s-app02.yaml鏡像為v2

image: codingsoldier/app02:v2

5、重新開一個終端,執行  kubectl get pod -w   動態查看pod狀態

6、重新部署下k8s-app02.yaml

kubectl apply -f k8s-app02.yaml 

在循環調用的監控中可以看到,服務有短暫的時間無法提供服務。

原因是:docker容器啟動成功了,k8s就認為此容器可以提供服務了。但事實上docker容器啟動成功的時候,java服務還沒啟動完成,暫時無法給外部提供服務。

解決辦法,使用readiness probe來檢測pod中的容器是否可以接受外部流量。

1、java工程新增一個服務就緒接口

    //服務就緒接口,提供給k8s檢測
    @GetMapping("/readiness")
    public String readiness(){
        return "yes";
    }
2、k8s-app02.yaml加上就緒探針

readinessProbe:
  httpGet:
    port: http
    path: /readiness
  initialDelaySeconds: 20
  periodSeconds: 10


readinessProbe詳細的配置:
    initialDelaySeconds:容器啟動后第一次執行探測是需要等待多少秒。
    periodSeconds:執行探測的頻率。默認是10秒,最小1秒。
    timeoutSeconds:探測超時時間。默認1秒,最小1秒。
    successThreshold:探測失敗后,最少連續探測成功多少次才被認定為成功。默認是1。對于liveness必須是1。最小值是1。
    failureThreshold:探測成功后,最少連續探測失敗多少次才被認定為失敗。默認是3。最小值是1。

httpGet配置項:
    host:連接的主機名,默認連接到pod的IP。你可能想在http header中設置”Host”而不是使用IP。
    scheme:連接使用的schema,默認HTTP。
    path: 訪問的HTTP server的path。
    httpHeaders:自定義請求的header。HTTP運行重復的header。
    port:訪問的容器的端口名字或者端口號。端口號必須介于1和65525之間。    

3、改下 /test02/version ,的返回值 app02/version/v3

4、修改 k8s-app02.yaml中鏡像的版本image: codingsoldier/app02:v3

5、打成jar,上傳

6、打成鏡像

docker build -t codingsoldier/app02:v3 .

7、重新部署服務

kubectl apply -f k8s-app02.yaml 

查看循環調用接口的終端,服務一直可用

查看運行了kubectl get pod -w 的終端

1、新pod處于Running狀態,但READY是0/1。pod已經運行,但未就緒,此時不接收外部請求

2、25秒后,新pod處于Running狀態,READY是1/1。pod可以接收外部請求了

3、新pod能夠接收外部請求后,一個舊pod開始終止

4、由于pod服務數設置為2,所以此時另一個新pod開始創建,過程跟上面的一樣,新pod能就收請求后,舊pod終止。

關于kubernetes如何進行readinessProbe就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安顺市| 沧州市| 台南市| 炉霍县| 濉溪县| 通化县| 松溪县| 建平县| 定边县| 合肥市| 仁布县| 滕州市| 仁寿县| 洮南市| 班戈县| 双城市| 当阳市| 师宗县| 苗栗县| 尼勒克县| 上犹县| 科尔| 连山| 穆棱市| 石棉县| 文昌市| 商都县| 永济市| 香河县| 图木舒克市| 南阳市| 潢川县| 印江| 浦北县| 福鼎市| 江源县| 佛教| 青神县| 襄汾县| 余庆县| 苏尼特左旗|