學習筆記十九:Pod常見的狀態和重啟策略

Pod常見的狀態和重啟策略

  • 常見的pod狀態
      • 第一階段:
      • 第二階段:
      • 擴展:
  • pod重啟策略
      • 測試Always重啟策略
          • 正常停止容器內的tomcat服務
          • 非正常停止容器里的tomcat服務
      • 測試never重啟策略
          • 正常停止容器里的tomcat服務
          • 非正常停止容器里的tomcat服務
      • 測試OnFailure重啟策略
          • 正常停止容器里的tomcat服務
          • 非正常停止容器里的tomcat服務

常見的pod狀態

在這里插入圖片描述

第一階段:

  • 掛起(Pending):
    1、正在創建Pod但是Pod中的容器還沒有全部被創建完成,處于此狀態的Pod應該檢查Pod依賴的存儲是否有權限掛載、鏡像是否可以下載、調度是否正常等
    2、我們在請求創建pod時,條件不滿足,調度沒有完成,沒有任何一個節點能滿足調度條件,已經創建了pod但是沒有適合它運行的節點叫做掛起,調度沒有完成。

  • 失敗(Failed):
    Pod 中的所有容器都已終止了,并且至少有一個容器是因為失敗終止。也就是說,容器以非0狀態退出或者被系統終止。

  • 未知(Unknown):
    未知狀態,所謂pod是什么狀態是apiserver和運行在pod節點的kubelet進行通信獲取狀態信息的,如果節點之上的kubelet本身出故障,那么apiserver就連不上kubelet,得不到信息了,就會看Unknown,通常是由于與pod所在的node節點通信錯誤。

  • Error 狀態:
    Pod 啟動過程中發生了錯誤

  • 成功(Succeeded):
    Pod中的所有容器都被成功終止,即pod里所有的containers均已terminated。

第二階段:

  • Unschedulable:Pod不能被調度, scheduler沒有匹配到合適的node節點
  • PodScheduled:pod正處于調度中,在scheduler剛開始調度的時候,還沒有將pod分配到指定的node,在篩選出合適的節點后就會更新etcd數據,將pod分配到指定的node
  • Initialized:所有pod中的初始化容器已經完成了
  • ImagePullBackOff:Pod所在的node節點下載鏡像失敗
  • Running:Pod內部的容器已經被創建并且啟動。

擴展:

  • Evicted狀態:出現這種情況,多見于系統內存或硬盤資源不足,可df-h查看docker存儲所在目錄的資源使用情況,如果百分比大于85%,就要及時清理下資源,尤其是一些大文件、docker鏡像。
  • CrashLoopBackOff:容器曾經啟動了,但可能又異常退出了

pod重啟策略

  • Pod的重啟策略(RestartPolicy)應用于Pod內的所有容器,當某個容器異常退出或者健康檢查失敗時,kubelet將根據 重啟策略來進行相應的操作。
  • Pod 的 spec 中包含一個 restartPolicy 字段,其可能取值包括 Always、OnFailure 和 Never。默認值是 Always。
  • Always:只要容器異常退出,kubelet就會自動重啟該容器。(這個是默認的重啟策略)
  • OnFailure:當容器終止運行且退出碼不為0時,由kubelet自動重啟該容器。
  • Never:不論容器運行狀態如何,kubelet都不會重啟該容器。

測試Always重啟策略

vim pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: defaultlabels:app: myapp
spec:restartPolicy: Alwayscontainers:- name:  tomcat-pod-javaports:- containerPort: 8080image: xianchao/tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresent
kubectl apply -f pod.yaml
正常停止容器內的tomcat服務
kubectl exec -it demo-pod -- /bin/bash
/usr/local/tomcat/bin/shutdown.sh

查看pod狀態:發現正常停止容器里的tomcat服務,容器重啟了一次,pod又恢復正常了

kubectl get podNAME         READY   STATUS    RESTARTS     AGE
demo-pod   1/1     Running   1 (5s ago)   3m24s
非正常停止容器里的tomcat服務
kubectl exec -it demo-pod -- /bin/bash
kill 1

可以看到容器終止了,并且又重啟一次,重啟次數增加了一次

kubectl get podNAME         READY   STATUS    RESTARTS     AGE
demo-pod   1/1     Running   2 (5s ago)   3m24s

測試never重啟策略

vim pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: defaultlabels:app: myapp
spec:restartPolicy: Nevercontainers:- name:  tomcat-pod-javaports:- containerPort: 8080image: xianchao/tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresent	
kubectl apply -f pod.yaml
正常停止容器里的tomcat服務
kubectl exec -it demo-pod -- /bin/bash
/usr/local/tomcat/bin/shutdown.sh

查看pod狀態:發現正常停止容器里的tomcat服務,pod正常運行,容器沒有重啟

kubectl get podNAME         READY   STATUS     RESTARTS     AGE
demo-pod   1/1       Completed  0     3m24s
非正常停止容器里的tomcat服務
kubectl exec -it tomcat-pod -- /bin/bash
kill 1

可以看到容器狀態是error,并且沒有重啟,這說明重啟策略是never,那么pod里容器服務無論如何終止,都不會重啟

kubectl get podNAME         READY   STATUS    RESTARTS     AGE
demo-pod   1/1       error     0            3m24s

測試OnFailure重啟策略

vim pod.yaml 
apiVersion: v1
kind: Pod
metadata:name: demo-podnamespace: defaultlabels:app: myapp
spec:restartPolicy: OnFailurecontainers:- name:  tomcat-pod-javaports:- containerPort: 8080image: xianchao/tomcat-8.5-jre8:v1imagePullPolicy: IfNotPresent	
kubectl apply -f pod.yaml
正常停止容器里的tomcat服務
kubectl exec -it demo-pod -- /bin/bash
/usr/local/tomcat/bin/shutdown.sh

查看pod狀態:發現正常停止容器里的tomcat服務,退出碼是0,pod里的容器不會重啟

kubectl get podNAME         READY   STATUS    RESTARTS     AGE
demo-pod     0/1     complete   0     3m24s
非正常停止容器里的tomcat服務
kubectl exec -it tomcat-pod -- /bin/bash
kill 1

上面可以看到非正常停止pod里的容器,容器退出碼不是0,那就會重啟容器

kubectl get podNAME         READY   STATUS    RESTARTS     AGE
demo-pod   1/1       running    1         3m24s

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39741.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac安裝opencv后無法導入cv2的解決方法

前提條件:以下兩個插件安裝成功 pip install opencv-python pip install --user opencv-contrib-python 注:直接用pip install opencv-contrib-python如果報錯,就加上“–user" 第一步: 設置–添加python解釋器 第二步&am…

go語言惡意代碼檢測系統--對接前端可視化與算法檢測部分

Malware Detect System 1 產品介紹 惡意代碼檢測系統。 2 產品描述 2.1 產品功能 功能點詳細描述注冊賬號未注冊用戶注冊成為產品用戶,從而具備享有產品各項服務的資格登錄賬號用戶登錄產品,獲得產品提供的各項服務上傳惡意樣本用戶可以將上傳自己的…

uniapp微信小程序消息訂閱快速上手

一、微信公眾平臺小程序開通消息訂閱并設置模板 這邊的模板id和詳細內容后續前后端需要使用 二、uniapp前端 需要是一個button觸發 js: wx.getSetting({success(res){console.log(res)if(res.authSetting[scope.subscribeMessage]){// 業務邏輯}else{uni.request…

智安網絡|深入比較:Sass系統與源碼系統的差異及選擇指南

隨著前端開發的快速發展,開發人員需要使用更高效和靈活的工具來處理樣式表。在這個領域,Sass系統和源碼系統是兩個備受關注的選項。 Sass系統 Sass(Syntactically Awesome Style Sheets)是一種CSS預處理器,它擴展了CS…

CSS常見單位匯總

像素(px): 絕對單位,以屏幕上的實際像素為基準,最常用于具體的尺寸和位置表示。 百分比(%): 相對單位,基于父元素的屬性計算大小,如寬度、高度、邊距等。 自適…

@Param詳解

文章目錄 背景什么是ParamParam的使用方法使用方法:遇到的問題及因Param解決了什么問題使用與不使用對比 Param是如何進行映射的總結 背景 最近在開發過程中,在寫mapper接口是在參數前加了Param注解,但是在運行的時候就會報錯,說…

關于游戲盾

游戲盾(Game Shield)是一種針對游戲行業特點的網絡安全解決方案,主要針對游戲平臺面臨的各種網絡攻擊和安全威脅。以下是一些原因,說明為什么游戲平臺需要加游戲盾: 1. DDoS攻擊:游戲平臺通常容易受到分布式…

深入理解多態:面向對象編程中的靈活性與擴展性

文章目錄 代碼學習-多態什么是多態?多態在代碼中的體現多態的優勢 代碼學習-多態 什么是多態? 多態是面向對象編程中的重要概念之一,它指的是為不同的數據類型的實體提供統一的接口。簡而言之,就是同一個命令在不同的對象上會產…

更多openEuler鏡像加入AWS Marketplace!

自2023年7月openEuler 22.03 LTS SP1正式登陸AWS Marketplace后,openEuler社區一直持續于在AWS上提供更多版本。 目前,openEuler22.03 LTS SP1 ,SP2兩個版本及 x86 arm64兩種架構的四個鏡像均可通過AWS對外提供,且在亞太及歐洲15個Region開放…

wkhtmltopdf 與 .Net Core

wkhtmltopdf 是使用webkit引擎轉化為pdf的開源小插件. 其有.NET CORE版本的組件,DinkToPdf,但該控件對跨平臺支持有限。 故打算在Linux上安裝相關插件直接調用. 準備工作 虛擬機:Linux version 3.10.0-1160.el7.x86_64 wkhtmltox開發包:wkhtmltox_0.12…

Caused by: java.lang.ClassNotFoundException: net.sf.cglib.proxy.MethodProxy

1. 異常信息 2023-08-16 14:17:14.817 INFO 14304 [ restartedMain] io.seata.config.ConfigurationFactory : load Configuration:FileConfiguration$$EnhancerByCGLIB$$862af1eb 2023-08-16 14:17:15.006 ERROR 14304 [ restartedMain] g.springframework.boot.Sprin…

大數據Flink(六十):Flink 數據流和分層 API介紹

文章目錄 Flink 數據流和分層 API介紹 一、??????????????Flink 數據流

ZooKeeper的應用場景(命名服務、分布式協調通知)

3 命名服務 命名服務(NameService)也是分布式系統中比較常見的一類場景,在《Java網絡高級編程》一書中提到,命名服務是分布式系統最基本的公共服務之一。在分布式系統中,被命名的實體通常可以是集群中的機器、提供的服務地址或遠程對象等一這…

iOS申請證書(.p12)和描述文件(.mobileprovision)

打包app時,經常會用到ios證書,但很多人都苦于沒有蘋果電腦,即使有蘋果電腦的,也會覺得蘋果電腦操作也很麻煩,這里記錄一下,用香蕉云編,申請證書及描述文件的過程。 香蕉云編的地址:…

【C語言】每日一題(多數元素)

多數元素,鏈接奉上 方法 1.摩爾投票2.合理但錯誤的方法2.1暴力循環2.2排序求出中間元素中間元素 1.摩爾投票 先來簡單的介紹摩爾投票: 摩爾投票是一種用來解決絕對眾數問題的算法。 什么是絕對眾數呢? 在一個集合中,如果一個元素…

[國產MCU]-BL602開發實例-SPI與WS2812B驅動

SPI與WS2812B驅動 文章目錄 SPI與WS2812B驅動1、BL602的SPI介紹2、SPI驅動API介紹3、WS2812B介紹4、WS2812B的SPI驅動實現串行外設接口(Serial Peripheral Interface Bus,SPI)是一種用于短程通信的同步串行通信接口規范,設備之間使用全雙工模式通信,是一個主機和一個或多個…

每天一練:SpringBoot連接mq

目錄 每天一練:Springboot連接rabbitmq 每天一練:Springboot連接rabbitmq 目錄一、部署Rabbitmq?二、增加maven依賴三、連接RabbitMq四、發布和訂閱消息總結 一、部署Rabbitmq? 這里rabbitmq采用docker安裝部署。 拉取docker鏡像 [root192 ~]# docker…

【ChatGLM】ChatGLM-6B模型Win+4GB顯卡本地部署筆記

ChatGLM-6B是清華大學知識工程和數據挖掘小組發布的一個類似ChatGPT的開源對話機器人,由于該模型是經過約1T標識符的中英文訓練,且大部分都是中文,因此十分適合國內使用。 預期環境 本機電腦備注: Win10專業版 32G內存256固態系統…

ChatGPT 調教日記(二):程序員轉量化的背景知識

程序員如何學習量化金融 作為一個程序員學習量化金融(quant)是一個不錯的選擇。以下是一些建議: 學習金融基礎知識:了解金融市場、投資策略和金融產品。這將幫助你理解量化金融的背景和應用場景。 學習統計學和數學:…

FlutterBoost 實現Flutter頁面內嵌iOS view

在使用Flutter混合開發中會遇到一些原生比Flutter優秀的控件,不想使用Flutter的控件,想在Flutter中使用原生控件。這時就會用到 Flutter頁面中內嵌 原生view,這里簡單介紹一個 內嵌 iOS 的view。 注:這里使用了 FlutterBoost。網…