K8s 的 Namespace 是对一组资源和对象的抽象集合,命名空间为资源名称提供了额外的限定条件。当多个团队使用同一个集群并且存在名称冲突的可能性时,这很有帮助。它可以作为多个集群之间的虚拟墙。
命名空间的特性
以下是 Kubernetes 中命名空间的一些重要特性:
- 命名空间帮助使用相同命名空间的 pod 到 pod 之间的通信。
- 命名空间是可以位于同一物理集群之上的虚拟集群。
- 它们在团队及其环境之间提供逻辑分离。
创建命名空间
以下 yaml 文件配置用于创建命名空间:
apiVersion: v1
kind: Namespace
metadata
  name: elk
操作命名空间
以下命令用于控制命名空间:
- 
创建命令空间命令: kubectl create –f namespace.yml
- 
列出所有可用的命名空间: kubectl get namespace
- 
获取指定命名空间的信息: kubectl get namespace <namespace_name>
- 
获取描述有关命令空间的完整详细信息: kubectl describe namespace <namespace_name>
- 
删除集群中存在的特定命名空间: kubectl delete namespace <namespace_name>
使用命名空间 - 示例
以下是在服务中使用命名空间的示例文件配置:
apiVersion: v1
kind: Service
metadata:
  name: elasticsearch
  namespace: elk
  labels:
    component: elasticsearch
spec:
  type: LoadBalancer
  selector:
    component: elasticsearch
  ports:
    - name: http
      port: 9200
      protocol: TCP
    - name: transport
      port: 9300
      protocol: TCP

