配置Kubernetes Deployment先删旧Pod再启新Pod解决文件锁冲突
解决Kubernetes中Typesense Deployment启动新Pod前删除旧Pod的问题
由于Typesense会对文件加锁,默认的RollingUpdate更新策略(先启动新Pod再删除旧Pod)会导致新旧Pod同时运行时出现锁冲突,引发崩溃。针对开发环境无需保障服务连续性的场景,可通过修改Deployment的更新策略为Recreate来解决:
将Deployment的spec.strategy配置为Recreate类型,Kubernetes会在启动新Pod之前先删除所有现存的旧Pod,从根本上避免锁冲突:
apiVersion: apps/v1 kind: Deployment metadata: name: typesense-deployment spec: replicas: 1 # 核心配置:切换为Recreate更新策略 strategy: type: Recreate selector: matchLabels: app: typesense template: metadata: labels: app: typesense spec: containers: - name: typesense image: typesense/typesense:latest # 补充你的容器挂载、端口、环境变量等配置
当你更新该Deployment时(比如修改镜像版本、调整配置),Kubernetes会先终止并删除当前运行的Typesense Pod,确认旧Pod完全退出后,再启动新的Pod实例,确保同一时间只有一个Typesense Pod持有文件锁。
内容的提问来源于stack exchange,提问作者Rémy
相关产品推荐
相关产品推荐

