如何使用kubectl为某个ApiVersion
获得一个resource kind
。
示例:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1 ( complete string )
我尝试了kubectl api-resources
和kubectl api-versions
,但是找不到一些完整的映射。是否有任何方法可以串联这些命令的输出并获取每种资源类型的完整字符串?也许还有其他命令。
答案 0 :(得分:2)
我不知道有一个kubectl
命令可以提供集群中所有资源(内置和自定义,已使用或未使用)及其API组和组之间的映射版本(apiVersion: $GROUP_NAME/$VERSION
)。
如果可以选择使用curl
和jq
,则下面的单行代码将提供这种映射:
for v in `curl -ks https://<k8s-master>:<port>/apis | jq -r .groups[].versions[].groupVersion`; do for r in `curl -ks "https://<k8s-master>:<port>/apis/${v}" | jq -r '.resources[]?.kind' | sort -u`; do echo ${r} - ${v}; done ; done
很少有解释:
<k8s-master>:<port>
服务器主机。-k
命令中的curl
是信任任何证书。-s
命令中的curl
用于静默输出。例如。没有进度输出。-r
命令中的jq
用于原始输出。例如。不会为字符串输出双引号。echo ${r} - ${v}
以便根据需要输出映射。请注意,以上内容无法处理api/v1
。这是一个旧版API组,其资源现在也位于命名组下-请参见https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-groups
Kubernetes集群的部分输出:
APIService - apiregistration.k8s.io/v1
APIService - apiregistration.k8s.io/v1beta1
DaemonSet - extensions/v1beta1
Deployment - extensions/v1beta1
DeploymentRollback - extensions/v1beta1
...
Role - rbac.authorization.k8s.io/v1
RoleBinding - rbac.authorization.k8s.io/v1
ClusterRole - rbac.authorization.k8s.io/v1beta1
ClusterRoleBinding - rbac.authorization.k8s.io/v1beta1
Role - rbac.authorization.k8s.io/v1beta1
RoleBinding - rbac.authorization.k8s.io/v1beta1
...
答案 1 :(得分:0)
您可以尝试
while (ss >> token)
temp_vec.push_back(token);