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

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

k8s Deployment 升級(jí)應(yīng)用1

2023-07-27 15:43 作者:阿兵云原生  | 我要投稿

上一次我們分享到,如何去升級(jí)一個(gè) pod 的新的版本,相信在理論上,大家都知道可以如何做了,那么我們來進(jìn)行實(shí)踐一下,看看都會(huì)遇到哪些問題,以及操作起來是否便捷,感興趣的可以一起來體驗(yàn)一波

本來是可以使用 rolling-update 的方式

使用 rolling-update 的方式,其實(shí)對(duì)于 k8s 來說已經(jīng)是過時(shí)了的,但是我們還是要來了解和嘗試一下rolling-update 的方式 ,在這里我們先說一下為啥他會(huì)被淘汰

因?yàn)槭褂?rolling-update 的方式其實(shí)是會(huì)直接修改我們創(chuàng)建出來的對(duì)象的,這回導(dǎo)致直接更新 pod 和 RS 的標(biāo)簽,這種做法還是不太好,而且現(xiàn)在最新的 k8s 也不支持了

對(duì)于先刪除舊的,然后創(chuàng)建新的,這個(gè)方式比較簡(jiǎn)單,就是使用 RS 的擴(kuò)容和縮容拉實(shí)現(xiàn),之前的分享的事件案例中就有所涉及,我們可以再來溫習(xí)一遍

我們可以使用這兩種方式

  • RS 擴(kuò)縮容的方式

  • deployment

RS 擴(kuò)縮容的方式

創(chuàng)建必備基本環(huán)境

寫一個(gè)應(yīng)用程序,可以標(biāo)識(shí)版本

app.js

const?http?=?require('http');
const?os?=?require('os');

console.log("xmt?kubia?server?starting...");

var?handler?=?function(request,?response){
????console.log("received?request?from?"?+?request.connection.remoteAddress);
????response.writeHead(200);
????response.end("you've?hit?xmt?web??"?+?os.hostname()?+?"version?is?v1"??"\n");
};

var?www?=?http.createServer(handler);
www.listen(8080);

自己可以繼續(xù)復(fù)用之前的一個(gè)小應(yīng)用,簡(jiǎn)單的 http 請(qǐng)求,訪問應(yīng)用的 8080 端口后,應(yīng)用會(huì)給客戶端 pod 的 名字和 版本號(hào) v1

做一個(gè)鏡像

Dockerfile

FROM?node:7
ADD?app.js?/app.js
ENTRYPOINT?["node",?"app.js"]

我們將上述的小應(yīng)用加入到 Dockerfile 中,直接運(yùn)行即可

docker?build?-t?xiaomotong888/newkubia:v1

docker?push?xiaomotong888/newkubia:v1

寫 yaml ,創(chuàng)建 RS,Service,Pod

mynewkubia.yaml

apiVersion:?v1
kind:?Service
metadata:
??name:?newkubia-service
spec:
??type:?NodePort
??selector:
????app:?newkubia
??ports:
??-?port:?80
????targetPort:?8080
---
apiVersion:?apps/v1
kind:?ReplicaSet
metadata:
??name:?newkubia-rs
spec:
??replicas:?3
??selector:
????matchLabels:
??????app:?newkubia
??template:
????metadata:
??????labels:
????????app:?newkubia
????spec:
??????containers:
??????-?name:?newkubia
????????image:?xiaomotong888/newkubia:v1
????????ports:
????????-?containerPort:?8080

創(chuàng)建一個(gè) SVC 和 RS,可以放在同一個(gè) yaml 文件中一起部署,我們只需要用 --- 隔開即可

使用 kubectl create -f ?mynewkubia.yaml 即可創(chuàng)建出 RS ,SVC 和 POD

此處的 SVC 本來是想模擬 LoadBalancer 的,但是我使用的是 minikube ,沒有辦法使用 LoadBalancer,不過我可以使用 NodePort 的類型

我們可以進(jìn)入任意一個(gè) pod ,是用 curl 命令訪問 服務(wù)的地址(svc),我們可以看到如下效果

能夠看到訪問此時(shí)的服務(wù)打印出來的消息是 v1 版本的,沒有毛病

開始創(chuàng)建一個(gè)新的 RS2,將流量切換到新的 Pod 中

這個(gè)時(shí)候,我們來創(chuàng)建另外一個(gè) RS2,然后通過修改標(biāo)簽的方式,來將 Service 的流量切換到新的 pod 中

具體的 yaml 內(nèi)容 和上述的 RS yaml 內(nèi)容一致,我們只需要將對(duì)應(yīng)的地方修改為 newkubia-rs-2 ?即可,不要和之前創(chuàng)建的 ?RS 沖突了,標(biāo)簽也要一起修改

kubectl create 對(duì)應(yīng)的 yaml 文件之后 ,我們?cè)谶M(jìn)入到 對(duì)應(yīng)的 SVC 修改 標(biāo)簽

這個(gè)時(shí)候我們?cè)賮聿榭匆幌铝髁渴欠裾娴臅?huì)去切換到 pod v2 版本上

我們?nèi)匀豢梢允褂猛瑯拥姆绞?,找到任意一個(gè) pod ,進(jìn)入到容器,通過 curl 命令訪問 svc 的地址,查看日志給我們輸出的是什么效果

通過查看效果響應(yīng)的是 v2 版本的,我們可以知道,Service 的流量確實(shí)且到了新的 pod , 對(duì)應(yīng)這個(gè)請(qǐng)求的路徑是這個(gè)樣子的:

這個(gè)圖,我們?cè)诜窒?Service 的時(shí)候,也有體現(xiàn)。

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

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

朋友們,你的支持和鼓勵(lì),是我堅(jiān)持分享,提高質(zhì)量的動(dòng)力

好了,本次就到這里

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

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


k8s Deployment 升級(jí)應(yīng)用1的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
松潘县| 永清县| 天气| 寻乌县| 克东县| 富阳市| 来宾市| 普宁市| 嘉荫县| 广元市| 丹巴县| 德州市| 鞍山市| 宜阳县| 沧源| 呼玛县| 厦门市| 荆门市| 布拖县| 大姚县| 本溪市| 醴陵市| 建宁县| 全州县| 邯郸市| 新和县| 乌拉特中旗| 平安县| 闽侯县| 枞阳县| 永济市| 门源| 青岛市| 漳浦县| 淮滨县| 东安县| 武夷山市| 富顺县| 敖汉旗| 尉氏县| 香河县|