[英]Can I set a default namespace in Kubernetes?
我可以设置默认命名空间吗? 那是:
$ kubectl get pods -n NAMESPACE
它使我不必每次都输入它,尤其是当我一天中的大部分时间都在一个命名空间上时。
您还可以使用临时 linux 别名:
alias k='kubectl -n kube-system '
然后像这样使用它
k get pods
就是这样 ;)
我曾经使用如下所示的别名并将变量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
命名空间; 我会用:
N=-nmy-apps
在此之后的命令:
kg pods
实际上运行kubectl get -nmy-apps pods
。
注意:如果未设置 bash 变量N
,该命令仍然有效,并且默认情况下会像 kubectl 一样运行。
要覆盖N
变量中设置的命名空间,只需添加--namespace
选项,如-nAnotherNamespace
,最后定义的命名空间将被使用。
当然,为了更永久地(在当前 shell 中)切换,我只是简单地设置N
变量,如下所示:
N=-nAnotherNamespace
kg pods
虽然上面的工作有效,但我了解了kubens (与kubectx捆绑在一起,请参阅github ),它可以更永久地工作,因为它更新了我的$HOME/.kube/config
文件,其中一行指定了用于当前 k8s 集群的命名空间使用(下面示例中的 dev)
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 set namespace)。
function ksn(){
kubectl config set-context --current --namespace=$@
}
所以现在要切换上下文,我只是使用kubectl
内置的东西! 要切换到命名空间AnotherNamespace
,我使用:
ksn AnotherNamespace
多田。 最简单的“内置”解决方案。
对于bash用户,将以下内容添加到$HOME/.bashrc
文件中。
function ksn(){
if [ "$1" = "" ]
then
kubectl config view -v6 2>&1 | grep 'Config loaded from file:' | sed -e 's/.*from file: /Config file:/'
echo Current context: $(kubectl config current-context)
echo Default namespace: $(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
Config file: /home/user/.kube/config
Current context: dev
Default namespace: AnotherNamespace
# Unset/remove a default namespace
ksn --unset
另请参阅: https://kube.netes.io/docs/concepts/overview/working-with-objects/namespaces/查看当前命名空间的命令:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.