1. 首页
  2. 技术知识

K8S之StatefulSet有状态服务详解

目录

    一、概念二、实例

一、概念

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

  1. apiVersion: APPs/v1
  2. kind: StatefulSet
  3. metadata:
  4.   labels:
  5.     app: web
  6.   name: web
  7. spec:
  8.   replicas: 3
  9.   selector:
  10.     matchLabels:
  11.       app: web
  12.   serviceName: “headless-web”
  13.   template:
  14.     metadata:
  15.       labels:
  16.         app: web
  17.     spec:
  18.       containers:
  19.       – image: nginx
  20.         imagePullPolicy: IfNotPresent
  21.         name: web
  22.         ports:
  23.         – containerPort: 8080
  24.         volumeMounts:
  25.           – name: www
  26.             mountPath: /usr/share/nginx/html
  27.   volumeClaimTemplates:
  28.   – metadata:
  29.       name: www
  30.     spec:
  31.       storageClassName: “managed-nfs-storage”
  32.       accessModes: [ “ReadWriteOnce” ]
  33.       resources:
  34.         requests:
  35.           storage: 1Gi

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

自动创建PV和PVC

2.2.headless-svc.yaml

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: headless-web
  5. spec:
  6.   clusterIP: None
  7.   ports:
  8.   – port: 80
  9.     protocol: TCP
  10.   selector:
  11.     app: web

复制代码 CLUSTER-IP为None

启动一个busybox的Pod

  1. kubectl run test -it –rm –image=busybox — sh
  2. 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有状态服务内容请搜索软件技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件技术网!

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/109133.html

联系我们