• Kubernetes 之 StatefulSet基本原理


    Kubernetes 之 StatefulSet

    StatefulSet 定义

    StatefulSet 是一个有状态的集合,不同于一般 Pod 的一致性,不同的 Stateful Set 创建的 Pod 之间存在数据上的差异。同时它们是有序的,这样它们在故障或删除后恢复,自身的名字也不会变化,以达到维护整个分布式系统的目的。例如在 Redis 主从集群中,我们不能用 Pod 模式来部署,以为主从容器之间的配置信息是不一样的,这时候我们就需要 Stateful Set 来实现我们的需求。

    StatefulSet 的使用

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
        - port: 80
          name: web
      clusterIP: None
      selector:
        app: pod-nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: stateful-set-web
    spec:
      serviceName: "nginx"
      replicas: 2
      selector:
        matchLabels:
          app: pod-nginx
      template:
        metadata:
          labels:
            app: pod-nginx
        spec:
          containers:
            - name: nginx
              image: registry.k8s.io/nginx-slim:0.8
              ports:
                - containerPort: 80
                  name: web
              volumeMounts:
                - name: www
                  mountPath: /usr/share/nginx/html
      volumeClaimTemplates:
        - metadata:
            name: www
          spec:
            storageClassName: nfs-client
            accessModes: [ "ReadWriteOnce" ]
            resources:
              requests:
                storage: 100Mi
    ---
    kind: Pod
    apiVersion: v1
    metadata:
      name: stateful-set-test
    spec:
      containers:
        - name: stateful-set-test
          image: docker.io/k8s-test:v1.0
      restartPolicy: "Never"
    
    
    root@k8s-master1:~# kubectl get pods -owide
    NAME                                     READY   STATUS    RESTARTS      AGE   IP               NODE          NOMINATED NODE   READINESS GATES
    nfs-client-provisioner-d5bf6698d-mxjw2   1/1     Running   1 (61m ago)   23h   10.244.194.109   k8s-worker1              
    stateful-set-test                        1/1     Running   0             62s   10.244.126.56    k8s-worker2              
    stateful-set-web-0                       1/1     Running   0             62s   10.244.194.114   k8s-worker1              
    stateful-set-web-1                       1/1     Running   0             61s   10.244.126.57    k8s-worker2              
    
    root@k8s-master1:~# kubectl get pvc
    NAME                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    www-stateful-set-web-0   Bound    pvc-81e64b41-f60d-488f-8862-90c91f821641   100Mi      RWO            nfs-client                      5m50s
    www-stateful-set-web-1   Bound    pvc-2d269bcd-297f-4bd9-9e5d-f24c41fc5c6b   100Mi      RWO            nfs-client                      5m40s
    
    root@k8s-master1:~# kubectl exec -it stateful-set-test -- /bin/sh
    / # curl nginx
    
    
    
        
        Nginx Test
    
    
    Hello Web1
    
    
    / # curl nginx
    
    
    
        
        Nginx Test
    
    
    Hello Web2
    
    
    
  • 相关阅读:
    【云原生之kubernetes实战】在kubernetes集群下部署Rainbond平台
    Linux中组的管理
    机试:成绩排名
    51.Python-web框架-Django开始第一个应用的增删改查
    网工记背命令(7)----静态路由(负载分担,主备备份)
    【ML特征工程】第 1 章 :机器学习管道
    C++ 修饰符类型
    GraphQL(1):GraphQL简介
    企业电子招投标采购系统——功能模块&功能描述+数字化采购管理 采购招投标
    Vue的生命周期快速入门
  • 原文地址:https://blog.csdn.net/baidu_34688878/article/details/139313808