溫馨提示×

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

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

k8s資源對(duì)象的升級(jí)、回滾、擴(kuò)容、縮容

發(fā)布時(shí)間:2020-06-26 16:42:04 來(lái)源:網(wǎng)絡(luò) 閱讀:505 作者:warrent 欄目:云計(jì)算

一、資源創(chuàng)建的方式之一,命令的方式創(chuàng)建資源,理解命令運(yùn)行之后的動(dòng)作,通過(guò)查看資源的方式,總結(jié)Pod名稱(chēng)的由來(lái)。

當(dāng)我們執(zhí)行創(chuàng)建資源的命令后,deployment這個(gè)控制器會(huì)通過(guò)replicaset控制器去管理pod,下面通過(guò)一個(gè)實(shí)例來(lái)分析,當(dāng)我們執(zhí)行創(chuàng)建資源的命令后,k8s都做了些什么(通過(guò)其N(xiāo)AME即可發(fā)現(xiàn)規(guī)律)?

運(yùn)行一個(gè)deployment
[root@master ~]# kubectl run test01 --image=nginx:latest --replicas=2
#運(yùn)行一個(gè)nginx容器,指定副本數(shù)量為2個(gè)
[root@master ~]# kubectl get deployments.    #查看deployment控制器
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
test01   2/2     2            2           48s
#可以看到deployment的name是我們指定的test01
[root@master ~]# kubectl get replicasets.   #然后查看replicasets這個(gè)控制器
#注:replicasets可以簡(jiǎn)寫(xiě)為“rs”
NAME                DESIRED   CURRENT   READY   AGE
test01-799bb6cd4d   2         2         2       119s
#可以看到replicasets的NAME就是在deployment的NAME后面追加了一串ID號(hào)
[root@master ~]# kubectl get pod      #查看pod的name
NAME                      READY   STATUS    RESTARTS   AGE
test01-799bb6cd4d-d88wd   1/1     Running   0          3m18s
test01-799bb6cd4d-x8wpm   1/1     Running   0          3m18s
#可以看到該pod的NAME就是在上面replicasets的后面又追加了一段ID

同時(shí),可以查看每一個(gè)資源對(duì)象的詳細(xì)信息,來(lái)驗(yàn)證上面的說(shuō)法,如下:

[root@master ~]# kubectl describe deployments test01   #查看test01的詳細(xì)信息

返回的信息如下,可以看到其生成了一個(gè)新的replicasets控制器,如下:
k8s資源對(duì)象的升級(jí)、回滾、擴(kuò)容、縮容

那么,現(xiàn)在查看其replicasets詳細(xì)信息,如下:

k8s資源對(duì)象的升級(jí)、回滾、擴(kuò)容、縮容

二、如果想要client訪問(wèn)部署的服務(wù),需要怎么做?關(guān)鍵點(diǎn)在哪里?

如果需要client來(lái)訪問(wèn)k8s部署的服務(wù),那么需要?jiǎng)?chuàng)建一個(gè)service資源對(duì)象,并且其類(lèi)型必須是NodePort,客戶(hù)端通過(guò)訪問(wèn)service這個(gè)資源對(duì)象映射的端口,與k8s集群中的proxy進(jìn)行聯(lián)系,以便訪問(wèn)到部署的服務(wù)。

實(shí)現(xiàn)過(guò)程如下:
[root@master ~]# kubectl run test02 --image=nginx:latest --port=80 --replicas=2
#基于nginx鏡像創(chuàng)建deployment資源對(duì)象,映射容器的80端口到宿主機(jī)
[root@master ~]# kubectl expose deployment test02 --name=web01 --port=80 --type=NodePort
#創(chuàng)建一個(gè)service,將部署的test02的80端口映射出來(lái)
[root@master ~]# kubectl get svc web01    #查看創(chuàng)建的web01這個(gè)service的信息
NAME    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
web01   NodePort   10.103.223.105   <none>        80:30230/TCP   86s
#可以看到將部署的服務(wù)端口映射到了宿主機(jī)的30230,

客戶(hù)端訪問(wèn)k8s群集中的任意一個(gè)節(jié)點(diǎn)的30230端口,都可以訪問(wèn)到服務(wù)的首頁(yè),如下:
k8s資源對(duì)象的升級(jí)、回滾、擴(kuò)容、縮容

三、搭建registry倉(cāng)庫(kù),?;趎ginx自定義鏡像,將默認(rèn)訪問(wèn)界面更改為:hello k8s。此為1.10版本。并基于此鏡像運(yùn)行一個(gè)Deployment資源對(duì)象,replicas數(shù)量為4個(gè)。

#搭建registry倉(cāng)庫(kù),并在群集中的節(jié)點(diǎn)指定到私有倉(cāng)庫(kù)
[root@master ~]# docker run -tid --name registry -p 5000:5000 --restart always registry:latest 
[root@master ~]# vim /usr/lib/systemd/system/docker.service    #編輯配置文件
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.6:5000
#將修改后的配置文件發(fā)送到k8s群集中的其他節(jié)點(diǎn)
[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node01:/usr/lib/systemd/system/
[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node02:/usr/lib/systemd/system/
#所有更改了docker配置文件的節(jié)點(diǎn)都需要進(jìn)行以下操作,以便更改生效
[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl restart docker
#制作自定義鏡像
[root@master ~]# vim Dockerfile
FROM nginx:latest
ADD index.html /usr/share/nginx/html/
[root@master ~]# echo "hello k8s" > index.html
[root@master ~]# docker build -t 192.168.20.6:5000/nginx:1.10 .
[root@master ~]# docker push 192.168.20.6:5000/nginx:1.10    #上傳至私有倉(cāng)庫(kù)
#基于自定義鏡像運(yùn)行一個(gè)Deployment資源對(duì)象,replicas數(shù)量為4個(gè)。
[root@master ~]# kubectl run test03 --image=192.168.20.6:5000/nginx:1.10 --port=80 --replicas=4
[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'   #查看四個(gè)副本的IP地址
10.244.2.20
10.244.1.18
10.244.1.19
10.244.2.21
#接下來(lái)在k8s群集內(nèi)部訪問(wèn)該上述四個(gè)任意IP,即可看到其提供的服務(wù),如下:
#訪問(wèn)測(cè)試
[root@master ~]# curl 10.244.2.21 
hello k8s
[root@master ~]# curl 10.244.2.20
hello k8s

四、將上述Deployment資源對(duì)象,進(jìn)行更新、擴(kuò)容操作,replicas數(shù)量更新為6個(gè).鏡像仍為自定義鏡像,且默認(rèn)訪問(wèn)界面更改為:Hello update.

#更新鏡像并上傳至私有倉(cāng)庫(kù)
[root@master ~]# echo "Hello update" > index.html 
[root@master ~]# docker build -t 192.168.20.6:5000/nginx:2.20 .
[root@master ~]# docker push 192.168.20.6:5000/nginx:2.20 
#更新資源對(duì)象,進(jìn)行擴(kuò)容
[root@master ~]# kubectl set image deployment test03 test03=192.168.20.6:5000/nginx:2.20 && kubectl scale deployment test03 --replicas=6
#查看pod的IP地址
[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'
10.244.2.24
10.244.2.22
10.244.1.21
10.244.2.23
10.244.1.22
10.244.1.20
#訪問(wèn)測(cè)試
[root@master ~]# curl 10.244.1.20
Hello update
[root@master ~]# curl 10.244.1.22
Hello update

五、對(duì)此Deployment資源對(duì)象進(jìn)行回滾操作,查看驗(yàn)證最后版本的訪問(wèn)界面內(nèi)容和replicas數(shù)量。

[root@master ~]# kubectl rollout undo deployment test03   #執(zhí)行回滾操作
[root@master ~]# kubectl get pod -o wide | grep test03 | wc -l
#查看replicas的數(shù)量還是6個(gè)
6

#訪問(wèn)測(cè)試
[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'
10.244.1.23
10.244.2.27
10.244.1.24
10.244.1.25
10.244.2.26
10.244.2.25
[root@master ~]# curl 10.244.2.25
hello k8s
[root@master ~]# curl 10.244.2.26
hello k8s

———————— 本文至此結(jié)束,感謝閱讀 ————————

向AI問(wèn)一下細(xì)節(jié)

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

AI