目录
一、Namespace(命名空间)
**命名空间(Namespace)**是一种资源隔离机制,将同一集群中的资源划分为相互隔离的组。
命名空间可以在多个用户之间划分集群资源。
- 通常使用名称空间对企业业务进行划分。
- 如果删除了名称空间,则对应的名称空间中的资源也会被删除。
- 相同名称空间下的相同资源,name名称不能重复。
- 可以通过【kubectl api-resources】查看一个资源是否支持名称空间。
- 有的资源是不支持名称空间的,我们称之为全局资源;例如 StorageClass、Node、PersistentVolume 等。
- 而支持名称空间的,我们称之为局部资源;例如 Deployment、Service 等。
二、查看系统的名称空间
1.查看系统中的名称空间列表
bash
[root@k8s1 secrets]# kubectl get namespaces
NAME STATUS AGE
default Active 46h
kube-flannel Active 46h
kube-node-lease Active 46h
kube-public Active 46h
kube-system Active 46h
2.单独查看一个名称空间下的对应资源
bash
[root@k8s1 secrets]# kubectl get pods -o wide -n kube-system
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-6d8c4cb4d-c4cnk 1/1 Running 1 (11h ago) 46h 10.100.1.20 k8s2 <none> <none>
coredns-6d8c4cb4d-x6tdd 1/1 Running 1 (11h ago) 46h 10.100.1.21 k8s2 <none> <none>
etcd-k8s1 1/1 Running 1 (11h ago) 46h 10.35.6.82 k8s1 <none> <none>
kube-apiserver-k8s1 1/1 Running 1 (11h ago) 46h 10.35.6.82 k8s1 <none> <none>
kube-controller-manager-k8s1 1/1 Running 1 (11h ago) 46h 10.35.6.82 k8s1 <none> <none>
kube-proxy-44lw2 1/1 Running 1 (11h ago) 46h 10.35.6.82 k8s1 <none> <none>
kube-proxy-vzqvt 1/1 Running 1 (11h ago) 46h 10.35.0.199 k8s2 <none> <none>
kube-scheduler-k8s1 1/1 Running 1 (11h ago) 46h 10.35.6.82 k8s1 <none> <none>
三、名称空间的管理
1.创建名称空间
1.1响应式创建
bash
[root@k8s1 secrets]# kubectl create namespace oslee
namespace/oslee created
1.2声明式创建
bash
[root@k8s1 secrets]# cat namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: oslee-02
[root@k8s1 secrets]# kubectl apply -f namespace.yaml
namespace/oslee-02 created
2.删除名称空间
bash
[root@k8s1 secrets]# kubectl delete namespaces oslee-02
namespace "oslee-02" deleted
四、资源引用名称空间
bash
[root@k8s1 ns]# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-namespace
#pod归属于哪个名称空间,不写默认是default
namespace: oslee
spec:
containers:
- name: c4
image: nginx:1.20.1-alpine
[root@k8s1 ns]# kubectl apply -f pod.yaml
pod/pod-namespace created