命名空间namespace
1.可以实现多套环境资源隔离
2.多租户资源隔离
默认情况下,pod可以互相访问,想要限制两个pod互相访问可以分配到不同的命名空间下实现网络隔离
namespace可以通过k8s的授权机制,将不同的namespace交给不同的用户管理,这样就实现了多用户的资源隔离
还能结合k8s的资源配额机制,限定用户可以占用的资源
[qq@k8snode1 ~]$ kubectl get namespace
NAME STATUS AGE
default Active 45h # 所有未指定Namespace的对象都会被分配在default命名空间
kube-node-lease Active 45h # 集群节点之间的心跳维护,v1.13开始引入
kube-public Active 45h # 此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-system Active 45h # 所有由Kubernetes系统创建的资源都处于这个命名空间
[qq@k8snode1 ~]$ kubectl create ns dev
《首先先创建一个命名空间》
namespace/dev created
[qq@k8snode1 ~]$ kubectl get ns dev -o yaml
《然后查看一下yaml格式的详细信息》
apiVersion: v1
kind: Namespace
metadata:
creationTimestamp: "2022-02-14T10:48:27Z"
labels:
kubernetes.io/metadata.name: dev
name: dev
resourceVersion: "39246"
uid: 9d4dfd47-2a29-454f-82a2-9404f2fc92ac
spec:
finalizers:
- kubernetes
status:
phase: Active
这样你就获得了一个新鲜的命名空间yaml文件
我们稍加更改
[qq@k8snode1 ~]$cat devns.yaml
apiVersion: v1
kind: Namespace
metadata:
name: dev
创建一个 devns.yaml文件
[qq@k8snode1 ~]$ kubectl delete ns dev
namespace "dev" deleted
《先干掉之前创建的dev》
[qq@k8snode1 ~]$ kubectl apply -f devns.yaml
namespace/dev created
《用声明式对象配置练习一下》
[qq@k8snode1 ~]$ kubectl get -f devns.yaml
NAME STATUS AGE
dev Active 11s
《有啦》
[qq@k8snode1 ~]$ kubectl delete -f devns.yaml
namespace "dev" deleted
《再干掉》
[qq@k8snode1 ~]$ kubectl create -f devns.yaml
namespace/dev created
《用命令式对象配置再看看》
[qq@k8snode1 ~]$ kubectl get -f devns.yaml
NAME STATUS AGE
dev Active 4s
[qq@k8snode1 ~]$ kubectl get -f devns.yaml
NAME STATUS AGE
dev Active 16s
[qq@k8snode1 ~]$ kubectl delete -f devns.yaml
namespace "dev" deleted
[qq@k8snode1 ~]$ kubectl get -f devns.yaml
Error from server (NotFound): namespaces "dev" not found