一:Statefulset
青山湖網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,青山湖網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為青山湖1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的青山湖做網(wǎng)站的公司定做!StatefulSet是為了解決有狀態(tài)服務(wù)的問(wèn)題,對(duì)應(yīng)的Deployment和ReplicaSet是為了無(wú)狀態(tài)服務(wù)而設(shè)計(jì),其應(yīng)用場(chǎng)景包括:
1.穩(wěn)定的持久化存儲(chǔ),即Pod重新調(diào)度后還是能訪問(wèn)到相同的持久化數(shù)據(jù),基于PVC來(lái)實(shí)現(xiàn)
2.穩(wěn)定的網(wǎng)絡(luò)標(biāo)志,即Pod重新調(diào)度后其PodName和HostName不變,基于Headless Service(即沒(méi)有Cluster IP的Service)來(lái)實(shí)現(xiàn)
3.有序部署,有序擴(kuò)展,即Pod是有順序的,在部署或者擴(kuò)展的時(shí)候要依據(jù)定義的順序依次依次進(jìn)行(即從0到N-1,在下一個(gè)Pod運(yùn)行之前所有之前的Pod必須都是Running和Ready狀態(tài)),基于init containers來(lái)實(shí)現(xiàn)
4.有序收縮,有序刪除(即從N-1到0)因?yàn)閟tatefulset要求Pod的名稱是有順序的,每一個(gè)Pod都不能被隨意取代,也就是即使Pod重建之后,名稱依然不變。為后端的每一個(gè)Pod去命名。
從上面的應(yīng)用場(chǎng)景可以發(fā)現(xiàn),StatefulSet由以下幾部分組成:
1.用于定義網(wǎng)絡(luò)標(biāo)志的Headless Service(headless-svc:無(wú)頭服務(wù)。因?yàn)闆](méi)有IP地址,所以它不具備負(fù)載均衡的功能了。)
2.用于創(chuàng)建PersistentVolumes的volumeClaimTemplates
3.定義具體應(yīng)用的StatefulSet
StatefulSet:Pod控制器。
RC、RS、Deployment、DS。 無(wú)狀態(tài)的服務(wù)。
template(模板):根據(jù)模板創(chuàng)建出來(lái)的Pod,它們的狀態(tài)都是一模一樣的(除了名稱、IP、域名之外)
可以理解為:任何一個(gè)Pod,都可以被刪除,然后用新生成的Pod進(jìn)行替換。有狀態(tài)的服務(wù):需要記錄前一次或者多次通信中的相關(guān)時(shí)間,以作為下一次通信的分類標(biāo)準(zhǔn)。比如:MySQL等數(shù)據(jù)庫(kù)服務(wù)。(Pod的名稱,不能隨意變化。數(shù)據(jù)持久化的目錄也是不一樣,每一個(gè)Pod都有自己獨(dú)有的數(shù)據(jù)持久化存儲(chǔ)目錄。)
每一個(gè)Pod-----對(duì)應(yīng)一個(gè)PVC-----每一個(gè)PVC對(duì)應(yīng)一個(gè)PV。
測(cè)試:要求
二、以自己的名稱創(chuàng)建一個(gè)名稱空間,以下所有資源都運(yùn)行在此空間中。
用statefuset資源運(yùn)行一個(gè)httpd web服務(wù),要求3個(gè)Pod,但是每個(gè)Pod的主界面內(nèi)容不一樣,并且都要做專有的數(shù)據(jù)持久化,嘗試刪除其中一個(gè)Pod,查看新生成的Pod,是否數(shù)據(jù)與之前一致。
1.基于NFS服務(wù),創(chuàng)建NFS服務(wù)。
1.[root@master ~]# yum -y install nfs-utils rpcbind 2.[root@master ~]# mkdir /nfsdata
br/>4./nfsdata *(rw,sync,no_root_squash)
5.[root@master ~]# systemctl start nfs-server.service
br/>1.[root@master yaml]# kubectl apply -f nfs-deployment.yaml
br/>1.[root@master yaml]# kubectl apply -f sc.yaml
br/>1.[root@master yaml]# kubectl apply -f statefulset.yaml
4.[root@master yaml]# kubectl get pod -n lbs-test
br/>3.statefulset.apps/statefulset-test created
4.[root@master yaml]# kubectl get pod -n lbs-test
6.nfs-client-provisioner-5d88975f6d-wdbnc 1/1 Running 0 22m
7.statefulset-test-0 1/1 Running 0 8m59s
8.statefulset-test-1 1/1 Running 0 2m30s
9.statefulset-test-2 1/1 Running 0 109s
**查看是否自動(dòng)創(chuàng)建PV及PVC**
PV:
1.[root@master yaml]# kubectl get pv -n lbs-test
2.NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
3.pvc-0454e9ad-892f-4e39-8dcb-79664f65d1e5 100Mi RWO Delete Bound lbh-test/test-statefulset-test-2 sc-nfs 4m23s
4.pvc-2cb98c60-977f-4f3b-ba97-b84275f3b9e5 100Mi RWO Delete Bound lbh-test/test-statefulset-test-0 sc-nfs 11m
5.pvc-99137753-ccd0-4524-bf40-f3576fc97eba 100Mi RWO Delete Bound lbh-test/test-statefulset-test-1 sc-nfs 5m4s
PVC:
1.[root@master yaml]# kubectl get pvc -n lbs-test
2.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
3.test-statefulset-test-0 Bound pvc-2cb98c60-977f-4f3b-ba97-b84275f3b9e5 100Mi RWO sc-nfs 13m
4.test-statefulset-test-1 Bound pvc-99137753-ccd0-4524-bf40-f3576fc97eba 100Mi RWO sc-nfs 6m42s
5.test-statefulset-test-2 Bound pvc-0454e9ad-892f-4e39-8dcb-79664f65d1e5 100Mi RWO sc-nfs 6m1s
查看是否創(chuàng)建持久化目錄:
1.[root@master yaml]# ls /nfsdata/
2.lbh-test-test-statefulset-test-0-pvc-2cb98c60-977f-4f3b-ba97-b84275f3b9e5
3.lbh-test-test-statefulset-test-1-pvc-99137753-ccd0-4524-bf40-f3576fc97eba
4.lbh-test-test-statefulset-test-2-pvc-0454e9ad-892f-4e39-8dcb-79664f65d1e5
6.在pod資源內(nèi)創(chuàng)建數(shù)據(jù)。并訪問(wèn)測(cè)試。
1.[root@master yaml]# cd /nfsdata/
2.[root@master nfsdata]# echo 111 > lbs-test-test-statefulset-test-0-pvc-2cb98c60-977f-4f3b-ba97-b84275f3b9e5/index.html
3.[root@master nfsdata]# echo 222 > lbs-test-test-statefulset-test-1-pvc-99137753-ccd0-4524-bf40-f3576fc97eba/index.html
4.[root@master nfsdata]# echo 333 > lbs-test-test-statefulset-test-2-pvc-0454e9ad-892f-4e39-8dcb-79664f65d1e5/index.html
5.[root@master nfsdata]# kubectl get pod -o wide -n lbs-test
6.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
7.nfs-client-provisioner-5d88975f6d-wdbnc 1/1 Running 0 30m 10.244.2.2 node02
8.statefulset-test-0 1/1 Running 0 17m 10.244.1.2 node01
9.statefulset-test-1 1/1 Running 0 10m 10.244.2.3 node02
10.statefulset-test-2 1/1 Running 0 9m57s 10.244.1.3 node01
11.[root@master nfsdata]# curl 10.244.1.2
12.111
13.[root@master nfsdata]# curl 10.244.2.3
14.222
15.[root@master nfsdata]# curl 10.244.1.3
16.333
7.刪除其中一個(gè)pod,查看該pod資源的數(shù)據(jù)是否會(huì)**重新創(chuàng)建并存在。**
1.[root@master ~]# kubectl get pod -n lbs-test
2.NAME READY STATUS RESTARTS AGE
3.nfs-client-provisioner-5d88975f6d-wdbnc 1/1 Running 0 33m
4.statefulset-test-0 1/1 Running 0 20m
5.statefulset-test-1 1/1 Running 0 13m
6.statefulset-test-2 1/1 Running 0 13m
7.[root@master ~]# kubectl delete pod -n lbs-test statefulset-test-0
8.pod "statefulset-test-0" deleted
**9. 刪除后會(huì)重新創(chuàng)建pod資源**
10.[root@master ~]# kubectl get pod -n lbs-test -o wide
11.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
12.nfs-client-provisioner-5d88975f6d-wdbnc 1/1 Running 0 35m 10.244.2.2 node02
13.statefulset-test-0 1/1 Running 0 51s 10.244.1.4 node01
14.statefulset-test-1 1/1 Running 0 15m 10.244.2.3 node02
15.statefulset-test-2 1/1 Running 0 14m 10.244.1.3 node01
**數(shù)據(jù)依舊存在。**
16.[root@master ~]# curl 10.244.1.4
17.111
18.[root@master ~]# cat /nfsdata/lbs-test-test-statefulset-test-0-pvc-2cb98c60-977f-4f3b-ba97-b84275f3b9e5/index.html
19.111
StatefulSet資源對(duì)象,針對(duì)有狀態(tài)的服務(wù)的數(shù)據(jù)持久化測(cè)試完成。
通過(guò)測(cè)試,即使刪除Pod,重新生成調(diào)度后,依舊能訪問(wèn)到之前的持久化數(shù)據(jù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。