+ kubectl apply -k .
error: rawResources failed to read Resources:
Load from path ../../base failed: '../../base' must
be a file
我的目录结构是这样
kubectl apply -k . 是在test文件夹下运行的
test文件夹下kustomization.yaml内容如下
bases:
- ../../base
patchesStrategicMerge:
- healthcheck_patch.yaml
- memorylimit_patch.yaml
- envvar_patch.yaml
在base下运行kubectl apply -k . 没问题 可以创建发布 服务和配置项
Error: no matches for OriginalId apps_v1_Deployment|~X|vango-server-heiye-deployment; no matches for CurrentId apps_v1_Deployment|~X|vango-server-heiye-deployment; failed to find unique target for patch apps_v1_Deployment|vango-server-heiye-deployment error: no objects passed to apply 我的deployment里的name是给的vango-server-heiye-deployment呀 为啥说找不到match呢 他这里是要match啥呀
sh "cd ${APP_NAME}/deploy/overlays/${ENV} && kustomize build . | kubectl apply -f - --namespace=${params.K8S_NAMESPACE} --kubeconfig=${K8S_CONFIG_PATH} " 是不是kubectl apply -f -后面不能跟namespace和kubeconfig参数 所以他找不到我的namespace里的deployment呢
本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从你的描述来看,你遇到了两个问题。首先,我们来解决kubectl apply -k .
在test
目录下执行时遇到的问题。
Load from path ../../base failed
错误信息提示'../../base' must be a file
,这表明kustomize
期望bases
字段指定的路径是一个文件(通常是kustomization.yaml
),而不是一个目录。然而,按照你的描述,../../base
应该是一个包含kustomization.yaml
的目录,用于定义基础资源。
解决方案: 在test
目录下的kustomization.yaml
中,你应该使用bases:
字段引用具体的kustomization.yaml
文件,而不是目录。如果base
目录下确实有一个kustomization.yaml
,正确的写法应该是直接指定这个文件的相对路径:
bases:
- ../../base/kustomization.yaml
这样修改后,kustomize
就能正确加载base
目录下的配置了。
这个错误通常意味着kustomize
在尝试应用补丁(patches)时,找不到与之匹配的目标资源。错误信息中的no matches for OriginalId apps_v1_Deployment|~X|vango-server-heiye-deployment
说明它在寻找名为vango-server-heiye-deployment
的Deployment资源,但是没有找到匹配项。
可能的原因及解决方案:
资源名称不匹配: 确认在基础资源(可能是base
目录下的配置)中,vango-server-heiye-deployment
的Deployment确实存在,并且名称完全一致(包括大小写)。有时候,即使看起来相同,也可能因为某些原因(如YAML格式问题或隐藏字符)导致不匹配。
资源版本问题: 确保你的kustomization.yaml
中对资源的引用(特别是API版本,如apps/v1
)与实际资源的API版本相匹配。
资源作用域问题: 如果你在不同的命名空间中操作,确保补丁和目标资源处于同一命名空间,或者在引用时指定了正确的命名空间。
依赖顺序问题: 确保所有依赖的资源(如Services, ConfigMaps等)已经正确应用或存在于集群中,因为这些也可能是补丁应用成功所必需的。
重新构建kustomize资源: 有时,清理并重新构建kustomize生成的资源可以解决问题。你可以尝试删除test
目录下除了kustomization.yaml
之外的任何生成文件(如果有),然后重新运行kubectl kustomize .
或直接kubectl apply -k .
。
综上所述,检查并调整上述方面后,你应该能够解决遇到的问题。如果问题依旧,建议查看base
目录下的具体配置,以及是否有其他环境变量或外部因素影响了资源的识别。