k8s-----12、controller-StatefulSet

StatefulSet

1、有状态和无状态的区别

1.1 无状态

  • 认为pod都是一样的
  • 随意进行伸缩和扩展
  • 没有顺序要求
  • 不用考虑在哪一个node运行

1.2 有状态

  • 无状态的因素都需要考虑到
  • 让每个pod独立,保持Pod启动顺序和唯一性。如唯一的网络标识符或者持久存储。有序状态,如mysql主从。

2、部署有状态应用

2.1 部署要求

  • 首先需要创建一个无头service,即clusterIP: None
  • deployment和statefulSet的区别是:有身份的(唯一标识)
  • 每一个pod有唯一的主机名。
  • 每一个pod有唯一域名。域名规则:主机名称.service名称.名称空间.svc.cluster.local

2.2 实战部署

bash 复制代码
[root@master controlleryaml]# vim sts.yaml 

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None      ##首先创建的无头service
  selector:
    app: nginx

---

apiVersion: apps/v1
kind: StatefulSet    ##创建带有statefulSet的有状态控制器
metadata:
  name: nginx-statefulset
  namespace: default
spec:
  serviceName: nginx
  replicas: 3    # 3个会顺序启动
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
[root@master controlleryaml]# kubectl apply -f sts.yaml
[root@master controlleryaml]# kubectl get pods   #查看pod 的唯一标识
NAME                  READY   STATUS    RESTARTS   AGE
nginx-statefulset-0   1/1     Running   0          70s
nginx-statefulset-1   1/1     Running   0          67s
nginx-statefulset-2   1/1     Running   0          51s

[root@master controlleryaml]# kubectl get  svc     # 查看service
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   61d
nginx        ClusterIP   None         <none>        80/TCP    92s   # None的无头service
相关推荐
xsc-xyc24 分钟前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士25 分钟前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django
至此流年莫相忘33 分钟前
WSL2 下 Docker Desktop 完全配置指南:从安装到极速体验
运维·docker·容器
万能的知了1 小时前
K8s到底需不需要GPU节点?集群资源分配的底层逻辑
云原生·容器·kubernetes
极客先躯1 小时前
高级java每日一道面试题-2026年02月12日-实战篇[Docker]-什么是容器的 Seccomp 配置?如何自定义?
java·运维·分布式·docker·容器·自动化·文件
master3362 小时前
GitLab (Docker) 常用命令及解决方案清单
docker·容器·gitlab
卧室小白2 小时前
K8S基础-控制器&deploy&pod回滚更新&service
docker·容器·kubernetes
许彰午2 小时前
零基础无文档啃读纯实操摸索学会Docker全过程
运维·docker·容器
江湖有缘2 小时前
零门槛搭建个人微社区:Docker部署 Paopao-ce 完整教程
运维·docker·容器
OceanBase数据库官方博客2 小时前
OceanBase × Flink 数据集成系列——旁路导入连接器的批量写入能力
架构·kubernetes·oceanbase