3.0 KiB
3.0 KiB
一、命名空间
Kubernetes 的命名空间是一种将集群内的资源进行逻辑分割的机制。它们是用来实现多租户环境的一种方式,允许不同的团队或项目在同一个集群中运行,而不会互相干扰。命名空间可以用来组织资源,提供一种隔离机制,并可以用于访问控制、资源配额以及策略的应用
二、命名空间的主要用途
- 资源分隔:命名空间可以让资源(如Pods、Services、Deployments等)彼此隔离。不同命名空间中同名的资源不会冲突
- 多租户环境:在同一个集群中,不同的用户(或团队、部门、项目)可以使用各自的命名空间,从而保持工作环境的独立性
- 权限控制:通过Role-Based Access Control(RBAC),可以为不同的命名空间设置不同的访问权限,实现细粒度的权限管理
- 配额管理:可以为每个命名空间设置资源配额(ResourceQuotas),限制该命名空间可以使用的资源数量,例如CPU、内存、存储等
- 策略应用:可以为命名空间应用策略,如网络策略(NetworkPolicies)来控制命名空间内部或跨命名空间的网络流量
三、默认命名空间
default
:如果不指定命名空间,资源默认被创建在这个命名空间中kube-system
:由Kubernetes系统创建的资源所在的命名空间,如系统组件和服务kube-public
:这是一个自动创建的命名空间,对所有用户都是可读的。它通常用于集群级别的资源,如集群信息(如集群CIDR范围)kube-node-lease
:用于持有每个节点的租约对象,这些租约用于节点寿命的确定
四、命名空间操作
-
使用kubectl 工具操作
- 创建命名空间:
kubectl create namespace <namespace-name>
- 获取命名空间列表:
kubectl get namespaces # 或者使用缩写 kubectl get ns
- 获取特定命名空间的详细信息:
kubectl describe namespace <namespace-name>
- 删除命名空间:
kubectl delete namespace <namespace-name>
- 设置默认命名空间:
为了避免每次都在
kubectl
命令中指定--namespace
参数,你可以更改你的Kubernetes配置来设置默认的命名空间:kubectl config set-context $(kubectl config current-context) --namespace=<namespace-name>
- 查看当前上下文的默认命名空间:
kubectl config view | grep namespace:
-
使用yaml文件
- 创建命名空间的YAML文件(namespace.yaml):
apiVersion: v1 kind: Namespace metadata: name: <namespace-name>
- 应用YAML文件来创建命名空间:
kubectl apply -f namespace.yaml
-
删除命名空间:
使用YAML文件删除命名空间,首先你需要确保知道要删除的命名空间的准确名称:
kubectl delete -f namespace.yaml