P E*_*ram 24 namespaces kubernetes
说,我有两个名称空间k8s-app1和k8s-app2
我可以使用以下命令列出来自特定名称空间的所有Pod
kubectl get pods -n <namespace>
Run Code Online (Sandbox Code Playgroud)
需要在所有命令后附加名称空间,以列出各个名称空间中的对象。有没有一种方法可以设置特定的名称空间并列出对象,而无需显式地包括名称空间?
Die*_*des 69
有几个选项:
kubectl config set-context --current --namespace=<namespace>
Run Code Online (Sandbox Code Playgroud)
kubectl config set-context gce-dev --user=cluster-admin --namespace=dev
kubectl config use-context gce-dev
Run Code Online (Sandbox Code Playgroud)
kube-system:$ kubens kube-system
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
Pus*_*ots 47
我喜欢简短的回答,而且要提到官方文档:
答:
kubectl config set-context --current --namespace=my-namespace
Run Code Online (Sandbox Code Playgroud)
来自:
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
Run Code Online (Sandbox Code Playgroud)
kva*_*aps 20
我不喜欢kubectx和kubens,因为它们在kubectl命令中添加了一个用于 bash-complection 的字母。
所以我只是写了一个小小的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".
Run Code Online (Sandbox Code Playgroud)
如果您对此感兴趣,请查看https://github.com/kvaps/kubectl-use
P E*_*ram 13
我可以使用以下步骤切换名称空间
kubectl config set-context $(kubectl config current-context) --namespace=<namespace>
kubectl config view | grep namespace
kubectl get pods
Run Code Online (Sandbox Code Playgroud)
这就是我测试的方式
# 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
Run Code Online (Sandbox Code Playgroud)
我在 .zshrc 中创建了一个函数
ksns() { kubectl config set-context --current --namespace="$1" }
Run Code Online (Sandbox Code Playgroud)
然后我打电话 ksns default
| 归档时间: |
|
| 查看次数: |
20798 次 |
| 最近记录: |