Namespace是對一組資源和對象的抽象集合.
常見的 pod, service, deployment 等都是屬於某一個namespace的
(默認是 default)
不是全部資源都屬於namespace,如nodes, persistent volume, namespace 等資源則不屬於任何 namespacenode
kubectl get namespaces # namespaces能夠簡寫爲namespace或nsmysql
[root@master ~]# kubectl get namespaces NAME STATUS AGE default Active 2d6h # 全部未指定 Namespace的對象都會被默認分配在default命名空間 kube-node-lease Active 2d6h kube-public Active 2d6h # 此命名空間下的資源 能夠被全部人訪問 kube-system Active 2d6h # 全部由Kubernetes 系統建立的資源都處於這個命名空間
使用kubectl get all --namespace=命名空間名稱能夠查看此命名空間 下的全部資源
kubectl get all --namespace=kube-system sql
使用kubectl get 資源類型 --namespace=命名空間名稱能夠查看此命名 空間下的對應的資源
kubectl get pod --namespace=kube-systemvim
kubectl create namespace ns1
kubectl get nsapi
k8s中幾乎全部的資源均可以通這YAML編排來建立
能夠使用kubectl edit 資源類型 資源名編輯資源的YAML語法
kubectl edit namespace ns1 app
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 kind: Namespace metadata: creationTimestamp: "2021-02-08T14:55:00Z" name: ns1 #此處修改 resourceVersion: "17578" selfLink: /api/v1/namespaces/ns1 uid: 9dfae471-6a1d-11eb-9a72-000c2936bb86 spec: finalizers: - kubernetes status: phase: Active
也可以使用kubectl get 資源類型 資源名 -o yaml來查看ide
kubectl get ns ns1 -o yamlui
還可經過kubectl explain 資源類型來查看語法文檔this
kubectl explain namespacespa
kubectl explain namespace.metadata
kubectl explain namespace.metadata.name
vim create_ns2.yml
apiVersion: v1 # api版本號 kind: Namespace # 類型爲namespace metadata: # 定義namespace的元 數據屬性 name: ns2 # 定義name屬性爲ns2
kubectl apply -f create_ns2.yml
kubectl get ns
注意:
刪除一個namespace會自動刪除全部屬於該namespace的資源(相似 mysql中drop庫會刪除庫裏的全部表同樣,請慎重操做)
default,kube-system,kube-public命名空間不可刪除
kubectl delete namespace ns1
kubectl get ns
kubectl delete -f create_ns2.yml
kubectl get ns