例如,我有两个名称空间k8s-app1和k8s-app2

我可以使用下面的命令列出来自特定名称空间的所有pod

kubectl get pods -n <namespace>

我们需要将namespace附加到所有命令中,以列出来自各自名称空间的对象。是否有一种方法可以设置特定的名称空间和列表对象而不显式地包括名称空间?


当前回答

我不喜欢kubectx和kubens,因为他们在kubectl命令中增加了一个bash-补全字母。

所以我写了一个小的kubectl-use插件:

# kubectl use prod
Switched to context "prod".

# kubectl use default
Switched to namespace "default".

# kubectl use stage kube-system
Switched to context "stage".
Switched to namespace "kube-system".

如果你感兴趣,请登录https://github.com/kvaps/kubectl-use

其他回答

我不喜欢kubectx和kubens,因为他们在kubectl命令中增加了一个bash-补全字母。

所以我写了一个小的kubectl-use插件:

# kubectl use prod
Switched to context "prod".

# kubectl use default
Switched to namespace "default".

# kubectl use stage kube-system
Switched to context "stage".
Switched to namespace "kube-system".

如果你感兴趣,请登录https://github.com/kvaps/kubectl-use

看看https://krew.sigs.k8s.io/他们有很多不同用例的插件。

安装 https://krew.sigs.k8s.io/docs/user-guide/setup/install/

kubectl krew install kubens

然后运行以下命令将为您设置当前上下文

kubens <namespace> 

您可以使用以下名为kubectx的包,它可以很容易地在使用kubectx的集群之间切换

以及使用kubens在名称空间之间切换

我在.zshrc中创建了一个函数

ksns() { kubectl config set-context --current --namespace="$1" }

然后我调用ksns默认

我希望我的回答简明扼要,并参考官方文件:

答:

kubectl config set-context --current --namespace=my-namespace

来自:

https://kubernetes.io/docs/reference/kubectl/cheatsheet/

# permanently save the namespace for all subsequent kubectl commands in that context.
kubectl config set-context --current --namespace=ggckad-s2