網站首頁 編程語言 正文
一、概念
1.1.無狀態和有狀態的區別
主要從網絡和存儲來對比
無狀態不考慮存儲和網絡,可以任意漂移,每個副本是一樣的,如Nginx
有狀態應用需要考慮存儲和網絡,每個副本是不對等的,具有唯一的ID,如etcd、mysql
1.2.StatefulSet的特點
專為部署有狀態服務而生
解決Pod獨立生命周期,保持Pod啟動順序和唯一性
應用場景:分布式應用、數據庫集群
穩定,唯一的網絡標識符,持久存儲
有序,優雅的部署和擴展、刪除、終止
有序,滾動更新
1.3.Headless Service
也是一種Service,但不需要Cluster IP,需要設置clusterIP: None
1.4.serviceName
告訴StatefulSet要使用serviceName指定的headless service來保證Pod的身份
1.5.穩定的存儲
存儲卷使用volumeClaimTemplates創建,稱為卷申請模板;當創建一個PV時,同樣會為每個Pod分配并且創建一個編號PVC
二、實例
拿Nginx測試,主要演示yaml的寫法,實際應用中需用有狀態服務
2.1.statefulset.yaml
apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: web name: web spec: replicas: 3 selector: matchLabels: app: web serviceName: "headless-web" template: metadata: labels: app: web spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: web ports: - containerPort: 8080 volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: www spec: storageClassName: "managed-nfs-storage" accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi
設置了3個副本,從0開始標號,創建3個副本
自動創建PV和PVC
2.2.headless-svc.yaml
apiVersion: v1 kind: Service metadata: name: headless-web spec: clusterIP: None ports: - port: 80 protocol: TCP selector: app: web
CLUSTER-IP為None
啟動一個busybox的Pod
kubectl run test -it --rm --image=busybox -- sh nslookup headless-web
域名解析結果
在容器里可以通過<Pod Name>.<Headless Service>訪問
curl web-0.headless-web
參考視頻:https://ke.qq.com/user/index/index.html#/plan/cid=1709963&term_id=102815140
原文鏈接:https://blog.csdn.net/anqixiang/article/details/109008167
相關推薦
- 2022-06-14 C語言選擇、循環、函數、數組與操作符_C 語言
- 2022-06-29 基于C++實現五子棋小游戲_C 語言
- 2023-01-15 tensorflow使用tf.data.Dataset?處理大型數據集問題_python
- 2022-11-15 C++構造析構賦值運算函數應用詳解_C 語言
- 2022-06-16 golang?gorm更新日志執行SQL示例詳解_Golang
- 2022-05-15 Python學習之異常處理詳解_python
- 2022-06-14 SQL?SERVER常用的日期與時間查詢總結_MsSql
- 2022-04-06 C語言函數調用的三種實現方法實例_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支