使用动态创建的pvc的deploymentRes

问题描述

我正在尝试使用client-go在群集上创建pod和其他资源。

据我了解,使用client-go在群集上创建内容的最佳方法是使用动态创建版本(在示例中,有一个dynamic-create-update-delete示例)。因为我可以将yaml放入非结构化。非结构化然后创建资源。

当我使用kind: Deployment创建广告连播时,这对我来说工作正常,但是当我尝试使用kind: PersistentVolumeClaim创建广告连播时,出现错误:

恐慌:版本“ v1”中的PersistentVolumeClaim不能作为部署处理:将(v1.PersistentVolumeClaim).v1.PersistentVolumeClaimSpec转换为(apps.Deployment).apps.DeploymentSpec:副本不在src中

如果我正确理解错误,则发生这种情况是因为我用resource: "deployments"声明了DeploymentRes

deploymentRes := schema.GroupVersionResource{Group: "apps",Version: "v1",Resource: "deployments"}

然后使用以下内容创建:

client.Resource(deploymentRes).Namespace(namespace).Create(context.TODO(),deployment,metav1.CreateOptions{})

这里的问题是,当我要创建pvc时,找不到Resource: "deployments"而不是放置什么。我尝试放入persistentvolumeclaim,但得到了错误提示:

“紧急:服务器找不到请求的资源”

如果您知道有什么可以帮助您的信息,或者将我带入正确的方向,将非常有帮助!

谢谢!

解决方法

这里的问题是,当我想创建 pvc 时,我找不到要放置什么来代替 Resource: "deployments"

你的假设是正确的。你只漏掉了两点:

  • Group 参数应为 ""(空字符串)
  • Resource 参数应为 "persistentvolumeclaims"(复数形式)
pvcRes := schema.GroupVersionResource{Group: "",Version: "v1",Resource: "persistentvolumeclaims"}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...