mic*_*has 28 kubernetes kubectl
我想查看命名空间中的所有资源.
这样做kubectl get all的意愿,尽管这个名字,没有列出的东西般的服务和入节点.
如果我知道我可以明确要求该类型的类型,但似乎也没有列出所有可能类型的命令.(特别kubectl get是例如不列出自定义类型).
知道如何在删除该命名空间之前显示所有资源吗?
Dan*_*Lee 25
这可能无法获得所有资源,但这可能是某人正在寻找的
kubectl get all,cm,secret,ing -A
Run Code Online (Sandbox Code Playgroud)
这似乎获得了大部分资源,以类型为前缀。
至少,它得到:
这不会获得自定义资源,但会获得服务。
否则这会做类似的事情:
for i in `kubectl api-resources | awk '{print $1}'` do ; kubectl get $i
Run Code Online (Sandbox Code Playgroud)
运行 v1.13
rco*_*rre 17
根据此评论,列出所有资源的支持方式是遍历列出的所有api版本kubectl api-resources:
kubectl api-resources枚举集群中可用的资源类型.
这意味着你可以将它与kubectl结合使用来实际列出命名空间中每种资源类型的每个实例:
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -l <label>=<value> -n <namespace>
Run Code Online (Sandbox Code Playgroud)
Mic*_* A. 11
完整的解决方案
kubectl -n <NAMESPACE> get $(kubectl api-resources --namespaced=true --no-headers -o name | egrep -v 'events|nodes' | paste -s -d, - ) --no-headers
Run Code Online (Sandbox Code Playgroud)
And*_*ong 10
如果您使用kubectl krew插件,我建议使用get-all。
它几乎可以获取90%的资源。包括configmap、、、、等等...secretendpointsistio
小智 6
rcorre 答案的 Powershell 实现如下所示
kubectl api-resources --verbs=list --namespaced -o name | `
%{ kubectl get $_ --show-kind --ignore-not-found -l <label>=<value> -n <namespace> }
Run Code Online (Sandbox Code Playgroud)
小智 6
由于失败的Helm部署导致残留在特定名称空间中,我最终需要相同的功能。您可以在bash个人资料中添加以下功能:
function kubectlgetall {
for i in $(kubectl api-resources --verbs=list --namespaced -o name | grep -v "events.events.k8s.io" | grep -v "events" | sort | uniq); do
echo "Resource:" $i
kubectl -n ${1} get --ignore-not-found ${i}
done
}
Run Code Online (Sandbox Code Playgroud)
用法: kubectlgetall <namespace>
示例:从kafka名称空间获取所有资源:
kubectlgetall kafka
rcorre 的答案是正确的,但是对于 N 个资源,它向集群发出 N 个请求(因此对于很多资源,这种方法非常慢)。此外,未找到的资源(没有实例)获取kubectl get.
有一个更好的方法来请求多个资源:
kubectl get pods,svc,secrets
Run Code Online (Sandbox Code Playgroud)
代替
kubectl get pods
kubectl get svc
kubectl get secrets
Run Code Online (Sandbox Code Playgroud)
所以答案是:
#!/usr/bin/env bash
# get all names and concatenate them with comma
NAMES="$(kubectl api-resources \
--namespaced \
--verbs list \
-o name \
| tr '\n' ,)"
# ${NAMES:0:-1} -- because of `tr` command added trailing comma
# --show-kind is optional
kubectl get "${NAMES:0:-1}" --show-kind
Run Code Online (Sandbox Code Playgroud)
或者
#!/usr/bin/env bash
# get all names
NAMES=( $(kubectl api-resources \
--namespaced \
--verbs list \
-o name) )
# Now join names into single string delimited with comma
# Note *, not @
IFS=,
NAMES="${NAMES[*]}"
unset IFS
# --show-kind is enabled implicitly
kubectl get "$NAMES"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12235 次 |
| 最近记录: |