• 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
    
    
    
  • 相关阅读:
    QT学习之创建项目
    [BUUCTF newstar week2] crypto/pwn/reverse
    本地link跳转ok 部署后nginx报错跳404页面的原因及解决办法
    ExtJS-Theme(主题配置)
    API经济下新物种的诞生
    运营-21.常见的内容生产方式
    pycharm自动解决包路径注册,快来看看python本身如何管理包路径
    绘画新手必备!六款免费易用的绘图软件推荐
    《单片机原理及应用》-片外拓展
    【云计算与数据中心规划】【期末复习题】
  • 原文地址:https://blog.csdn.net/baidu_34688878/article/details/139313808