K8S 命名空間 (namespace)

命名空間 (namespace)

Namespace是對一組資源和對象的抽象集合.
常見的 pod, service, deployment 等都是屬於某一個namespace的
(默認是 default)
不是全部資源都屬於namespace,如nodes, persistent volume, namespace 等資源則不屬於任何 namespacenode

1、查看namespace

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 系統建立的資源都處於這個命名空間

2、查看namespace裏的資源

使用kubectl get all --namespace=命名空間名稱能夠查看此命名空間 下的全部資源
kubectl get all --namespace=kube-system sql

K8S 命名空間 (namespace)

使用kubectl get 資源類型 --namespace=命名空間名稱能夠查看此命名 空間下的對應的資源
kubectl get pod --namespace=kube-systemvim

K8S 命名空間 (namespace)

3、建立namespace

1.命令建立

kubectl create namespace ns1
kubectl get nsapi

K8S 命名空間 (namespace)

2.YAML文件建立

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

K8S 命名空間 (namespace)

還可經過kubectl explain 資源類型來查看語法文檔this

3.查看namespace相關語法參數

kubectl explain namespacespa

K8S 命名空間 (namespace)

4.查看namespace下級metadata的相關語法參數

kubectl explain namespace.metadata

K8S 命名空間 (namespace)

5.查看namespace下級metadata再下級name的相關語法參數

kubectl explain namespace.metadata.name

K8S 命名空間 (namespace)

6.編寫建立namespace的YAML文件

vim create_ns2.yml

apiVersion: v1                          # api版本號
kind: Namespace                         # 類型爲namespace 
metadata:                               # 定義namespace的元 數據屬性
  name: ns2                             # 定義name屬性爲ns2

7.使用kubctl apply -f應用YAML文件

kubectl apply -f create_ns2.yml
kubectl get ns

K8S 命名空間 (namespace)

4、刪除namespace

注意:
刪除一個namespace會自動刪除全部屬於該namespace的資源(相似 mysql中drop庫會刪除庫裏的全部表同樣,請慎重操做)
default,kube-system,kube-public命名空間不可刪除

1.命令刪除

kubectl delete namespace ns1
kubectl get ns

K8S 命名空間 (namespace)

2.YAML文件刪除

kubectl delete -f create_ns2.yml
kubectl get ns

K8S 命名空間 (namespace)

相關文章
相關標籤/搜索