关于 K8S API Resources: Group 和 Version 该怎么写

原来地址: https://akomljen.com/kubernetes-api-resources-which-group-and-version-to-use/

Overview

Kubernetes 使用声明式 API 来使得系统更加的健壮。但是这也意味着如果我们要创建一个对象,我们可以通过 CLI 或者 REST 的方式告诉系统我们需要什么,然后系统就会帮我们创建这些对象了。但是在定义想要什么对象的时候,我们还需要定义 API 的 resource name,group 和 version。

不过这样用户也会感到困惑,原因是用户作为人类是不擅长于去记忆太多规范的。在一个 Deloyment 的定义中,你会看到 apiVersion 是 apps/v1beta2,但是其他的 apiVersion 却是 apps/v1,那么到底哪个才是正确的呢?我们可以用哪一个?如果检查我们的 K8S 集群是否支持这些 apiVersion?kubectl 给出了答案。

API Resources

我们可以通过命令 kubectl api-resources 来获取 K8S 支持的 resource 类型。

image_1dj3p6cvcrl1ef0pd11p2gn629.png-314.9kB

输出被我截断了,你仍然可以通过这个命令来获取所有的 resource,结果输出了很多有用的信息,我们来分析一下。

  • SHORTNAMES - kubectl 可以使用的缩写,比如 namepace -> ns,当然不是每种 resource 都有缩写的
  • APIGROUP - 在 yaml 文件中可以看到其使用 <APIGROUP>/v1
  • KIND - resource 的 name,同样也是在 yaml 中常见的字段

你也可以通过输入一些 options 给 kubectl 来获取更多的信息。

image_1dj3paf5a10u4e7na32de71lob13.png-126.7kB

另外我们还可以通过 explain 来获取更详细的信息。

image_1dj3pb7vg1drn1ab416evhjb1t5s1g.png-297.5kB

需要注意的是 resource 可以有多个 apiVersion,explain 可能会输出旧的 group/version,但是你可以通过显示的添加 --api-version 来控制输出哪个版本的信息。

kubectl explain replicaset --api-version apps/v1

API Versions

我们可以通过下面这个命令,来获取集群支持ID所有的 API version。

image_1dj3pdb3cnvk72m4e8mts1ltb1t.png-209.1kB

有时候,你只是想检查一下某个 group/version 是否可用于某个 resource。可以通过下面这个命令来检查。deployments.v1.apps 分别对应 <API_RESOURCE_NAME>.<API_VERSION>.<API_GROUP>

kubectl get deployments.v1.apps -n kube-system

image_1dj3pe4n61qldsff13q21edkam12a.png-29.4kB

当这个 resource 指定的 group/version 不存在的时候,就会报错。

Summary

这篇文章帮我们理解了场景的 yaml 文件里 kind 和 apiVersion 的含义,以及当你不确定集群是否支持对应资源的时候,我们该怎么通过 kubectcl 来探查。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值