kubernetes 如何使用kubectl获取当前上下文的当前名称空间

ezykj2lf  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(6)|浏览(201)

我正在尝试使用kubectl获取当前使用的Kubernetes上下文的名称空间。
我知道有一个命令kubectl config get-contexts,但是我发现它不能在json/yaml中输出。

kubectl config get-contexts --no-headers | grep '*' | grep -Eo '\S+$'
eeq64g8w

eeq64g8w1#

如果您在上下文中选择了名称空间,则此操作有效:

kubectl config view --minify -o jsonpath='{..namespace}'

此外,kube-ps1可用于在shell提示符中显示当前上下文和名称空间。

b0zn9rqh

b0zn9rqh2#

kubectl config view | grep namespace
0yg35tkg

0yg35tkg3#

打印当前使用的名称空间:

kubectl config view --minify | grep namespace
whlutmcx

whlutmcx4#

使用默认服务帐户:

kubectl describe sa default | grep Namespace
oprakyz7

oprakyz75#

    • 1 . 使用 当前 命名 空间 的 服务 帐户 * *

当前 命名 空间 中 至少 存在 一 个 服务 帐户 , 因此 请 使用 该 帐户 检索 当前 命名 空间 :

NS=$(kubectl get sa -o=jsonpath='{.items[0]..metadata.namespace}')

中 的 每 一 个

    • 2 . 库 贝克 特尔 * *

有时 kubectl config view --minify 不会 显示 default 命名 空间 , 因此 获取 命名 空间 的 更 可靠 解决 方案 是 :

NS=$(kubectl config view --minify --output 'jsonpath={..namespace}')
NS=$([ ! -z "$NS" ] && echo "$NS" || echo "default")

格式

    • 3 . 库 本 插件 * *

kubens 插件 https://github.com/ahmetb/kubectx/blob/master/kubens 也 是 一 个 有趣 解决 方案 :

# kubens -c
default

格式

k3bvogb1

k3bvogb16#

您可以使用命令kubectl config current-contextkubectl config view打印当前上下文的名称空间,如下所示:

kubectl config view -o jsonpath="{.contexts[?(@.name == '$(kubectl config current-context)')].context.namespace}"

但是我认为https://stackoverflow.com/a/55854690/5655567是最好的解决方案

相关问题