溫馨提示×

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

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

kubernetes實(shí)踐之四十二:StatefulSet

發(fā)布時(shí)間:2020-08-09 23:00:18 來源:ITPUB博客 閱讀:135 作者:百聯(lián)達(dá) 欄目:云計(jì)算
一: 前言

1.使用StatefulSet的場(chǎng)景
a.穩(wěn)定、唯一的網(wǎng)絡(luò)標(biāo)識(shí)
b.穩(wěn)定、持久的存儲(chǔ)
c.按照順序、優(yōu)雅的部署和擴(kuò)容
d.按照順序、優(yōu)雅的刪除和終止
e.按照順序、自動(dòng)滾動(dòng)更新

2.StatefulSet的限制
a.在Kubernetes 1.9版本之前是beta版本,在Kubernetes 1.5版本之前是不提供的。
b.Pod存儲(chǔ)由PersistentVolume(storage類或者管理員預(yù)先創(chuàng)建)提供。
c.刪除或者縮容StatefulSet不會(huì)刪除與StatefulSet關(guān)聯(lián)的數(shù)據(jù)卷,這樣能夠保證數(shù)據(jù)的安全性。
d.當(dāng)前的StatefulSets需要一個(gè)Headless服務(wù)來為Pod提供網(wǎng)絡(luò)標(biāo)識(shí),此Headless服務(wù)需要通過手工創(chuàng)建。

二:存儲(chǔ)供應(yīng)模式
1.靜態(tài)資源供應(yīng)模式,通過PV和PVC完成綁定。
kubernetes實(shí)踐之四十二:StatefulSet
2.動(dòng)態(tài)資源供應(yīng)模式,通過StorageClass和PVC完成資源動(dòng)態(tài)綁定
kubernetes實(shí)踐之四十二:StatefulSet

三: StatefulSet Nginx 應(yīng)用實(shí)例

1. 創(chuàng)建三個(gè)pv (name分別為glusterfs-nginx-0,glusterfs-nginx-1,glusterfs-nginx-2)

點(diǎn)擊(此處)折疊或打開

  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4.   name: glusterfs-nginx-0
  5.   namespace: default
  6. spec:
  7.   capacity:
  8.     storage: 1Gi
  9.   accessModes:
  10.     - ReadWriteOnce
  11.   glusterfs:
  12.     endpoints: "glusterfs-cluster"
  13.     path: "k8s-volume"
  14.     readOnly: false

2.創(chuàng)建三個(gè)pvc (name分別為glusterfs-nginx-0,glusterfs-nginx-1,glusterfs-nginx-2)

點(diǎn)擊(此處)折疊或打開

  1. kind: PersistentVolumeClaim
  2. apiVersion: v1
  3. metadata:
  4.   name: glusterfs-nginx-0
  5.   namespace: default
  6. spec:
  7.   accessModes:
  8.     - ReadWriteOnce
  9.   resources:
  10.     requests:
  11.       storage: 1Gi
3.創(chuàng)建Headless服務(wù)

點(diǎn)擊(此處)折疊或打開

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.      name: nginx
  5.      labels:
  6.         name: nginx
  7. spec:
  8.    ports:
  9.    - port: 80
  10.      targetPort: 80
  11.    clusterIP: None
  12.    selector:
  13.       role: mongo
4.創(chuàng)建StatefulSet

點(diǎn)擊(此處)折疊或打開

  1. apiVersion: apps/v1beta1
  2. kind: StatefulSet
  3. metadata:
  4.      name: nginx
  5. spec:
  6.    serviceName: "nginx"
  7.    replicas: 3
  8.    template:
  9.       metadata:
  10.            labels:
  11.               role: nginx
  12.       spec:
  13.          terminationGracePeriodSeconds: 10
  14.          containers:
  15.          - name: nginx
  16.            image: nginx
  17.            ports:
  18.            - containerPort: 80
  19.            volumeMounts:
  20.            - name: glusterfs
  21.              mountPath: /usr/share/nginx/html
  22.    volumeClaimTemplates:
  23.    - metadata:
  24.         name: glusterfs
  25.      spec:
  26.       accessModes: [ "ReadWriteOnce" ]
  27.       resources:
  28.         requests:
  29.           storage: 1Gi
四:備注
1.StatfuleSet Pod擁有一個(gè)唯一的身份標(biāo)識(shí),它由順序、穩(wěn)定的網(wǎng)絡(luò)標(biāo)識(shí)和穩(wěn)定的存儲(chǔ)所組成。此身份標(biāo)識(shí)一直跟隨著Pod,不過它被調(diào)度到那個(gè)Node上。

2.對(duì)于擁有N個(gè)副本集的StatefulSet,在StatefulSet中的每一個(gè)Pod都會(huì)被指派一個(gè)整型的序數(shù),此序數(shù)在0和N之間,在整個(gè)集合中是唯一的。

3.在StatefulSet中,每一個(gè)Pod的主機(jī)名稱都由StatefulSet的名稱和序數(shù)所組成。Pod的主機(jī)名稱的格式:$(statefulset name)-$(ordinal)。如果創(chuàng)建了三個(gè)Pod,這他們的主機(jī)名稱為web-0,web-1,web-2。StatefulSet能夠使用Headless服務(wù)來控制Pod的域。Service管理的域的格式為:$(service name).$(namespace).svc.cluster.local,cluster.local是集群域。對(duì)于每一個(gè)被創(chuàng)建的Pod,它將得到一個(gè)DNS子域,格式為: $(podname).$(governing service domain),這里的管理服務(wù)在StatefulSet中,通過serviceName設(shè)置。
向AI問一下細(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