gpt4 book ai didi

mongodb - 错误 : unable to recognize "mongo-statefulset.yaml": no matches for kind "StatefulSet" in version "apps/v1beta1"

转载 作者:行者123 更新时间:2023-12-02 19:10:26 27 4
gpt4 key购买 nike

https://codelabs.developers.google.com/codelabs/cloud-mongodb-statefulset/index.html?index=..%2F..index#5

错误:无法识别“mongo-statefulset.yaml”:版本“apps/v1beta1”中种类“StatefulSet”没有匹配项

以下命令会在 google cloud shell 中引起上述响应:

kubectl apply -f mongo-statefulset.yaml

我正在部署有状态集 MongoDB sidecar 并按照此演示中的说明进行操作,但我收到以下错误。有人对错误有解释吗?或者知道在 gke 中部署 stateful set mongo db 的方法吗?

mongo-statefulset.yaml

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: mongo
spec:
serviceName: "mongo"
replicas: 3
template:
metadata:
labels:
role: mongo
environment: test
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
image: mongo
command:
- mongod
- "--replSet"
- rs0
- "--smallfiles"
- "--noprealloc"
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-persistent-storage
mountPath: /data/db
- name: mongo-sidecar
image: cvallance/mongo-k8s-sidecar
env:
- name: MONGO_SIDECAR_POD_LABELS
value: "role=mongo,environment=test"
volumeClaimTemplates:
- metadata:
name: mongo-persistent-storage
annotations:
volume.beta.kubernetes.io/storage-class: "fast"
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100Gi

用 apiVersion 中的 v1 更改 yaml 文件返回类似的错误:

error: unable to recognize "mongo-statefulset.yaml": no matches for kind "StatefulSet" in version "v1"

最佳答案

说明:

特定 kubernetes 资源的

apiVersion 可能会及时更改。事实上,一旦 StatefulSet 使用了 apiVersion: apps/v1beta1 并不意味着它将永远使用它。

作为dany L在他的回答中已经建议,apps/v1beta1 很可能已经在您使用的 kubernetes 版本中被弃用。 mentioned changes受支持的 api 版本是很久以前推出的(文章的发布日期是 2019 年 7 月 18 日,星期四)所以您使用的版本可能比 1.15.

我想把它也放在答案的正文中,使其清晰可见,而无需另外搜索 docs .所以当 1.16 发布时实际发生的事情是(在其他重大变化中):

StatefulSet in the apps/v1beta1 and apps/v1beta2 API versionsis no longer served

  • Migrate to use the apps/v1 API version, available since v1.9. Existing persisted data can be retrieved/updated via the newversion.

解决方案:

Workaround, create your cluster with 1.15 version and it should work.

关于上述解决方法,我同意这是一种解决方法,当然它会起作用,但这不是推荐的方法。出于某种原因开发并发布了新的 kubernetes 版本。除了 API 的更改外,还引入了许多其他重要内容,修复了错误,改进了现有功能并添加了新功能。 因此,使用很快就会被弃用的东西毫无意义。

相反,您应该为特定的 kubernetes 资源 使用当前支持/要求的 apiVersion,在您的情况下为 StatefulSet

检查 apiVersion 在您的 kubernetes 安装 中支持 StatefulSet 的最简单方法是运行:

kubectl explain statefulset

它会告诉您(以及许多其他有趣的事情)它应该使用哪个 apiVersion:

KIND:     StatefulSet
VERSION: apps/v1
...

总结您的具体情况:

如果您使用的 kubernetes1.15 更新,请编辑您的 mongo-statefulset.yaml 并替换 apiVersion: apps/v1beta1 当前支持 apiVersion: apps/v1

关于mongodb - 错误 : unable to recognize "mongo-statefulset.yaml": no matches for kind "StatefulSet" in version "apps/v1beta1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64379087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com