ArgoCD同步报错:PriorityClass、StorageClass不被项目允许求解决
问题解决:ArgoCD同步时PriorityClass/StorageClass不被项目允许
问题描述
同步ArgoCD应用时出现两个报错:
scheduling.k8s.io:PriorityClass不被项目允许storage.k8s.io:StorageClass不被项目ns1-project-test允许
已尝试重启、删除并重新创建部署,问题仍存在。应用清单如下:
project: ns1-project-test source: repoURL: 'git@ghe.exm-platform.com:<giturl....>' path: deploy-charts/ targetRevision: 11.15.18 helm: valueFiles: - values.yaml parameters: - name: services.tl_web_apps.nodeSelector value: aks destination: server: 'https://66F5D9zzzzzzzF2D8B3-clusterURL.gr7.us-east-1.eks.amazonaws.com' namespace: ns1-namespace syncPolicy: {}
解决方案
这个问题是因为ArgoCD项目默认限制了可部署的资源类型,需要修改项目配置,将PriorityClass和StorageClass加入允许的资源列表:
- 查看当前项目配置
执行命令获取项目的完整配置:
kubectl get appprojects ns1-project-test -n argocd -o yaml
- 修改项目的资源允许规则
在项目的spec.allowedResources字段中,添加对应的资源组和资源名称。如果该字段不存在,直接新增:
spec: allowedResources: - group: "scheduling.k8s.io" kind: "PriorityClass" - group: "storage.k8s.io" kind: "StorageClass" # 保留原有其他允许的资源,比如默认的pod、deployment等 - group: "" kind: "Pod" - group: "apps" kind: "Deployment" # ... 其他原有资源
如果项目配置中使用了deniedResources,确保这两个资源不在拒绝列表里。
- 应用修改后的配置
执行命令更新项目:
kubectl apply -f <修改后的项目yaml文件>
- 重新同步ArgoCD应用
在ArgoCD UI中手动触发同步,或者用命令行:
argocd app sync <你的应用名称>
原理说明
ArgoCD的Project作为资源隔离的核心组件,通过allowedResources定义该项目下的应用可以部署的Kubernetes资源类型。默认配置通常只包含常见的工作负载资源(如Deployment、Pod),而PriorityClass、StorageClass这类集群级资源不在默认允许列表中,因此需要手动添加。
内容的提问来源于stack exchange,提问作者Ankeit Taksh
相关产品推荐
相关产品推荐

