课程目标:
了解StatefulSet的概念及使用
了解PersistentVolume概念及使用
了解PersistentVolumeClaim的概念及使用
了解StorageClass的概念及使用
1.1 无状态应用:
应用是为了某项特殊的任务而编写的程序。程序是由算法和数据组成的。
在生产环境中,除了一些无状态应用外,还有一部分应用需要将结果数据(也即:状态)缓存下来,并永久的记录在存储中,以供后续使用。
这类应用就是我们将要讨论的“有状态应用”,与“无状态应用”相比,我们期望“有状态应用”具有哪些能力呢?
1.计算维度: 每个pod的名字需要是稳定的,不会发生变化的;pods之间的启动、升级、退出可以按照某种顺序控制的;
2.存储维度:存储是持久的,拥有独立于pod的生命周期,不会随着pod的生命周期结束而销毁;每个pod与其使用的存储关系是稳定的,不会因升级等因素而发生变化;
3.网络维度:每个pod的有独立、稳定的网络标识;
1.2 有状态应用(StatefulSet)概念介绍
基于社区对有状态应用的通用需求,K8S设计了一种有状态应用对象,也即: StatefulSet。它可以为用户提供一组具有稳定、有序、唯一特性的应用实例集合。如右图所示:
1.稳定:稳定的podName: {stsName}-{序号[O-n]}
②稳定的网络标识: {podName}. {headless-svcName}.{namespace}.svc.cluster.local</