5.K8s名稱空間
阿新 • • 發佈:2021-10-08
名稱空間的出現,原理上是為了劃分組的方式來管理pod在哪個namespace上執行,而不需要去關心這些pod具體在哪個節點上工作,就好像QQ群一樣。
檢視ns
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 166m
kube-node-lease Active 166m
kube-public Active 166m
kube-system Active 166m
新建一個ns
[root@master ~]# kubectl create ns ns1 namespace/ns1 created [root@master ~]# kubectl get ns NAME STATUS AGE default Active 166m kube-node-lease Active 166m kube-public Active 166m kube-system Active 166m ns1 Active 1s
刪除一個名稱空間
[root@master ~]# kubectl delete ns ns1
namespace "ns1" deleted
如果刪不掉ns1就需要特別處理
kubectl delete ns ns1 #先用delete刪除 kubectl proxy --port=8081 #單獨開一個終端,做api代理 #下面通過強制刪除ns1 kubectl get ns ns1 -o json | jq 'del(.spec.finalizers)' |curl -v -H "Content-Type: application/json" -X PUT --data-binary @- http://127.0.0.1:8081/api/v1/namespaces/ns1/finalize [root@master ~]#kubectl get ns NAME STATUS AGE default Active 3h24m kube-node-lease Active 3h24m kube-public Active 3h24m kube-system Active 3h24m #這樣就刪除乾淨了
沒有jq的話,可以按照如下方式安裝jq
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum repolist
yum install -y jq
namespace快速切換器kubectx的安裝
git clone https://github.com/ahmetb/kubectx.git
cp kubectx/kube* /usr/local/bin/ ##把相關檔案放到可執行目錄裡
[root@master kubectx-master]# kubens default kube-node-lease kube-public kube-system ns1
[root@master kubectx-master]# kubens --help
USAGE:
kubens : list the namespaces in the current context #list namespace
kubens <NAME> : change the active namespace of current context #切換namespace
kubens - : switch to the previous namespace in this context #切到原來的
kubens -c, --current : show the current namespace #顯示當前namespace
kubens -h,--help : show this message
[root@master kubectx-master]# kubens ns1
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "ns1".
[root@master kubectx-master]# kubens
default
kube-node-lease
kube-public
kube-system
ns1
[root@master kubectx-master]# kubens -c
ns1
[root@master kubectx-master]# kubectl config set-context --current --namespace=ns1 #還可以原生的切換
Context "kubernetes-admin@kubernetes" modified.
[root@master kubectx-master]# kubens - #檢視之前的namespace
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "ns1".
[root@master kubectx-master]# kubens -
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "ns1".
[root@master kubectx-master]# kubens -c #檢視當前的namespace
ns1
[root@master kubectx-master]# kubectl get pods #查當前的namespace下有什麼資源
No resources found in ns1 namespace.
[root@master kubectx-master]# kubens #檢視所有的namespace
default
kube-node-lease
kube-public
kube-system
ns1
[root@master kubectx-master]# kubens default #切換回default
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "default".
[root@master kubectx-master]# kubectl get pods #查當前的namespace下有什麼資源,發現有了原來的資源了
NAME READY STATUS RESTARTS AGE
nginx-deployment-c7c9d97b4-7vdrh 1/1 Running 0 103m
nginx-deployment-c7c9d97b4-gcn4f 1/1 Running 0 78m