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