<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
StatefulSet主要用於管理有狀態的應用程式的工作負載的API物件。比如生產中的Elastic Search叢集、MongoDB叢集、Kafka叢集、Reids叢集、Zookeeper叢集等。。。
與Deployment相似的是,StatefulSet也同樣管理著基本相同容器規範的Pod。不同的是,StatefulSet為每個Pod維護了一個粘性標識。
這些Pod是根據相同的規範建立的,但是不可互換,每個Pod都有一個持久的識別符號,在重新排程時也會保留,一般格式為StatefulSetName-Number。
比如定義一個Redis-Sentinel的StatefulSet,指定三個副本,就會依次建立名為Redis-Sentinel-0、Redis-Sentinel-1、Redis-Sentinel-2的三個副本。而StatefulSet的Pod的Service一般使用Headless Service(無頭服務)進行通訊。
Headless的格式為一般為:
statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local
StatefulSet用於有以下一條或多條需求的應用程式:
如果都不需要,那應該使用Deployment部署。
建立一個nginx的StatefulSet作為示範:這個yaml啟動兩個副本,使用nginx映象,注意service一定要存在。
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.18.0 ports: - containerPort: 80 name: web
使用kubectl建立一下:可以看到service和statefulset副本都建立了
[root@k8s-master01 ~]# kubectl create -f nginx-sts.yaml service/nginx created statefulset.apps/web created
檢視Pod:可以看到副本的名稱是按序號從0開始的
[root@k8s-master01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE busybox 1/1 Running 17 (50m ago) 7d18h web-0 1/1 Running 0 74s web-1 1/1 Running 0 73s
檢視service:可以看到nginx的service是沒有CLUSTER-IP的
[root@k8s-master01 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d21h nginx ClusterIP None <none> 80/TCP 2m43s
擴容副本:可以看到與deployment不同的是,新生成的Pod名稱序號是有規律的
[root@k8s-master01 ~]# kubectl scale --replicas=3 sts web statefulset.apps/web scaled [root@k8s-master01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE busybox 1/1 Running 17 (55m ago) 7d18h web-0 1/1 Running 0 6m30s web-1 1/1 Running 0 6m29s web-2 0/1 ContainerCreating 0 28s
測試存取一下是否可以通訊:可以看到網路是通的,IP直接解析到172.18.195.18上,也就是Pod的IP而不用通過一層service代理。
[root@k8s-master01 ~]# kubectl exec -ti busybox -- sh / # nslookup web-0.nginx Server: 10.96.0.10 Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local Name: web-0.nginx Address 1: 172.18.195.18 web-0.nginx.default.svc.cluster.local / # ping web-0.nginx PING web-0.nginx (172.18.195.18): 56 data bytes 64 bytes from 172.18.195.18: seq=0 ttl=62 time=1.020 ms 64 bytes from 172.18.195.18: seq=1 ttl=62 time=0.860 ms [root@k8s-master01 ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES busybox 1/1 Running 18 (28s ago) 7d18h 172.27.14.193 k8s-node02 <none> <none> web-0 1/1 Running 0 11m 172.18.195.18 k8s-master03 <none> <none> web-1 1/1 Running 0 11m 172.25.92.78 k8s-master02 <none> <none> web-2 1/1 Running 0 5m9s 172.25.244.199 k8s-master01 <none> <none>
擴容的時候會按照序號順序依次建立,比如我有上圖的三個web副本,我想擴容到五個,那麼就會先建立web-3副本,只要web-3副本建立成功後才會建立web-4;如果web-3出現故障無法建立,那麼後續任務將一直等待web-3的建立直到成功。
縮容的時候與擴容相反,會從最後一個開始刪除,按照web-4、web-3這樣的順序依次刪除。
支援兩種更新策略:
RollingUpdate:預設的更新策略為捲動更新,是從最後一個副本開始更新,成功後才會進行下一個副本,更新方式為先刪除再建立。
OnDelete:當把策略改為這個時,我們就需要先手動刪除要更新的副本,才會觸發副本的更新策略。
利用更新策略中的Partition
引數進行簡單的灰度釋出。
級聯刪除:刪除StatefulSet時同時刪除Pod,預設為級聯刪除
[root@k8s-master01 ~]# kubectl delete sts web
非級聯刪除:刪除StatefulSet時不會刪除Pod,注意此時再刪除Pod的話就不會再重建了
[root@k8s-master01 ~]# kubectl delete sts web --cascade=false
以上就是通過StatefulSet部署有狀態服務應用實現方式的詳細內容,更多關於StatefulSet部署有狀態服務的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45