K8S之StatefulSet有状态服务

网友投稿 267 2022-09-09

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: mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: spec: storageClassName: "managed-nfs-storage" accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi

​​2.2.headless-svc.yaml​​

apiVersion: v1kind: Servicemetadata: name: headless-webspec: clusterIP: None ports: - port: 80 protocol: TCP selector: app: web

kubectl run test -it --rm --image=busybox -- shnslookup headless-web

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:智能营销赛道万亿市场浮现,这家百度系团队凭什么能脱颖而出?
下一篇:K8S之持久卷(PV和PVC)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~