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,操作基本都是相同的,所以扩缩容等管理我们就不重复了

Cool!其实StatefulSet是很简单的,但是很多服务都会用到它,需要多练习。

好了,课程到这里告一段落,再次恭喜大家完成了这么多的内容。

思考题

  • 谈谈你对ReplicaSet/StatefulSet的理解

  • Deployment和上面两个set有关联么,谈谈你的理解

  • 谈谈你对kubernetes的体验感受

最后更新于

这有帮助吗?