溫馨提示×

溫馨提示×

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

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

利用Kubernetes實現(xiàn)各種應(yīng)用

發(fā)布時間:2021-06-22 16:12:52 來源:億速云 閱讀:297 作者:chen 欄目:云計算

這篇文章主要講解了“利用Kubernetes實現(xiàn)各種應(yīng)用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“利用Kubernetes實現(xiàn)各種應(yīng)用”吧!

本節(jié)課將帶領(lǐng)大家學(xué)習(xí)探針與Deployment的使用。通過實踐與學(xué)習(xí),了解Kubernetes如何實現(xiàn)應(yīng)用的高可用。

課程主要分為以下四個部分:

第一部分:探針

第二部分:Deployment的使用

第三部分:Demo

第四部分:總結(jié)

01

Kubernets探針

當(dāng)你使用kubernetes的時候,有沒有遇到過Pod在啟動后一會就掛掉然后又重新啟動這樣的惡性循環(huán)?Kubernetes如何檢測pod是否還存活?雖然容器已經(jīng)啟動,Kubernetes如何知道容器的進程是否準備好對外提供服務(wù)了呢?答案是:探針

探針種類

LivenessProbe

  • 介紹:LivenessProbe 又稱存活探針,其作用主要用于檢測容器是否還在運行。kubelet 使用存活探測器來知道什么時候要重啟容器。例如,存活探測器可以捕捉到死鎖(應(yīng)用程序在運行,但是無法繼續(xù)執(zhí)行后面的步驟)。這樣的情況下重啟容器有助于讓應(yīng)用程序在有問題的情況下更可用。

  • 用途:Kubernetes 可以通過存活探針來檢查容器是否還在運行。如果探測失敗,則 Kubernetes 將會認為容器已經(jīng)不在運行,將會重新啟動容器。

  • 探測方式:

    1. HTTP:kubelet 對容器的 IP 地址指定路徑執(zhí)行 HTTP GET 請求。根據(jù)返回碼判斷是否探測成功
    2. TCP套接字:嘗試與容器指定端口建立TCP連接,如果建立成功則表示探測成功。
    3. Exec:在容器內(nèi)執(zhí)行任意命令,檢查退出狀態(tài)碼。如返回值為0,則探測成功。

  • 存活探針yaml文件:

    綠色為 http 探針,這里請求容器的8080端口,如果返回是 2xx,或者 3xx,那么表示探測成功。

    紅色為 exec 探針,這里執(zhí)行了一個 cat 命令。

    藍色的為 tcp 探針。作用為和8080端口嘗試建立 TCP 連接。

利用Kubernetes實現(xiàn)各種應(yīng)用

ReadnessProbe:

  • 介紹:就緒探針。用于探測 Pod 是否已經(jīng)就緒。由于部分 Pod 啟動時將會有較長的初始化時間,就緒探針可以用于探測 Pod 是否已經(jīng)初始化完畢。kubelet 使用就緒探測器可以知道容器什么時候準備好了并可以開始接受請求流  量,  當(dāng)一個 Pod 內(nèi)的所有容器都準備好了,才能把這個 Pod 看作就緒了。這種信號的一個用途就是控制哪個 Pod 作為 Service 的后端。在 Pod 還沒有準備好的時候,會從 Service 的負載均衡器中被剔除的。

  •  用途:就緒探針在容器生命周期中會被定期調(diào)用。確定 Pod 是否接受客戶端請求,當(dāng)容器的準備就緒探測返回成功時,表示容器已經(jīng)準備好接受請求。

  •  探測方式:

     1.HTTP:對容器的 IP 地址指定路徑執(zhí)行 HTTP GET 請求。根據(jù)返回碼判斷是否探測成功
    2.TCP套接字:嘗試與容器指定端口建立TCP連接,如果建立成功則表示探測成功。
    3.Exec:在容器內(nèi)執(zhí)行任意命令,檢查退出狀態(tài)碼。如狀態(tài)碼為0,則探測成功。

  •  就緒探針的yaml文件:

     

    利用Kubernetes實現(xiàn)各種應(yīng)用

就緒探針與存活探針配置幾乎一致。

只是字段為 readinessProbe。

02

Deployment的使用

ReplicaSet

  • 簡介:Pod不可靠,可能會宕掉,可以配置重啟,但是如果是Pod所在的節(jié)點宕掉,Pod就會完全丟失,如果在生產(chǎn)環(huán)境就會出現(xiàn)問題。另外我們一般不會使用單個Pod,而是許多組相同的Pod來提供服務(wù),如果手動維護的話會特別困難,特別是在集群數(shù)量比較大的時候,所以這里對ReplicaSet 進行介紹。ReplicaSet 的目的是維護一組在任何時候都處于運行狀態(tài)的 Pod 副本的穩(wěn)定集合。因此,它通常用來保證給定數(shù)量的、完全相同的 Pod 的可用性。

  • 工作原理:RepicaSet 是通過一組字段來定義的,包括一個用來識別可獲得的 Pod 的集合的選擇算符,一個用來標明應(yīng)該維護的副本個數(shù)的數(shù)值,一個用來指定應(yīng)該創(chuàng)建新 Pod 以滿足副本個數(shù)條件時要使用的 Pod 模板等等。每個 ReplicaSet 都通過根據(jù)需要創(chuàng)建和 刪除 Pod 以使得副本個數(shù)達到期望值,進而實現(xiàn)其存在價值。當(dāng) ReplicaSet 需要創(chuàng)建新的 Pod 時,會使用所提供的 Pod 模板。

  • 工作過程:ReplicaSet 的目的是維護一組在任何時候都處于運行狀態(tài)的 Pod 副本的穩(wěn)定集合。因此,它通常用來保證給定數(shù)量的、完全相同的 Pod 的可用性。

     

    ?利用Kubernetes實現(xiàn)各種應(yīng)用

     每次 ReplicaSet 會監(jiān)控當(dāng)前 Pod 的數(shù)量,如果 Pod 數(shù)量多于要求的數(shù)量,則會自動刪除一 部分。否則會自動創(chuàng)建,創(chuàng)建過程中會使用模板創(chuàng)建。

     

     

    利用Kubernetes實現(xiàn)各種應(yīng)用

    ReplicaSet 為故障節(jié)點上運行的 Pod 創(chuàng)建了新的替代副本,輕松地實現(xiàn)了 pod 的水平伸縮。

    如果你更改了一個 pod 的標簽,就有可能讓它脫離它所屬的 ReplicaSet

    同理,如果你想將一個 Pod 歸到 Replicas Set 中,也可以使用修改標簽的方式將其增加到 ReplicaSet 中。

     

  •  ReplicaSet yaml 示例

     

    利用Kubernetes實現(xiàn)各種應(yīng)用

     

1.Label Selector: 標簽選擇器,用于確定作用域
2.Replicas:副本個數(shù),也就是作用域
3.Pod template: pod模板

Deployment

一個 Deployment 控制器為 Pod 和 ReplicasSet 提供聲明式的更新能力。

你負責(zé)描述 Deployment 中的 目標狀態(tài),而 Deployment 控制器以受控速率更改實際狀態(tài), 使其變?yōu)槠谕麪顟B(tài)。你可以定義 Deployment 以創(chuàng)建新的 ReplicaSet,或刪除現(xiàn)有 Deployment, 并通過新的 Deployment 收養(yǎng)其資源。

  •    Deployment yaml示例

     

    利用Kubernetes實現(xiàn)各種應(yīng)用

Deployment yaml 文件與 ReplicaSet 十分相似, 只是多了 strategy 字段。該字段主要用于描述升級方式。

   Deployment 并不直接管理 Pod

當(dāng)創(chuàng)建 Deployment 時,ReplicaSet 也會隨之創(chuàng)建。在實際使用 Deployment 的時候,實際的 Pod 由 ReplicaSet 創(chuàng)建和管理,而不是由 Deployment 直接管理。

使用 Deployment 可以更容易地更新應(yīng)用程序,因為可以直接定義單個Deployment 資源所需要達到的狀態(tài),并讓 Kubernetes 處理中間狀態(tài)。

利用Kubernetes實現(xiàn)各種應(yīng)用

  升級 Deployment

 Deployment 支持聲明式更新,即只需要修改 Deployment 資源中的 Pod 模板,Kubernetes 會自動將實際的系統(tǒng)狀態(tài)收斂為資源中定義的狀態(tài)。

利用Kubernetes實現(xiàn)各種應(yīng)用

Deployment 支持不同的升級策略,主要分為 RollingUpdate 以及 Recreate 模式,本策略在 deployment.spec.strategy 字段中定義。詳情可以使用 kubectl explain 命令獲取。

  Deployment Recreate 升級

 Deployment Recreate 升級策略將會直接停止老版本 Pod, 并創(chuàng)建新的 ReplicaSet 和 Pod。并且進行流量切換。具體步驟如下所示:

利用Kubernetes實現(xiàn)各種應(yīng)用

缺陷是,升級過程中有一段時間沒有Pod運行,此時如果有外部請求,服務(wù)就處于不可用狀態(tài),會損失一定流量。

Deployment RollingUpdate 升級

利用Kubernetes實現(xiàn)各種應(yīng)用

滾動升級方式如上圖所示:

Kubernetes 會先額外創(chuàng)建 v2 版本的 pod 以及 replicaSet。并且逐漸銷毀 v1 版本的 pod,從而實現(xiàn)滾動升級

同時,在生產(chǎn)環(huán)境中我們十分建議 Deployment 配合就緒探針使用。因為默認情況下, Pod running 時就會接受請求。但是實際上內(nèi)部服務(wù)可能并未就緒。

所以可以配合 minReadySeconds 字段,以及就緒探針等相關(guān)功能進一步使用。

03

課程總結(jié)
 

1、探針的使用,就緒探針與存活探針。三種探測方式

2、ReplicaSet 的工作原理,通過 label 將 pod 維持在一定數(shù)量

3、Deployment 的工作原理,升級方式以及如何回滾。

感謝各位的閱讀,以上就是“利用Kubernetes實現(xiàn)各種應(yīng)用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對利用Kubernetes實現(xiàn)各種應(yīng)用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI