最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Statefulset實戰(zhàn) 2

2023-08-03 23:25 作者:阿兵云原生  | 我要投稿

上一部分我們分享到,Statefulset 部署應(yīng)用,我們需要完成這些資源的創(chuàng)建:

  • 制作應(yīng)用程序和鏡像

  • 編寫 Service

  • 編寫 Statefulset 指定 pod 模板及掛載

我們已經(jīng)完成前面 2 部分,若還有疑問的可以看上上一部分的文章

編寫 ?Statefulset 清單

現(xiàn)在可以來專注的編寫 Statefulset ?資源了

編寫 Statefulset 資源其實也比較簡單,注意三大部分

  1. Statefulset 自身的基本信息

  2. 指定好 serviceName 及 pod 的模板,且配置好掛載路徑

  3. 指定好持久化卷聲明的模板

statefulset.yaml

apiVersion:?apps/v1
kind:?StatefulSet
metadata:
??name:?sta-kubia
spec:
??serviceName:?sta-kubia
??replicas:?2
??selector:
????matchLabels:
??????app:?sta-kubia
??template:
????metadata:
??????labels:
????????app:?sta-kubia
????spec:
??????containers:
??????-?name:?sta-kubia
????????image:?xiaomotong888/sta-kubia
????????ports:
????????-?name:?http
??????????containerPort:?8080
????????volumeMounts:
????????-?name:?data
??????????mountPath:?/var/data
??volumeClaimTemplates:
??-?metadata:
??????name:?data
????spec:
??????resources:
????????requests:
??????????storage:?1Mi
??????accessModes:
??????-?ReadWriteOnce

  • 設(shè)置 statefulset 自身的名稱為 sta-kubia,設(shè)置 2 個副本數(shù),管理的 pod 標簽為 sta-kubia

  • 設(shè)置容器模板,鏡像為 xiaomotong888/sta-kubia,容器端口為 8080 ,掛載路徑為 /var/data

  • 設(shè)置持久化卷聲明模板,請求的資源內(nèi)存為 1M,訪問模式為 ReadWriteOnce

還是老規(guī)矩,通過 kubectl create -f statefulset.yaml 的方式部署 statefulset ?,我們來分別查看一下 pod,持久化卷聲明 pvc ,持久化卷 pv

查看 pod 狀態(tài)

通過指令 kubectl get po 查看 pod 的情況

我們可以查看到 sta-kubia-1 是在 sta-kubia-0 完全啟動好,狀態(tài)變成 Running 狀態(tài)的時候才開始創(chuàng)建容器的

這是 statefulset ?自身的機制,會去一個一個的創(chuàng)建 pod,創(chuàng)建 pod 后會準確的確認該 pod 運行 ok,才會進行創(chuàng)建下一個

這樣也是保證安全性的一個設(shè)計

任意查看一個 pod 的詳情

kubectl?describe?po?sta-kubia-0

可以看到該 pod 會正確的對應(yīng)上一個卷的聲明,且索引和自己 pod 的索引一致

查看 持久化卷聲明 pvc 和 查看 持久化卷 pv

kubectl?get?pvc
kubectl?get?pv

我們可以看到 查看 持久化卷聲明 pvc 和 查看 持久化卷 pv,總共分別有 2 個,且互相正確對應(yīng)上的

如何與我們的 pod 進行通信

之前我們知道,我們是通過 Service 與 pod 進行通信,客戶端只需要訪問 節(jié)點的地址和 Service 的端口就可以了****(前提是我們暴露了 Service 的端口)

還有一種方式就是進入到其中一個 pod 的內(nèi)部,去訪問集群中 Service 的地址和端口

xdm 還記得其實我們還可以使用一種簡單的方式,那就是訪問通過 API 服務(wù)器的方式來訪問我們的 pod 元數(shù)據(jù),不記得細節(jié)的 xdm 可以看看我之前分享的文章 【k8s 系列】k8s 學(xué)習二十四,如何訪問 pod 元數(shù)據(jù)

訪問 k8s 的 API Server

  • 直接運行代理

kubectl?proxy

我們可以看到咱開啟的代理是通過 8001 端口與 Api Server 進行交互的

  • 訪問具體的 pod 接口

這個時候,我們就可以通過訪問這樣的 url 通過代理來請求 ApiServer 了,這算是一個正向代理

還記得,我們鏡像中寫的應(yīng)用嗎,應(yīng)用是一個 http 服務(wù)器,提供 GET 和 POST 請求?

  • GET 是用來讀取指定文件的內(nèi)容

  • POST 請求是用來將請求內(nèi)容寫入到指定文件中

由于 pod 創(chuàng)建出來,指定的文件還沒有,我們可以先使用 POST 請求我們的 pod,然后再使用 GET 請求 pod

POST 請求 pod

curl??-X?POST?-d?'helloworld?sta-kubia-0'?localhost:8001/api/v1/namespaces/default/pods/sta-kubia-0/proxy/

此處我們 POST 請求 sta-kubia-0 ,并帶上數(shù)據(jù) helloworld sta-kubia-0 字符串,請求成功,http 服務(wù)器會給我們返回寫入成功的內(nèi)容

GET 請求 pod

curl?localhost:8001/api/v1/namespaces/default/pods/sta-kubia-0/proxy/

GET 請求數(shù)據(jù),會將指定文件中的內(nèi)容打印出來

請千萬記住結(jié)尾是 ?proxy/ 而不是 proxy ,否則你是會收到一個空白回應(yīng)的, k8s 自身也是通過 url 拼接的方式來組裝請求地址的

我們可以知道這個 url 是這樣來組裝的:

地址:端口/api版本/命名空間/pod名稱/proxy

如上我們看到,GET 請求和 POST 請求都被正常處理了,那么我們來用圖解的方式,看看我們的 curl 請求是怎樣到達實際的 ApiServer 的

我們先來看看 ApiServer 的地址和我們訪問的 pod 的地址:

ApiServer 的地址

sta-kubia-0 地址

image-20220213165754717

從 curl 請求到 pod sta-kubia-0 的請求過程如下:

  • 從最初發(fā)出 curl 請求之后,會經(jīng)過 kubectl proxy 進行代理,kubectl proxy 會去代理到 8001 端口繼續(xù)向下訪問

  • kubectl 又會將請求代理到 ApiServer 上,此時請求的是 Apiserver 的地址:8443 端口,看到這里,整個請求實際上是經(jīng)過了 2 個代理

  • ApiServer 收到請求后,會去請求實際的 pod ?sta-kubia-0 地址(172.17.0.1)和端口(8080)

  • 最終 pod 中的容器響應(yīng)后,數(shù)據(jù)怎么來,請求就順利請求路徑一層一層的相應(yīng),最終,我們在界面上就看到了 pod sta-kubia 的相應(yīng)結(jié)果了

今天就到這里,學(xué)習所得,若有偏差,還請斧正

歡迎點贊,關(guān)注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

好了,本次就到這里

技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。

我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~


Statefulset實戰(zhàn) 2的評論 (共 條)

分享到微博請遵守國家法律
封开县| 喀喇| 玉田县| 资溪县| 朝阳县| 东乌珠穆沁旗| 玛纳斯县| 永昌县| 合水县| 通江县| 岑巩县| 竹溪县| 诸暨市| 宣威市| 沙洋县| 仙居县| 沽源县| 林芝县| 菏泽市| 南宫市| 华坪县| 大厂| 汕头市| 大丰市| 兴海县| 卓资县| 麦盖提县| 攀枝花市| 开江县| 湄潭县| 罗江县| 札达县| 怀远县| 临高县| 青川县| 洛扎县| 通州市| 陇西县| 新疆| 循化| 连南|