欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過StatefulSet部署有狀態(tài)服務(wù)應(yīng)用實現(xiàn)方式

 更新時間:2022年03月18日 17:07:31   作者:、重明  
這篇文章主要為大家介紹了通過StatefulSet部署有狀態(tài)服務(wù)應(yīng)用的實現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

先總結(jié)后詳解:

  • 具有固定的網(wǎng)絡(luò)標(biāo)識,如主機名、域名等
  • 支持持久化存儲
  • 可以按順序部署和擴展
  • 可以按順序終止和刪除
  • 滾動升級也是按照一定順序

StatefulSet的基本概念:

StatefulSet主要用于管理有狀態(tài)的應(yīng)用程序的工作負(fù)載的API對象。比如生產(chǎn)中的Elastic Search集群、MongoDB集群、Kafka集群、Reids集群、Zookeeper集群等。。。

與Deployment相似的是,StatefulSet也同樣管理著基本相同容器規(guī)范的Pod。不同的是,StatefulSet為每個Pod維護了一個粘性標(biāo)識。

這些Pod是根據(jù)相同的規(guī)范創(chuàng)建的,但是不可互換,每個Pod都有一個持久的標(biāo)識符,在重新調(diào)度時也會保留,一般格式為StatefulSetName-Number。

比如定義一個Redis-Sentinel的StatefulSet,指定三個副本,就會依次創(chuàng)建名為Redis-Sentinel-0、Redis-Sentinel-1、Redis-Sentinel-2的三個副本。而StatefulSet的Pod的Service一般使用Headless Service(無頭服務(wù))進行通信。

Headless的格式為一般為:

statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local
  • statefulSetName:StatefulSet的名稱
  • {0…N-1}:名稱后面的序號
  • serviceName:Headless Service的名稱
  • namespace:服務(wù)所在的命名空間
  • cluster.local:Cluster Daemon(集群域)

StatefulSet用于有以下一條或多條需求的應(yīng)用程序:

  • 需要穩(wěn)定的獨一無二的網(wǎng)絡(luò)標(biāo)識符
  • 需要持久化數(shù)據(jù)
  • 需要有序的、優(yōu)雅的部署和擴展
  • 需要有序的自動滾動更新

如果都不需要,那應(yīng)該使用Deployment部署。

示例:定義一個StatefulSet資源

創(chuàng)建一個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創(chuàng)建一下:可以看到service和statefulset副本都創(chuàng)建了

[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名稱序號是有規(guī)律的

[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

測試訪問一下是否可以通信:可以看到網(wǎng)絡(luò)是通的,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>

StatefulSet的擴容與縮容

StatefulSet擴容:

擴容的時候會按照序號順序依次創(chuàng)建,比如我有上圖的三個web副本,我想擴容到五個,那么就會先創(chuàng)建web-3副本,只要web-3副本創(chuàng)建成功后才會創(chuàng)建web-4;如果web-3出現(xiàn)故障無法創(chuàng)建,那么后續(xù)任務(wù)將一直等待web-3的創(chuàng)建直到成功。

StatefulSet縮容:

縮容的時候與擴容相反,會從最后一個開始刪除,按照web-4、web-3這樣的順序依次刪除。

StatefulSet更新策略

支持兩種更新策略:

RollingUpdate:默認(rèn)的更新策略為滾動更新,是從最后一個副本開始更新,成功后才會進行下一個副本,更新方式為先刪除再創(chuàng)建。

OnDelete:當(dāng)把策略改為這個時,我們就需要先手動刪除要更新的副本,才會觸發(fā)副本的更新策略。

StatefulSet灰度發(fā)布

利用更新策略中的Partition參數(shù)進行簡單的灰度發(fā)布。

在這里插入圖片描述

StatefulSet的級聯(lián)刪除和非級聯(lián)刪除

級聯(lián)刪除:刪除StatefulSet時同時刪除Pod,默認(rèn)為級聯(lián)刪除

[root@k8s-master01 ~]# kubectl delete sts web

非級聯(lián)刪除:刪除StatefulSet時不會刪除Pod,注意此時再刪除Pod的話就不會再重建了

[root@k8s-master01 ~]# kubectl delete sts web --cascade=false

以上就是通過StatefulSet部署有狀態(tài)服務(wù)應(yīng)用實現(xiàn)方式的詳細內(nèi)容,更多關(guān)于StatefulSet部署有狀態(tài)服務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 雙至強cpu 32g內(nèi)存服務(wù)器 做了陣列1更換一個壞的硬盤后,沒做陣列

    雙至強cpu 32g內(nèi)存服務(wù)器 做了陣列1更換一個壞的硬盤后,沒做陣列

    更換掉壞硬盤后,系統(tǒng)重新認(rèn)出primary后,原來的主盤即失效,如果此時再將更換掉的舊盤插入系統(tǒng)就會造成,混亂,導(dǎo)致進不入系統(tǒng),撥掉也無用
    2013-06-06
  • 服務(wù)器壓力測試概念及方法(TPS/并發(fā)量)

    服務(wù)器壓力測試概念及方法(TPS/并發(fā)量)

    本文詳細講解了服務(wù)器壓力測試概念及方法(TPS/并發(fā)量),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • DELL R710服務(wù)器做RAID5磁盤陣列圖文教程

    DELL R710服務(wù)器做RAID5磁盤陣列圖文教程

    這篇文章主要介紹了DELL R710服務(wù)器做RAID5磁盤陣列圖文教程,需要的朋友可以參考下
    2014-08-08
  • Win2003 Server DHCP服務(wù)器安裝圖解教程

    Win2003 Server DHCP服務(wù)器安裝圖解教程

    為了節(jié)省IP地址資源,IP地址采用了DHCP自動分配方式
    2012-10-10
  • 分享幾款linux下常見的vps控制面板

    分享幾款linux下常見的vps控制面板

    VPS主機控制面板主要是用來控制和管理VPS服務(wù)器的,一般來說如果想要將VPS主機共享出來給多個人使用的話,我們就會采用類似于Cpanel、Virtualmin等主機控制面板。如果VPS主機只是一個人使用的話部落建議還是不要使用主機控制面板,以免帶來不必要的安全隱患
    2017-07-07
  • 教你一招一鍵搭建zerotier planet服務(wù)器腳本

    教你一招一鍵搭建zerotier planet服務(wù)器腳本

    ZeroTier 是一個加密的虛擬骨干網(wǎng),它的客戶端和服務(wù)端都是開源且免費的,對于一般的用戶,可以用它做內(nèi)網(wǎng)穿透,將處于不同內(nèi)網(wǎng)中的主機組成虛擬局域網(wǎng),這篇文章給大家介紹一鍵搭建zerotier planet服務(wù)器腳本的相關(guān)知識,感興趣的朋友一起看看吧
    2023-12-12
  • 護衛(wèi)神 主機管理系統(tǒng)使用說明篇 系統(tǒng)設(shè)置

    護衛(wèi)神 主機管理系統(tǒng)使用說明篇 系統(tǒng)設(shè)置

    護衛(wèi)神·主機管理系統(tǒng)支持在Windows Server 2003/2008/2012,含32位和64位,直接開設(shè)配置WEB站、FTP站,以及SQL Server和MySQL,是您開設(shè)和管理虛擬主機的絕好幫手,但是對于新用戶可能在使用上有一些困難,因此請仔細閱讀如下說明文檔
    2015-01-01
  • 外貿(mào)網(wǎng)站屏蔽中國IP訪問的多種方法

    外貿(mào)網(wǎng)站屏蔽中國IP訪問的多種方法

    這篇文章主要介紹了外貿(mào)網(wǎng)站屏蔽中國IP訪問的多種方法,本文通過nginx、iptables、javascript三種方法實現(xiàn),需要的朋友可以參考下
    2014-12-12
  • 阿里云Centos7安裝svn與配置講解

    阿里云Centos7安裝svn與配置講解

    今天小編就為大家分享一篇關(guān)于阿里云Centos7安裝svn與配置講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • linux和windows互傳文件的實現(xiàn)方案

    linux和windows互傳文件的實現(xiàn)方案

    Windows和Linux上的文件互傳(互相拷貝)一般常見的主要分為三種:1.基于FTP的方式 2.基于HTTP的方式 3.基于SSH協(xié)議的方式.今天我們來探討的是ssh協(xié)議的方式
    2018-04-04

最新評論