国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解

這篇具有很好參考價值的文章主要介紹了【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、StatefulSet理論知識

官方中文參考文檔

1、StatefulSet Pod控制器特性

StatefulSet(簡寫sts)也是K8S集群中的一種Pod資源管理器,與deployment Pod控制器不同的是,StatefulSet用于管理無狀態(tài)程序,特性如下:

  • 穩(wěn)定的網(wǎng)絡標識符:管理的Pod都擁有一個穩(wěn)定的網(wǎng)絡標識符??梢酝ㄟ^網(wǎng)絡標識符進行訪問。
  • 有序部署和擴展:StatefulSet會按照指定的順序逐個部署Pod,每個Pod都有一個唯一的序號,這個序號在整個生命周期中都不會改變。在擴展時,也會按照指定的順序逐個增加Pod。
  • 穩(wěn)定的存儲:每個Pod都用一個獨立的持久卷存儲,比如NFS。
  • 有狀態(tài)服務:StatefulSet適用于有狀態(tài)的服務,例如數(shù)據(jù)庫、緩存等,這些服務需要穩(wěn)定的網(wǎng)絡標識符和持久化存儲。

總之,StatefulSet提供了一種可靠的、有序的、有狀態(tài)的服務部署和擴展方式,適用于需要穩(wěn)定網(wǎng)絡標識符和持久化存儲的有狀態(tài)服務。

2、什么是有狀態(tài)服務和無狀態(tài)服務?

無狀態(tài)服務則是指不需要持久化存儲和狀態(tài)的服務,例如Web服務器、API服務器等。這些服務可以在任何節(jié)點上運行,因為它們不需要在不同節(jié)點之間共享數(shù)據(jù),也不需要在節(jié)點故障時進行快速恢復。無狀態(tài)服務可以通過水平擴展來提高性能和可用性。

有狀態(tài)服務是指需要持久化存儲并且需要保持狀態(tài)的服務,例如數(shù)據(jù)庫、緩存等。這些服務需要在不同的節(jié)點之間保持數(shù)據(jù)同步,并且需要在節(jié)點故障時能夠快速恢復。

3、Deployment和StatefulSet區(qū)別

Deployment和StatefulSet是Kubernetes中常用的兩種控制器,它們的主要區(qū)別如下:

  • Deployment是用于管理無狀態(tài)應用的控制器,而StatefulSet則是用于管理有狀態(tài)應用的控制器。

  • Deployment可以創(chuàng)建多個Pod副本,這些Pod副本之間沒有任何順序關系,可以隨意調度和替換。而StatefulSet創(chuàng)建的Pod副本有固定的順序,每個Pod副本都有唯一的標識符,可以保證有狀態(tài)應用的數(shù)據(jù)持久性和穩(wěn)定性。

  • Deployment可以進行滾動更新,即在更新過程中保持應用的可用性。而StatefulSet的更新過程需要手動控制,需要先刪除舊的Pod副本,再創(chuàng)建新的Pod副本,因此更新過程中會有一定的停機時間。

  • Deployment可以使用RollingUpdate策略進行滾動更新,而StatefulSet則可以使用OnDelete和RollingUpdate兩種策略進行更新。

總之,Deployment適用于管理無狀態(tài)應用,而StatefulSet適用于管理有狀態(tài)應用。如果應用需要保證數(shù)據(jù)的持久性和穩(wěn)定性,建議使用StatefulSet。

二、案例:StatefulSet資源實戰(zhàn)演示

1、創(chuàng)建WEB站點并驗證StatefulSet特點

第一步:創(chuàng)建名為 sts-web-svc 的SVC ,用于創(chuàng)建statefulset資源時需要關聯(lián)service,YAML如下:

cat sts-web-svc.yaml 
---
apiVersion: v1
kind: Service
metadata:
  name: sts-web-svc
spec:
  selector:
    app: web-nginx
  ports:
  - port: 80
    targetPort: 80
  clusterIP: None     # 設置無IP地址

創(chuàng)建 svc 資源:

kubectl apply -f sts-web-svc.yaml

查看創(chuàng)建的 svc 資源,如下圖可以看到創(chuàng)建的svc并沒有分配IP地址:

kubectl get svc sts-web-svc

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器

第二步:創(chuàng)建statefulset資源

cat sts-web.yaml 
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: sts-web
  namespace: default
spec:
  serviceName: sts-web-svc  # 關聯(lián)SVC資源
  replicas: 2               # 副本數(shù)
  selector:
    matchLabels:            # 關聯(lián)具有app=web-nginx標簽的Pod
      app: web-nginx
  volumeClaimTemplates:        # 卷申請模板 
  - metadata:
      name: www                # 卷申請模板名稱
    spec:
      accessModes: ["ReadWriteOnce"] # 訪問模式
      storageClassName: nfs          # 指定供應商,前提是需要存在此供應商
      resources:
        requests:
          storage: 1Gi               # 存儲大小1G
  template:
    metadata:
      labels:
        app: web-nginx
    spec:
      containers:
      - name: web-nginx
        image: nginx:1.18.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www             # 指定卷申請模板名稱
          mountPath: /usr/share/nginx/html
        startupProbe:           # 啟動探測
          tcpSocket:
            port: 80

執(zhí)行 YAML :

kubectl apply -f sts-web.yaml

第三步:特點測試

1、Pod都有一個唯一的序號:如下圖Pod名字有序

kubectl get pods -l app=web-nginx -o wide

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器

刪除 sts-web-0,Pod后自動創(chuàng)建出來的Pod名稱不會改變

kubectl delete pod sts-web-0

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器

2、Pod獨立持久卷存儲:查看PVC,自動生成兩個PVC,相互隔離

kubectl get pvc -l app=web-nginx
ls /data/nfs_pro|grep default-www-sts-web-*

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器

3、穩(wěn)定的網(wǎng)絡標識符:我們使用busybox運行Pod,nslookup進行解析

kubectl run busybox --image docker.io/library/busybox:1.28 --rm -it busybox -- sh

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器

2、StatefulSet滾動更新

滾動更新使用 spec.updateStrategy 字段定義,目前statefulset支持兩種更新策略如下:

  • RollingUpdate:滾動更新
  • OnDelete:不會自動更新,手動刪除Pod后進行更新

下面演示滾動更新:

第一步:創(chuàng)建并執(zhí)行statefulset資源

cat web-svc.yaml 
---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
  - port: 80
    targetPort: 80
  clusterIP: None

創(chuàng)建statefulset,使用nginx:1.18 鏡像

cat web.yaml 
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
  namespace: default
spec:
  serviceName: web
  replicas: 5   
  selector:
    matchLabels:           
      app: web
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 0 # 最多不可用Pod,0表示2個Pod可用 
      partition: 2      # 只更新序號大于等于partition值的Pod
  volumeClaimTemplates:       
  - metadata:
      name: web               
    spec:
      accessModes: ["ReadWriteOnce"] 
      storageClassName: nfs          
      resources:
        requests:
          storage: 1Gi               
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: nginx:1.18.0    # 使用1.18.0版本鏡像
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: web           
          mountPath: /usr/share/nginx/html

執(zhí)行YAML文件

kubectl apply -f web-svc.yaml
kubectl apply -f web.yaml

第二步:更新使用 nginx:latest 鏡像

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器

重新YAML 一下:

kubectl apply -f web.yaml

驗證:由于我們partition: 2 所以Pod不會全部更新,只會更新序號大于2的Pod,包括2

【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解,# 3-Kubernetes容器編排,kubernetes,docker,運維,statefulset,POD有狀態(tài)管理器文章來源地址http://www.zghlxwxcb.cn/news/detail-546466.html

三、總結

  • statefulset管理的Pod名稱是有序的,刪除指定Pod后自動創(chuàng)建的Pod名稱不會改變。
  • statefulset創(chuàng)建時必須指定server名稱,如果server沒有IP地址,則會對server進行DNS解析,找到對應的Pod域名。
  • statefulset具有volumeclaimtemplate卷管理模板,創(chuàng)建出來的Pod都具有獨立卷,相互沒有影響。
  • statefulset創(chuàng)建出來的Pod,擁有獨立域名,我們在指定訪問Pod資源時,可以使用域名指定,IP會發(fā)生改變,但是域名不會(域名組成:Pod名稱svc名稱.svc名稱空間.svc.cluster.local)

到了這里,關于【Kubernetes資源篇】StatefulSet無狀態(tài)服務管理入門實戰(zhàn)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Kubernetes資源篇】Replicaset控制器入門實戰(zhàn)詳解

    【Kubernetes資源篇】Replicaset控制器入門實戰(zhàn)詳解

    官方中文參考文檔: ReplicaSet是k8s中一種資源對象,簡寫 rs , 用于管理Pod副本數(shù)量和健康狀態(tài),在 spec.replicas 字段中可以定義Pod副本數(shù)量,ReplicaSet會始終保持Pod在指定數(shù)量 ,當發(fā)現(xiàn)Pod數(shù)量大于副本數(shù)量時,會移除多出的Pod,當發(fā)現(xiàn)Pod小于副本數(shù)量會自動創(chuàng)建Pod,使其始終維

    2024年02月09日
    瀏覽(24)
  • 學習筆記二十七:K8S控制器Statefulset入門到企業(yè)實戰(zhàn)應用

    學習筆記二十七:K8S控制器Statefulset入門到企業(yè)實戰(zhàn)應用

    用于管理有狀態(tài)應用程序的部署。與無狀態(tài)應用程序不同,有狀態(tài)應用程序在運行時通常要求穩(wěn)定的網(wǎng)絡標識和持久性存儲。 有狀態(tài)服務:StatefulSet是有狀態(tài)的集合,管理有狀態(tài)的服務,它所管理的Pod的名稱不能隨意變化。數(shù)據(jù)持久化的目錄也是不一樣,每一個Pod都有自己獨

    2024年02月06日
    瀏覽(29)
  • 【kubernetes系列】kubernetes之計算資源管理

    【kubernetes系列】kubernetes之計算資源管理

    在 Kubernetes 中,Node 提供資源,而 Pod 使用資源。其中資源分為計算(CPU、Memory、GPU)、存儲(Disk、SSD)、網(wǎng)絡(Network Bandwidth、IP、Ports)。這些資源提供了應用運行的基礎,正確理解這些資源以及集群調度如何使用這些資源,對于大規(guī)模的 Kubernetes 集群來說至關重要,不僅

    2024年02月17日
    瀏覽(20)
  • Kubernetes StatefulSet之volumeClaimTemplates

    在 Kubernetes 中,StatefulSet 是用于管理有狀態(tài)應用的控制器對象。它確保每個 Pod 都有唯一的標識符和穩(wěn)定的網(wǎng)絡標識,并按照順序進行部署和終止。StatefulSet 還提供了一種方便的方式來管理這些有狀態(tài)應用所需的持久化存儲。 volumeClaimTemplates 是 StatefulSet 中的一個字段,它用于

    2024年02月15日
    瀏覽(13)
  • kubernetes Ingress資源管理

    k8s 對外服務之 Ingress //Ingress 簡介 service的作用體現(xiàn)在兩個方面,對集群內(nèi)部,它不斷跟蹤pod的變化,更新endpoint中對應pod的對象,提供了ip不斷變化的pod的服務發(fā)現(xiàn)機制;對集群外部,他類似負載均衡器,可以在集群內(nèi)外部對pod進行訪問。 在Kubernetes中,Pod的IP地址和service的

    2024年02月16日
    瀏覽(22)
  • 【云原生】Kubernetes工作負載-StatefulSet

    StatefulSet 是用來管理有狀態(tài)應用的工作負載 API 對象 StatefulSet 用來管理某 Pod 集合的部署和擴縮, 并為這些 Pod 提供持久存儲和持久標識符 和 Deployment 類似, StatefulSet 管理基于相同容器規(guī)約的一組 Pod。但和 Deployment 不同的是, StatefulSet 為它們的每個 Pod 維護了一個有粘性的

    2024年02月15日
    瀏覽(20)
  • 如何調整 Kubernetes StatefulSet 卷的大小

    如何調整 Kubernetes StatefulSet 卷的大小

    Kubernetes StatefulSet用于在集群內(nèi)部署有狀態(tài)應用程序。StatefulSet 中的每個 Pod 都可以訪問即使在重新調度后仍堅持使用的本地持久卷。這使得 Pod 能夠維護與其集合中的鄰居不同的單獨狀態(tài)。 不幸的是,這些卷有一個很大的限制:Kubernetes 沒有提供從 StatefulSet 對象調整它們大小

    2024年02月07日
    瀏覽(15)
  • 基于 Kubernetes 部署 Zookeeper(StatefulSet方式)

    隨著云原生化流行的大趨勢,我們的基礎組件也需要逐漸上Kubernetes了。Apache Zookeeper作為目前最流行的分布式協(xié)調組件,在我們的微服務架構中負責扮演注冊中心的角色。 在Kubernetes中運行Zookeeper集群是很有意義的,可以利用其原生的彈性擴縮容、高可用特性。 先說下使用的

    2024年02月08日
    瀏覽(12)
  • Kubernetes·陳述式&聲明式資源管理

    Kubernetes·陳述式&聲明式資源管理

    目錄 k8s陳述資源管理方法的說明 陳述式資源管理方法 聲明式資源管理方法 GUI式資源管理方法 kubectl命令行工具?的說明 查看版本信息 查看資源對象簡寫 查看集群信息 配置kubectl自動補全 node節(jié)點查看日志? k8s基本信息查看 查看 master 節(jié)點狀態(tài) 查看命名空間 查看default命名空

    2024年02月06日
    瀏覽(24)
  • 【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉換成 Kubernetes 資源

    【云原生 | Kubernetes 系列】項目實戰(zhàn) 一文吃透 Docker Compose 文件轉換成 Kubernetes 資源

    Kompose 是什么?它是個轉換工具,可將 compose(即 Docker Compose)所組裝的所有內(nèi)容 轉換成容器編排器(Kubernetes 或 OpenShift)可識別的形式。 其實有很多種方式安裝 Kompose。這里只講解如何從最新的 GitHub 發(fā)布頁面下載二進制文件。 首先需要把 Docker Compose 帶到 Kubernetes。 只需要

    2023年04月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包