K8S 命名空间 (namespace)

命名空间 (namespace)

Namespace是对一组资源和对象的抽象集合.
常见的 pod, service, deployment 等都是属于某一个namespace的
(默认是 default)
不是所有资源都属于namespace,如nodes, persistent volume, namespace 等资源则不属于任何 namespace

一、查看namespace

kubectl get namespaces       # namespaces可以简写为namespace或ns

[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 系统创建的资源都处于这个命名空间

二、查看namespace里的资源

使用kubectl get all --namespace=命名空间名称可以查看此命名空间 下的所有资源
kubectl get all --namespace=kube-system

K8S 命名空间 (namespace)

使用kubectl get 资源类型 --namespace=命名空间名称可以查看此命名 空间下的对应的资源
kubectl get pod --namespace=kube-system

K8S 命名空间 (namespace)

三、创建namespace

1.命令创建

kubectl create namespace ns1
kubectl get ns

K8S 命名空间 (namespace)

2.YAML文件创建

k8s中几乎所有的资源都可以通这YAML编排来创建
可以使用kubectl edit 资源类型 资源名编辑资源的YAML语法
kubectl edit namespace ns1

# 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来查看

kubectl get ns ns1 -o yaml

K8S 命名空间 (namespace)

还可通过kubectl explain 资源类型来查看语法文档

3.查看namespace相关语法参数

kubectl explain namespace

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)

四、删除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)

猜你喜欢

转载自blog.51cto.com/13760351/2622839