当前位置: 代码网 > 服务器>服务器>云虚拟主机 > K8S之StatefulSet有状态服务详解

K8S之StatefulSet有状态服务详解

2024年05月23日 云虚拟主机 我要评论
一、概念1.1.无状态和有状态的区别主要从网络和存储来对比无状态不考虑存储和网络,可以任意漂移,每个副本是一样的,如nginx有状态应用需要考虑存储和网络,每个副本是不对等的,具有唯一的id,如etc

一、概念

1.1.无状态和有状态的区别

主要从网络和存储来对比

无状态不考虑存储和网络,可以任意漂移,每个副本是一样的,如nginx

有状态应用需要考虑存储和网络,每个副本是不对等的,具有唯一的id,如etcd、mysql

1.2.statefulset的特点

专为部署有状态服务而生

解决pod独立生命周期,保持pod启动顺序和唯一性

应用场景:分布式应用、数据库集群

稳定,唯一的网络标识符,持久存储
有序,优雅的部署和扩展、删除、终止
有序,滚动更新

1.3.headless service

也是一种service,但不需要cluster ip,需要设置clusterip: none

1.4.servicename

告诉statefulset要使用servicename指定的headless service来保证pod的身份

1.5.稳定的存储

存储卷使用volumeclaimtemplates创建,称为卷申请模板;当创建一个pv时,同样会为每个pod分配并且创建一个编号pvc

二、实例

拿nginx测试,主要演示yaml的写法,实际应用中需用有状态服务

2.1.statefulset.yaml

apiversion: apps/v1
kind: statefulset
metadata:
  labels:
    app: web
  name: web
spec:
  replicas: 3
  selector:
    matchlabels:
      app: web
  servicename: "headless-web"
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        imagepullpolicy: ifnotpresent
        name: web
        ports:
        - containerport: 8080
        volumemounts:
          - name: www
            mountpath: /usr/share/nginx/html
  volumeclaimtemplates:
  - metadata:
      name: www
    spec:
      storageclassname: "managed-nfs-storage"
      accessmodes: [ "readwriteonce" ]
      resources:
        requests:
          storage: 1gi

设置了3个副本,从0开始标号,创建3个副本

在这里插入图片描述

自动创建pv和pvc

在这里插入图片描述

在这里插入图片描述

2.2.headless-svc.yaml

apiversion: v1
kind: service
metadata:
  name: headless-web
spec:
  clusterip: none
  ports:
  - port: 80
    protocol: tcp
  selector:
    app: web

cluster-ip为none

在这里插入图片描述

启动一个busybox的pod

kubectl run test -it --rm --image=busybox -- sh
nslookup headless-web

域名解析结果

在这里插入图片描述

在容器里可以通过<pod name>.<headless service>访问

curl web-0.headless-web

在这里插入图片描述

参考视频:https://ke.qq.com/user/index/index.html#/plan/cid=1709963&term_id=102815140

到此这篇关于k8s之statefulset有状态服务详解的文章就介绍到这了,更多相关k8s statefulset有状态服务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com