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