k8s(五)StatefulSets控制器
RC、RS、Deployment都是适用于部署无状态服务的控制器,如微服务等。而StatefulSets控制器则用来部署有状态服务,典型的如mysql等。适合使用StatefulSets控制器的服务包含以下特点:稳定性,唯一的网络标识符;稳定性,持久化存储;有序部署和扩展;有序删除和终止;有序的自动滚动更新。yaml示例:apiVersion: v1kind: Servicemetadata:na
·
RC、RS、Deployment都是适用于部署无状态服务的控制器,如微服务等。而StatefulSets控制器则用来部署有状态服务,典型的如mysql等。
适合使用StatefulSets控制器的服务包含以下特点:
- 稳定性,唯一的网络标识符;
- 稳定性,持久化存储;
- 有序部署和扩展;
- 有序删除和终止;
- 有序的自动滚动更新。
yaml示例:
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: gcr.io/google_containers/nginx-slim:0.8
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: my-storage-class
resources:
requests:
storage: 1Gi
部署后会出现web-0、web-1、web-2三个名称的副本
当web-0处于Running和Ready状态后才会开始创建web-1
部署和扩展:
具有N个副本的StatefulSet,当部署Pod时顺序是从{0..N-1}开始创建;
删除时顺序从{N-1..0}删除;
在pod执行扩展和缩放之前,前面的所有pod必须处于Running和Ready状态;
更多推荐
已为社区贡献8条内容
所有评论(0)