我正在尝试使用kubectl获取当前使用的Kubernetes上下文的名称空间。我知道有一个命令kubectl config get-contexts,但是我发现它不能在json/yaml中输出。
kubectl
kubectl config get-contexts
kubectl config get-contexts --no-headers | grep '*' | grep -Eo '\S+$'
eeq64g8w1#
如果您在上下文中选择了名称空间,则此操作有效:
kubectl config view --minify -o jsonpath='{..namespace}'
此外,kube-ps1可用于在shell提示符中显示当前上下文和名称空间。
b0zn9rqh2#
kubectl config view | grep namespace
0yg35tkg3#
打印当前使用的名称空间:
kubectl config view --minify | grep namespace
whlutmcx4#
使用默认服务帐户:
kubectl describe sa default | grep Namespace
oprakyz75#
当前 命名 空间 中 至少 存在 一 个 服务 帐户 , 因此 请 使用 该 帐户 检索 当前 命名 空间 :
NS=$(kubectl get sa -o=jsonpath='{.items[0]..metadata.namespace}')
中 的 每 一 个
有时 kubectl config view --minify 不会 显示 default 命名 空间 , 因此 获取 命名 空间 的 更 可靠 解决 方案 是 :
kubectl config view --minify
default
NS=$(kubectl config view --minify --output 'jsonpath={..namespace}') NS=$([ ! -z "$NS" ] && echo "$NS" || echo "default")
格式
kubens 插件 https://github.com/ahmetb/kubectx/blob/master/kubens 也 是 一 个 有趣 解决 方案 :
# kubens -c default
k3bvogb16#
您可以使用命令kubectl config current-context和kubectl config view打印当前上下文的名称空间,如下所示:
kubectl config current-context
kubectl config view
kubectl config view -o jsonpath="{.contexts[?(@.name == '$(kubectl config current-context)')].context.namespace}"
但是我认为https://stackoverflow.com/a/55854690/5655567是最好的解决方案
6条答案
按热度按时间eeq64g8w1#
如果您在上下文中选择了名称空间,则此操作有效:
此外,kube-ps1可用于在shell提示符中显示当前上下文和名称空间。
b0zn9rqh2#
0yg35tkg3#
打印当前使用的名称空间:
whlutmcx4#
使用默认服务帐户:
oprakyz75#
当前 命名 空间 中 至少 存在 一 个 服务 帐户 , 因此 请 使用 该 帐户 检索 当前 命名 空间 :
中 的 每 一 个
有时
kubectl config view --minify
不会 显示default
命名 空间 , 因此 获取 命名 空间 的 更 可靠 解决 方案 是 :格式
kubens 插件 https://github.com/ahmetb/kubectx/blob/master/kubens 也 是 一 个 有趣 解决 方案 :
格式
k3bvogb16#
您可以使用命令
kubectl config current-context
和kubectl config view
打印当前上下文的名称空间,如下所示:但是我认为https://stackoverflow.com/a/55854690/5655567是最好的解决方案