Kubernetes SatefulSet(有狀態應用部署)


Kubernetes SatefulSet(有狀態應用部署)

• 部署有狀態應用
• 解決Pod獨立生命周期,保持Pod啟動順序和唯一性
1. 穩定,唯一的網絡標識符,持久存儲
2. 有序,優雅的部署和擴展、刪除和終止
3. 有序,滾動更新

應用場景:數據庫

說明

常規的service
service:一組pod訪問策略,提供負載均衡和服務發現
其他:service 會分配一個 CLUSTER-IP 虛擬IP 使整個容器進行通信。

headless service:無頭服務
headless service:與service類似,不同點在於clusterIP為None

需要部署一個dns服務器
https://www.cnblogs.com/xiangsikai/p/11413970.html

案例

創建有狀態應用
1、vim sts.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx

---

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: nginx-statefulset
  namespace: default
spec:
  # 指定使用的service
 serviceName: nginx
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

2、創建容器

kubectl create -f sts.yaml

3、查看創建容器以及service、通過dns名稱,保證每個固定的身份(pod/nginx-statefulset-x)標識。
kubectl get pods,svc

NAME READY STATUS RESTARTS AGE
# statefulset-x 為身份標識
pod/nginx-statefulset-0 1/1 Running 0 16s
pod/nginx-statefulset-1 1/1 Running 0 13s
pod/nginx-statefulset-2 1/1 Running 0 10s
pod/sh-77649dbd59-ppfbx 1/1 Running 0 21m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 5d16h
service/nginx ClusterIP None <none> 80/TCP 26s

4、臨時啟動程序測試解析,通過dns解析唯一標識的容器
kubectl run --image=busybox:1.28.4 -it sh

/ # nslookup nginx-statefulset-0
Server:    10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'nginx-statefulset-0'

如此可以比對出效果

StatefulSet與Deployment區別:有身份的!
身份三要素:
• 域名
• 主機名
• 存儲(PVC)

ClusterIP A記錄格式:<service-name>.<namespace-name>.svc.cluster.local
ClusterIP=None A記錄格式:<statefulsetName-index>.<service-name>.svc.cluster.local
示例:web-0.nginx.default.svc.cluster.local


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM