例如,我有两个名称空间k8s-app1和k8s-app2
我可以使用下面的命令列出来自特定名称空间的所有pod
kubectl get pods -n <namespace>
我们需要将namespace附加到所有命令中,以列出来自各自名称空间的对象。是否有一种方法可以设置特定的名称空间和列表对象而不显式地包括名称空间?
例如,我有两个名称空间k8s-app1和k8s-app2
我可以使用下面的命令列出来自特定名称空间的所有pod
kubectl get pods -n <namespace>
我们需要将namespace附加到所有命令中,以列出来自各自名称空间的对象。是否有一种方法可以设置特定的名称空间和列表对象而不显式地包括名称空间?
当前回答
我在.zshrc中创建了一个函数
ksns() { kubectl config set-context --current --namespace="$1" }
然后我调用ksns默认
其他回答
我可以使用下面的步骤切换名称空间
kubectl config set-context $(kubectl config current-context) --namespace=<namespace>
kubectl config view | grep namespace
kubectl get pods
这就是我的测试方法
# Create namespaces k8s-app1, k8s-app2 and k8s-app3
master $ kubectl create ns k8s-app1
namespace/k8s-app1 created
master $ kubectl create ns k8s-app2
namespace/k8s-app2 created
master $ kubectl create ns k8s-app3
namespace/k8s-app3 created
# Create Service Account app1-sa in k8s-app1
# Service Account app2-sa in k8s-app2
# Service Account app3-sa in k8s-app3
master $ kubectl create sa app1-sa -n k8s-app1
serviceaccount/app1-sa created
master $ kubectl create sa app2-sa -n k8s-app2
serviceaccount/app2-sa created
master $ kubectl create sa app3-sa -n k8s-app3
serviceaccount/app3-sa created
# Switch namespace
master $ kubectl config set-context $(kubectl config current-context) --namespace=k8s-app1
Context "kubernetes-admin@kubernetes" modified.
master $ kubectl config view | grep namespace
namespace: k8s-app1
master $ kubectl get sa
NAME SECRETS AGE
app1-sa 1 1m
default 1 6m
master $
master $ kubectl config set-context $(kubectl config current-context) --namespace=k8s-app2
Context "kubernetes-admin@kubernetes" modified.
master $ kubectl get sa
NAME SECRETS AGE
app2-sa 1 2m
default 1 7m
master $
master $ kubectl config set-context $(kubectl config current-context) --namespace=k8s-app3
Context "kubernetes-admin@kubernetes" modified.
master $ kubectl get sa
NAME SECRETS AGE
app3-sa 1 2m
default 1 7m
有以下几种选择:
仅使用kubectl命令切换命名空间::
kubectl config set-context --current --namespace=<namespace>
或者,创建一个定义了namespace的新上下文:
kubectl config set-context gce-dev --user=cluster-admin --namespace=dev
kubectl config use-context gce-dev
或者,使用插件,如kubectx和kubens,下面的命令将上下文切换到kube-system:
$ kubens kube-system
或者,另一个我喜欢的不安装第三方工具的简单替代方案是使用bash别名(linux)。
$ alias kubens='kubectl config set-context --current --namespace '
$ alias kubectx='kubectl config use-context '
// Usage
$ kubens kube-system //Switch to a different namespace
$ kubectx docker //Switch to separate context
Kubectx—用于切换上下文/集群。可以安装“brew install kubectx” Kubens—用于在集群中的名称空间之间切换。也可以安装“brew install kubens”
您可以使用以下名为kubectx的包,它可以很容易地在使用kubectx的集群之间切换
以及使用kubens在名称空间之间切换
我在.zshrc中创建了一个函数
ksns() { kubectl config set-context --current --namespace="$1" }
然后我调用ksns默认