如何从 API 获取整数形式的 Kubernetes 版本
How to get Kubernetes Version as integer from API
我正在尝试通过 API 获取当前的 Kubernetes 版本,因为根据版本的不同,有些东西不受支持(例如 readyz 端点在 1.16 之前不可用,所以我想改为检查 healthz 端点).
我找到了以下端点:/version
示例结果:
{
"major": "1",
"minor": "11+",
"gitVersion": "v1.11.0+d4cacc0",
"gitCommit": "d4cacc0",
"gitTreeState": "clean",
"buildDate": "2021-05-12T14:13:55Z",
"goVersion": "go1.10.8",
"compiler": "gc",
"platform": "linux/amd64"
}
这是通过 API 获取版本的正确方法吗?我认为 Kubernetes 使用语义版本控制,为什么次要字符串中的“+”?这是可配置的吗?
我在哪里可以找到这个 API/fields 的规格?
理想情况下,这应该适用于独立和托管 Kubernetes 风格(Openshift、GKE...)。
GitVersion
/gitVersion
是语义版本控制字段。
这是 kube-api-server
组件的特定版本。
解析由regex in The k8s.io/apimachinery包完成:
^\s*v?([0-9]+(?:\.[0-9]+)*)(.*)*$`
/version
端点是已记录的 API 规范 (operationId: "getCode"
) 的一部分,因此应该非常稳定。这是 kubectl version
使用的,所以我怀疑它会轻易改变。
我正在尝试通过 API 获取当前的 Kubernetes 版本,因为根据版本的不同,有些东西不受支持(例如 readyz 端点在 1.16 之前不可用,所以我想改为检查 healthz 端点).
我找到了以下端点:/version
示例结果:
{
"major": "1",
"minor": "11+",
"gitVersion": "v1.11.0+d4cacc0",
"gitCommit": "d4cacc0",
"gitTreeState": "clean",
"buildDate": "2021-05-12T14:13:55Z",
"goVersion": "go1.10.8",
"compiler": "gc",
"platform": "linux/amd64"
}
这是通过 API 获取版本的正确方法吗?我认为 Kubernetes 使用语义版本控制,为什么次要字符串中的“+”?这是可配置的吗? 我在哪里可以找到这个 API/fields 的规格?
理想情况下,这应该适用于独立和托管 Kubernetes 风格(Openshift、GKE...)。
GitVersion
/gitVersion
是语义版本控制字段。
这是 kube-api-server
组件的特定版本。
解析由regex in The k8s.io/apimachinery包完成:
^\s*v?([0-9]+(?:\.[0-9]+)*)(.*)*$`
/version
端点是已记录的 API 规范 (operationId: "getCode"
) 的一部分,因此应该非常稳定。这是 kubectl version
使用的,所以我怀疑它会轻易改变。