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

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

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

2023-07-20 09:38 作者:阿兵云原生  | 我要投稿

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

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

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

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

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

我們可以使用這兩種方式

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

  • deployment

RS 擴(kuò)縮容的方式

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

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

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ù)用之前的一個小應(yīng)用,簡單的 http 請求,訪問應(yīng)用的 8080 端口后,應(yīng)用會給客戶端 pod 的 名字和 版本號 v1

做一個鏡像

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)建一個 SVC 和 RS,可以放在同一個 yaml 文件中一起部署,我們只需要用 --- 隔開即可

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

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

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

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

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

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

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

kubectl create 對應(yīng)的 yaml 文件之后 ,我們在進(jìn)入到 對應(yīng)的 SVC 修改 標(biāo)簽

這個時候我們再來查看一下流量是否真的會去切換到 pod v2 版本上

我們?nèi)匀豢梢允褂猛瑯拥姆绞剑业饺我庖粋€ pod ,進(jìn)入到容器,通過 curl 命令訪問 svc 的地址,查看日志給我們輸出的是什么效果

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

這個圖,我們在分享 Service 的時候,也有體現(xiàn)。

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

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

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

好了,本次就到這里

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

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


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

分享到微博請遵守國家法律
海伦市| 峡江县| 铅山县| 绿春县| 政和县| 仙桃市| 达拉特旗| 江西省| 宁远县| 丰顺县| 垣曲县| 岱山县| 德保县| 图木舒克市| 屯留县| 龙口市| 澄城县| 遵化市| 巢湖市| 沈丘县| 府谷县| 栾川县| 南溪县| 丰顺县| 泽普县| 深圳市| 温泉县| 腾冲县| 水富县| 洞头县| 新巴尔虎左旗| 宜宾市| 定西市| 洛浦县| 玛曲县| 通江县| 苏尼特左旗| 重庆市| 错那县| 岳普湖县| 辉南县|