我可以设置默认名称空间吗?即:
$ kubectl get pods -n NAMESPACE
这使我不必每次都输入它,特别是当我一天中大部分时间都在一个名称空间上时。
6yt4nkrj1#
是的,您可以按照文档设置名称空间,如下所示:
$ kubectl config set-context --current --namespace=NAMESPACE
或者,您也可以使用kubectx来执行此操作。
lrl1mhuk2#
您也可以使用临时linux别名:
alias k='kubectl -n kube-system '
那就像这样
k get pods
就是这样;)
byqmnocz3#
我曾经使用如下所示的别名,并将变量N设置为要使用的名称空间。
N
# Set N=-nNamespace if N isn't set then no harm, no namespace will be used alias k='kubectl $N' alias kg='kubectl get $N' alias ka='kubectl apply $N' alias kl='kubectl logs $N'
切换到my-apps命名空间;我会用:
my-apps
N=-nmy-apps
在此之后,命令:
kg pods
实际上运行kubectl get -nmy-apps pods。
kubectl get -nmy-apps pods
要覆盖N变量中设置的命名空间,只需添加--namespace选项(如-nAnotherNamespace),将使用最后定义的命名空间。当然,为了更持久地(在当前shell中)切换,我只需设置N变量,如下所示:
--namespace
-nAnotherNamespace
N=-nAnotherNamespace kg pods
在上面的代码工作的同时,我了解了kubens(与kubectx捆绑在一起,参见github),它的工作更持久,因为它用一行指定了我正在使用的当前k8s集群要使用的名称空间(下面示例中的dev)来更新我的$HOME/.kube/config文件
$HOME/.kube/config
contexts: - context: cluster: dev namespace: AnotherNamesapce <<< THIS LINE IS ADDED by kubens user: user1 name: dev current-context: dev
但是kubeens所做的一切都是已经内置到kubectl中的,使用:
kubectl config set-context --current --namespace=AnotherNamespace
因此,实际上一个更容易输入的简单别名也同样有效,所以我选择ksn作为(kubectl集合名称空间)。
ksn
function ksn(){ kubectl config set-context --current --namespace=$@ }
现在切换上下文,我使用的是kubectl中内置的内容!要切换到名称空间AnotherNamespace,我使用:
kubectl
AnotherNamespace
ksn AnotherNamespace
嗒哒!最简单的"内置"解决方案。
对于bash用户,请将以下代码添加到$HOME/.bashrc文件中。
$HOME/.bashrc
function ksn(){ if [ "$1" = "" ] then kubectl config view --minify | grep namespace: | sed 's/.*namespace: *//' elif [ "$1" = "--unset" ] then kubectl config set-context --current --namespace= else kubectl config set-context --current --namespace=$1 fi }
这允许你设置一个命名空间,查看你的命名空间是什么,或者删除一个默认的命名空间(使用--unset)。
# Set namespace ksn AnotherNamespace # Display the selected namespace ksn # Unset/remove a default namespace ksn --unset
另请参阅:https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/以获取查看当前名称空间的命令:
3条答案
按热度按时间6yt4nkrj1#
是的,您可以按照文档设置名称空间,如下所示:
或者,您也可以使用kubectx来执行此操作。
lrl1mhuk2#
您也可以使用临时linux别名:
那就像这样
就是这样;)
byqmnocz3#
我曾经使用如下所示的别名,并将变量
N
设置为要使用的名称空间。切换到
my-apps
命名空间;我会用:在此之后,命令:
实际上运行
kubectl get -nmy-apps pods
。N
,该命令仍然可以工作,并作为kubectl默认运行。*要覆盖
N
变量中设置的命名空间,只需添加--namespace
选项(如-nAnotherNamespace
),将使用最后定义的命名空间。当然,为了更持久地(在当前shell中)切换,我只需设置
N
变量,如下所示:在上面的代码工作的同时,我了解了kubens(与kubectx捆绑在一起,参见github),它的工作更持久,因为它用一行指定了我正在使用的当前k8s集群要使用的名称空间(下面示例中的dev)来更新我的
$HOME/.kube/config
文件但是kubeens所做的一切都是已经内置到kubectl中的,使用:
因此,实际上一个更容易输入的简单别名也同样有效,所以我选择
ksn
作为(kubectl集合名称空间)。现在切换上下文,我使用的是
kubectl
中内置的内容!要切换到名称空间AnotherNamespace
,我使用:嗒哒!最简单的"内置"解决方案。
总结
对于bash用户,请将以下代码添加到
$HOME/.bashrc
文件中。这允许你设置一个命名空间,查看你的命名空间是什么,或者删除一个默认的命名空间(使用--unset)。
另请参阅:https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/以获取查看当前名称空间的命令: