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   <none>           <none>
stateful-set-test                        1/1     Running   0             62s   10.244.126.56    k8s-worker2   <none>           <none>
stateful-set-web-0                       1/1     Running   0             62s   10.244.194.114   k8s-worker1   <none>           <none>
stateful-set-web-1                       1/1     Running   0             61s   10.244.126.57    k8s-worker2   <none>           <none>

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     <unset>                 5m50s
www-stateful-set-web-1   Bound    pvc-2d269bcd-297f-4bd9-9e5d-f24c41fc5c6b   100Mi      RWO            nfs-client     <unset>                 5m40s

root@k8s-master1:~# kubectl exec -it stateful-set-test -- /bin/sh
/ # curl nginx
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nginx Test</title>
</head>
<body>
Hello Web1
</body>
</html>
/ # curl nginx
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Nginx Test</title>
</head>
<body>
Hello Web2
</body>
</html>

相关推荐

  1. Kubernetes StatefulSet基本原理

    2024-06-07 00:50:02       37 阅读
  2. Kubernetes DaemonSet 基本原理

    2024-06-07 00:50:02       33 阅读
  3. 【云原生篇】K8SStatefulSet 详解

    2024-06-07 00:50:02       38 阅读
  4. K8s: 控制器StatefulSets对象

    2024-06-07 00:50:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 00:50:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 00:50:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 00:50:02       82 阅读
  4. Python语言-面向对象

    2024-06-07 00:50:02       91 阅读

热门阅读

  1. flutter 自动生成静态资源的引用

    2024-06-07 00:50:02       32 阅读
  2. GPT-4o全面解析:版本对比、技术革新与个人见解

    2024-06-07 00:50:02       31 阅读
  3. x264 参考帧管理原理:reference_build_list 函数

    2024-06-07 00:50:02       26 阅读
  4. Hadoop_hdfs介绍

    2024-06-07 00:50:02       31 阅读
  5. 通过Redis实现防止接口重复提交功能

    2024-06-07 00:50:02       30 阅读
  6. 适配器模式 Adapter Pattern

    2024-06-07 00:50:02       33 阅读
  7. JVM内存分析之JVM优化

    2024-06-07 00:50:02       36 阅读
  8. excel 转换MAC地址格式方法

    2024-06-07 00:50:02       28 阅读
  9. 求二叉树第k层结点的个数--c++【做题记录】

    2024-06-07 00:50:02       27 阅读
  10. npm:Node.js包管理器的使用指南

    2024-06-07 00:50:02       24 阅读