我正在尝试使用获取当前使用的Kubernetes上下文的名称空间kubectl。
我知道有一个命令,kubectl config get-contexts但我看到它无法在json / yaml中输出。我随附的唯一脚本是这样的:
kubectl config get-contexts --no-headers | grep '*' | grep -Eo '\S+$'
Run Code Online (Sandbox Code Playgroud)
Jos*_*sto 19
如果您在上下文中选择了名称空间,则此方法可以正常工作
kubectl config view --minify --output 'jsonpath={..namespace}'
Run Code Online (Sandbox Code Playgroud)
您始终可以使用kube-ps1在提示中显示当前上下文和名称空间
pet*_*o16 19
使用默认服务帐户:
kubectl describe sa default | grep Namespace
Run Code Online (Sandbox Code Playgroud)
fja*_*mes 16
1、使用当前命名空间的服务帐号
当前命名空间中至少存在一个服务帐户,因此使用它来检索当前命名空间:
NS=$(kubectl get sa -o=jsonpath='{.items[0]..metadata.namespace}')
Run Code Online (Sandbox Code Playgroud)
2.kubectl
有时kubectl config view --minify不会显示default命名空间,因此获取命名空间的更稳健的解决方案是:
NS=$(kubectl config view --minify --output 'jsonpath={..namespace}')
NS=$([ ! -z "$NS" ] && echo "$NS" || echo "default")
Run Code Online (Sandbox Code Playgroud)
3.kubens插件
kubens 插件,https://github.com/ahmetb/kubectx/blob/master/kubens,也是一个有趣的解决方案:
# kubens -c
default
Run Code Online (Sandbox Code Playgroud)
小智 10
这将打印当前正在使用的命名空间。
$kubectl config view --minify | grep namespace
Run Code Online (Sandbox Code Playgroud)
小智 9
易于记忆的命令行
kubectl config view --minify | grep namespace
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4089 次 |
| 最近记录: |