中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

statefulset的數據持久化介紹

發布時間:2020-05-27 17:41:12 來源:億速云 閱讀:347 作者:鴿子 欄目:云計算

一:Statefulset

StatefulSet是為了解決有狀態服務的問題,對應的Deployment和ReplicaSet是為了無狀態服務而設計,其應用場景包括:
1.穩定的持久化存儲,即Pod重新調度后還是能訪問到相同的持久化數據,基于PVC來實現
2.穩定的網絡標志,即Pod重新調度后其PodName和HostName不變,基于Headless Service(即沒有Cluster IP的Service)來實現
3.有序部署,有序擴展,即Pod是有順序的,在部署或者擴展的時候要依據定義的順序依次依次進行(即從0到N-1,在下一個Pod運行之前所有之前的Pod必須都是Running和Ready狀態),基于init containers來實現
4.有序收縮,有序刪除(即從N-1到0)

因為statefulset要求Pod的名稱是有順序的,每一個Pod都不能被隨意取代,也就是即使Pod重建之后,名稱依然不變。為后端的每一個Pod去命名。

從上面的應用場景可以發現,StatefulSet由以下幾部分組成:
1.用于定義網絡標志的Headless Service(headless-svc:無頭服務。因為沒有IP地址,所以它不具備負載均衡的功能了。)
2.用于創建PersistentVolumes的volumeClaimTemplates
3.定義具體應用的StatefulSet

StatefulSet:Pod控制器。
RC、RS、Deployment、DS。 無狀態的服務。
template(模板):根據模板創建出來的Pod,它們的狀態都是一模一樣的(除了名稱、IP、域名之外)
可以理解為:任何一個Pod,都可以被刪除,然后用新生成的Pod進行替換。

有狀態的服務:需要記錄前一次或者多次通信中的相關時間,以作為下一次通信的分類標準。比如:MySQL等數據庫服務。(Pod的名稱,不能隨意變化。數據持久化的目錄也是不一樣,每一個Pod都有自己獨有的數據持久化存儲目錄。)

每一個Pod-----對應一個PVC-----每一個PVC對應一個PV。

測試:要求
二、以自己的名稱創建一個名稱空間,以下所有資源都運行在此空間中。
用statefuset資源運行一個httpd  web服務,要求3個Pod,但是每個Pod的主界面內容不一樣,并且都要做專有的數據持久化,嘗試刪除其中一個Pod,查看新生成的Pod,是否數據與之前一致。

1.基于NFS服務,創建NFS服務。

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/6.[root@master ~]# systemctl start rpcbind  7.[root@master ~]# showmount -e  
br/>1.[root@master yaml]# kubectl apply -f nfs-deployment.yaml   <br/2.deployment.extensions/nfs-client-provisioner created   3.[root@master yaml]# kubectl get pod -n lbs-test   
br/>1.[root@master yaml]# kubectl apply -f sc.yaml   <br/2.storageclass.storage.k8s.io/sc-nfs created  3.[root@master yaml]# kubectl get sc -n lbs-test   
br/>1.[root@master yaml]# kubectl apply -f statefulset.yaml   <br/2.service/headless-svc created  3.statefulset.apps/statefulset-test created  
4.[root@master yaml]# kubectl get pod -n lbs-test   <br/" rel="nofollow">br/>3.statefulset.apps/statefulset-test created  
4.[root@master yaml]# kubectl get pod -n lbs-test   <br/5.NAME                                      READY   STATUS    RESTARTS   AGE  
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 
 

**查看是否自動創建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  

查看是否創建持久化目錄:
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資源內創建數據。并訪問測試。

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   <none>           <none>  
8.statefulset-test-0                        1/1     Running   0          17m     10.244.1.2   node01   <none>           <none>  
9.statefulset-test-1                        1/1     Running   0          10m     10.244.2.3   node02   <none>           <none>  
10.statefulset-test-2                        1/1     Running   0          9m57s   10.244.1.3   node01   <none>           <none>  
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.刪除其中一個pod,查看該pod資源的數據是否會**重新創建并存在。**
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.  刪除后會重新創建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   <none>           <none>  
13.statefulset-test-0                        1/1     Running   0          51s   10.244.1.4   node01   <none>           <none>  
14.statefulset-test-1                        1/1     Running   0          15m   10.244.2.3   node02   <none>           <none>  
15.statefulset-test-2                        1/1     Running   0          14m   10.244.1.3   node01   <none>           <none>  
**數據依舊存在。**
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資源對象,針對有狀態的服務的數據持久化測試完成。
通過測試,即使刪除Pod,重新生成調度后,依舊能訪問到之前的持久化數據。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吐鲁番市| 青川县| 鄂托克旗| 黄平县| 临高县| 沽源县| 辽中县| 潼关县| 泰安市| 舒兰市| 云梦县| 白山市| 刚察县| 东丰县| 鄢陵县| 河津市| 金乡县| 清镇市| 扶风县| 类乌齐县| 屏东市| 玛多县| 阿克陶县| 香河县| 延庆县| 托克逊县| 绥江县| 普安县| 星子县| 长岭县| 巴青县| 广水市| 武强县| 上蔡县| 红桥区| 辉县市| 榆社县| 仙游县| 玉溪市| 汽车| 宜阳县|