K8S推荐的是实用无状态的Deployment部署应用,但在实际使用中,会发现除了应用做到无状态,还需要应用没有持久化存储的需求,才合适使用Deployment。一旦有数据存储的需求,比如要写入日志到PVC,由于Deployment只能共享PVC,所以就需要应用层面对不同Pod的日志目录或文件作出区分,才不会发生冲突。使用共享PVC被证明一旦共享PVC出现故障,会导致所有Pod不可用,所以对于核心应用,要慎重使用共享PVC。如果一定要用PVC,其实无状态应用也可以使用StatefulSet,每个Pod有专用的PVC,可靠性比共享PVC要高。只需要给Statefulset前面加上一个service(headless service除外)即可。
收起