K8S之StatefulSet有狀態(tài)服務(wù)詳解
一、概念
1.1.無狀態(tài)和有狀態(tài)的區(qū)別
主要從網(wǎng)絡(luò)和存儲來對比
無狀態(tài)不考慮存儲和網(wǎng)絡(luò),可以任意漂移,每個副本是一樣的,如Nginx
有狀態(tài)應用需要考慮存儲和網(wǎng)絡(luò),每個副本是不對等的,具有唯一的ID,如etcd、mysql
1.2.StatefulSet的特點
專為部署有狀態(tài)服務(wù)而生
解決Pod獨立生命周期,保持Pod啟動順序和唯一性
應用場景:分布式應用、數(shù)據(jù)庫集群
穩(wěn)定,唯一的網(wǎng)絡(luò)標識符,持久存儲
有序,優(yōu)雅的部署和擴展、刪除、終止
有序,滾動更新
1.3.Headless Service
也是一種Service,但不需要Cluster IP,需要設(shè)置clusterIP: None
1.4.serviceName
告訴StatefulSet要使用serviceName指定的headless service來保證Pod的身份
1.5.穩(wěn)定的存儲
存儲卷使用volumeClaimTemplates創(chuàng)建,稱為卷申請模板;當創(chuàng)建一個PV時,同樣會為每個Pod分配并且創(chuàng)建一個編號PVC
二、實例
拿Nginx測試,主要演示yaml的寫法,實際應用中需用有狀態(tài)服務(wù)
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
設(shè)置了3個副本,從0開始標號,創(chuàng)建3個副本
自動創(chuàng)建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
域名解析結(jié)果
在容器里可以通過<Pod Name>.<Headless Service>訪問
curl web-0.headless-web
參考視頻:https://ke.qq.com/user/index/index.html#/plan/cid=1709963&term_id=102815140
到此這篇關(guān)于K8S之StatefulSet有狀態(tài)服務(wù)詳解的文章就介紹到這了,更多相關(guān)K8S StatefulSet有狀態(tài)服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Kubernetes存儲系統(tǒng)數(shù)據(jù)持久化管理詳解
這篇文章主要為大家介紹了Kubernetes存儲系統(tǒng)數(shù)據(jù)持久化管理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11K8S?prometheus?operator監(jiān)控工作原理介紹
這篇文章主要為大家介紹了K8S?prometheus?operator監(jiān)控工作原理介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11K8S部署Kafka界面管理工具(kafkamanager)方法詳解
這篇文章主要介紹了K8S部署Kafka界面管理工具(kafkamanager)方法詳解,需要的朋友可以參考下2022-01-01Kubernetes應用配置管理創(chuàng)建使用詳解
這篇文章主要為大家介紹了Kubernetes應用配置管理創(chuàng)建使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11RFO SIG之openEuler AWS AMI 制作詳解
這篇文章主要為大家介紹了RFO SIG之openEuler AWS AMI 制作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10k8s service使用詳解(云原生kubernetes)
這篇文章主要介紹了k8s service使用詳解(云原生kubernetes),一個Service可以看作一組提供相同服務(wù)的Pod的對外訪問接口,作用于哪些Pod是通過標簽選擇器來定義的 ,Service是一個概念,主要作用的是節(jié)點上的kube-proxy服務(wù)進程,本文結(jié)合示例代碼詳解,需要的朋友參考下2023-02-02Rainbond云原生部署SpringCloud應用架構(gòu)實踐
這篇文章主要為大家介紹了Rainbond云原生部署SpringCloud應用架構(gòu)實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04