一. 基础解释
- 在k8s中还存在一种资源,namespace名称空间, 默认提供了3个
- default: 在创建k8s对象时,不指定metadata.namespace时的默认值
- kube-system: k8s中系统创建的对象放在此名称空间下
- kube-public: 此名称空间自动在安装集群是自动创建,并且所有用户都是可以读取的(即使是那些未登录的用户)。主要是为集群预留的,例如,某些情况下,某些Kubernetes对象应该被所有集群用户看到
- 同一名称空间下资源可以共享, 不同名称空间下则不可,但是不同名称空间下网了是互通的(实际也可以隔离),通过该资源在k8s中可以实现隔离功能,例如使用名称空间实现
- 基于环境创建名称空间隔离
- 基于产品线创建名称空间隔离
- 基于团队创建名称空间隔离
- 默认情况下安装Kubernetes集群时会初始化一个default名称空间,用来承载那些未指定名称空间的Pod、Service、Deployment等对象,大多数kubernetes资源(例如Pod、Service、副本控制器等)都位于某些命名空间中。但是命名空间资源本身并不在命名空间中。而且底层资源,例如nodes和持久化卷不属于任何命名空间
- 查看哪些资源在命名空间中,哪些不在命名空间中命令:
//Inanamespace
kubectlapi-resources--namespaced=true
//Notinanamespace
kubectlapi-resources--namespaced=false
二. 名称空间的创建
- 删除名称空间命令
//ns是k8s中提供的名称空间别名缩写
kubectl delete ns 指定名称空间名字
- 查看名称空间信息
kubectl get -n 指定名称空间
- 创建名称空间命名规则:由数字,小写字母,减号-字符串组成,不能带小数点,不能使用下划线,
- 命令方式创建名称空间
kubectl create ns 名称空间命中
- 通过dry命令尝试创建一个名称空间并输出yaml,获取这个yaml作为base创建自己的名称空间
kubectl create ns 名称空间名字 --dry-run=client -o yaml
apiVersion: v1
kind: Namespace
metadata:
name: <名称空间的名字>
- yaml创建完成后,应用生效
kubectl apply -f 名称.yaml