StatefulSet:部署有状态的多副本应用
很高兴大家能做到这里,这是容器kubernetes内容最后一个章节了!而且非常简单,恭喜大家!
部署有状态的集群应用
针对有状态的应用,多数是数据有状态,例如mongodb副本集等,我们希望数据能够在pod扩容、缩容时磁盘数据不会被丢弃,能够复用磁盘。我们使用StatefulSet完成这些。
# cat kubia-statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet #使用了stateful
metadata:
name: kubia
spec:
serviceName: kubia
replicas: 2
selector:
matchLabels:
app: kubia
template:
metadata:
labels:
app: kubia
spec:
containers:
- name: kubia
image: luksa/kubia-pet
ports:
- name: http
containerPort: 8080
volumeMounts:
- name: data
mountPath: /var/data
volumeClaimTemplates: #为每个pod申请了磁盘
- metadata:
name: data
spec:
resources:
requests:
storage: 20Gi
accessModes:
- ReadWriteOnce
storageClassName: "alicloud-disk-available"创建它看看,大家能够注意到,每个pod名字不再是随机码了,而是有了编号,他们也就是有了固定的名字了,所以对应的磁盘也是有了名字
这样他们在随着容量变化时,总是能够对号入座,是不是很简单呢?另外StatefulSet相比ReplicaSet,操作基本都是相同的,所以扩缩容等管理我们就不重复了
StatefulSet在缩容时,pod卸下的磁盘不会被清理掉,因为扩容时还会再被复用,这是固定的机制。大家要记得这个点。
Cool!其实StatefulSet是很简单的,但是很多服务都会用到它,需要多练习。
好了,课程到这里告一段落,再次恭喜大家完成了这么多的内容。
思考题
谈谈你对ReplicaSet/StatefulSet的理解
Deployment和上面两个set有关联么,谈谈你的理解
谈谈你对kubernetes的体验感受
最后更新于
这有帮助吗?