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