You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes中Vault从1.6.2升级到1.10.9出现CrashLoopBackOff错误

解决Vault升级后vault-unsealer CrashLoopBackOff权限问题

问题分析

错误日志明确指出:system:serviceaccount:vault:vault 服务账号在 default 命名空间没有访问 secrets 资源的权限,导致unsealer初始化失败。

解决步骤

1. 验证服务账号权限

先确认当前vault服务账号的权限绑定情况:

# 查看vault命名空间下的vault服务账号详情
kubectl describe sa vault -n vault

# 搜索所有与vault相关的权限绑定
kubectl get clusterrolebindings,rolebindings -A | grep vault

2. 授予default命名空间的Secret访问权限

创建Role和RoleBinding,允许vault服务账号在default命名空间读取Secret:
创建配置文件 vault-default-secret-rbac.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: vault-secret-reader
rules:
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: default
  name: vault-default-secret-binding
subjects:
- kind: ServiceAccount
  name: vault
  namespace: vault
roleRef:
  kind: Role
  name: vault-secret-reader
  apiGroup: rbac.authorization.k8s.io

执行应用命令:

kubectl apply -f vault-default-secret-rbac.yaml

3. 检查并修正Helm配置(可选)

如果你的vault-test Secret是创建在vault命名空间而不是default,可以调整Helm配置让unsealer在vault命名空间读取Secret,避免跨命名空间权限问题:

helm upgrade vault banzaicloud-stable/vault -n vault \
  --set "image.tag=1.10.9" \
  --set "unsealer.keystore.k8sSecret.namespace=vault"

4. 重启Pod验证

删除出错的Pod触发重启:

kubectl delete pod vault-0 -n vault

等待Pod重启后检查状态:

kubectl get pods -n vault

内容的提问来源于stack exchange,提问作者Coldalpha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:05:19