StatefullSet

发布时间: 更新时间: 总字数:396 阅读时间:1m 作者: IP属地: 分享 复制网址

StatefullSet 有状态副本及

介绍

帮助命令:kubectl explain sts

特点:

  • 每个 Pod 都有一个稳定且唯一的网络标识符,通过 headless service 实现,参考
  • 持久化存储,动态共计存储卷,使用 volumeClaimTemplates 自动创建 PVC
  • 有序、平滑地部署和扩展,创建过程:按顺序创建
  • 有序、平滑地删除和终止,删除过程:创建过程的逆过程
  • 有序的滚动更新
    • 通过 kubectl explain sts.spec.updateStrategy.rollingUpdate.partition 控制更新策略,大于等于 partition 的 Pod 才会更新

上述后三条通过 StatefulSet 控制器实现。

示例

  • statefulset-hello-app.yaml
apiVersion: v1
kind: Service
metadata:
  name: hello-app-svc
  namespace: default
spec:
  clusterIP: None
  selector:
    app: hello-app
  ports:
  - name: port-80
    port: 80
    targetPort: 8080
    protocol: TCP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: hello-app-sf
  namespace: default
spec:
  serviceName: hello-app-svc
  replicas: 2
  selector:
    matchLabels:
      app: hello-app
  template:
    metadata:
      labels:
        app: hello-app
    spec:
      containers:
      - name: hello-app
        image: gcriogooglesamples/hello-app:1.0
        ports:
        - name: http
          containerPort: 8080
        volumeMounts:
        - name: vdata
          mountPath: /data
  volumeClaimTemplates:
    - metadata:
        name: vdata
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 2Gi
  • 查看
root@k8s-master:~/manifests/volume# kubectl get pv
NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                          STORAGECLASS   REASON   AGE
pvnfs1   5Gi        RWO,RWX        Retain           Bound    default/vdata-hello-app-sf-0                           116s
pvnfs2   5Gi        RWO,RWX        Retain           Bound    default/vdata-hello-app-sf-1                           4s
root@k8s-master:~/manifests/volume# kubectl get pvc
NAME                   STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
vdata-hello-app-sf-0   Bound    pvnfs1   5Gi        RWO,RWX                       6m20s
vdata-hello-app-sf-1   Bound    pvnfs2   5Gi        RWO,RWX                       93s
root@k8s-master:~/manifests/volume# kubectl get sts
NAME           READY   AGE
hello-app-sf   2/2     6m29s
root@k8s-master:~/manifests/volume# kubectl get pod
NAME             READY   STATUS    RESTARTS   AGE
hello-app-sf-0   1/1     Running   0          6m30s
hello-app-sf-1   1/1     Running   0          103s
  • 容器内 DNS 查询
/ # nslookup hello-app-svc.default.svc.kb.cx
Server:		10.96.0.10
Address:	10.96.0.10:53


Name:	hello-app-svc.default.svc.kb.cx
Address: 10.244.1.96
Name:	hello-app-svc.default.svc.kb.cx
Address: 10.244.1.95

/ # nslookup hello-app-sf-0.hello-app-svc.default.svc.kb.cx
Server:		10.96.0.10
Address:	10.96.0.10:53


Name:	hello-app-sf-0.hello-app-svc.default.svc.kb.cx
Address: 10.244.1.95

/ # nslookup hello-app-sf-1.hello-app-svc.default.svc.kb.cx
Server:		10.96.0.10
Address:	10.96.0.10:53

Name:	hello-app-sf-1.hello-app-svc.default.svc.kb.cx
Address: 10.244.1.96

说明

  • 自动创建PVC 名称:-
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数