我可以在Kubernetes中设置默认名称空间吗?

lzfw57am  于 2023-02-03  发布在  Kubernetes
关注(0)|答案(3)|浏览(205)

我可以设置默认名称空间吗?即:

$ kubectl get pods -n NAMESPACE

这使我不必每次都输入它,特别是当我一天中大部分时间都在一个名称空间上时。

6yt4nkrj

6yt4nkrj1#

是的,您可以按照文档设置名称空间,如下所示:

$ kubectl config set-context --current --namespace=NAMESPACE

或者,您也可以使用kubectx来执行此操作。

lrl1mhuk

lrl1mhuk2#

您也可以使用临时linux别名:

alias k='kubectl -n kube-system '

那就像这样

k get pods

就是这样;)

byqmnocz

byqmnocz3#

我曾经使用如下所示的别名,并将变量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),它的工作更持久,因为它用一行指定了我正在使用的当前k8s集群要使用的名称空间(下面示例中的dev)来更新我的$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集合名称空间)。

function ksn(){
  kubectl config set-context --current --namespace=$@
}

现在切换上下文,我使用的是kubectl中内置的内容!要切换到名称空间AnotherNamespace,我使用:

ksn AnotherNamespace

嗒哒!最简单的"内置"解决方案。

总结

对于bash用户,请将以下代码添加到$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/以获取查看当前名称空间的命令:

相关问题