这篇文章主要介绍“k8s之StatefulSet有状态服务实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“K8S之StatefulSet有状态服务实例分析”文章能帮助大家解决问题。一、概念1.
这篇文章主要介绍“k8s之StatefulSet有状态服务实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“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
apiVersion: apps/v1kind: StatefulSetmetadata: labels: app: WEB name: webspec: 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: v1kind: Servicemetadata: name: headless-webspec: clusterIP: None ports: - port: 80 protocol: tcp selector: app: web
CLUSTER-IP为None
启动一个busybox的Pod
kubectl run test -it --rm --image=busybox -- shnslookup headless-web
域名解析结果
在容器里可以通过<Pod Name>.<Headless Service>访问
curl web-0.headless-web
关于“K8S之StatefulSet有状态服务实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。
--结束END--
本文标题: K8S之StatefulSet有状态服务实例分析
本文链接: https://www.lsjlt.com/news/342481.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0