当前位置: 首页 > news >正文

Kubernetes命名空间(Namespace)

Namespace 是 Kubernetes 中用于实现资源隔离和多租户管理的核心机制。它通过将集群资源划分为逻辑上的不同分组,实现了不同团队、项目或环境之间的资源隔离与管理。

1、默认的 Namespace

Kubernetes 集群初始化时会自动创建 4 个默认 Namespace:

  1. default
    • 未指定 Namespace 时的默认选择
    • 通常用于临时测试或单机学习环境
  2. kube-system
    • 用于存放 Kubernetes 系统组件(如 kube-proxy、coredns 等)
    • 不建议在此 Namespace 部署用户应用
  3. kube-public
    • 所有用户(包括未认证用户)均可访问
    • 通常用于存放集群级的公共信息(如集群配置地图)
  4. kube-node-lease
    • 用于存放节点租约(Lease)对象
    • 用于节点心跳检测,提高集群的可用性

2、Namespace 的操作

2.1 查看 Namespace

# 查看所有 Namespace
kubectl get namespaces
kubectl get ns  # 简写形式# 查看 Namespace 详细信息
kubectl describe namespace default# 查看特定 Namespace 中的资源
kubectl get pods -n default  # -n 或 --namespace 指定 Namespace
kubectl get pods --namespace kube-system

2.2 创建 Namespace

命令行方式

kubectl create namespace my-namespace

YAML 配置方式(推荐):

# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:name: my-namespacelabels:environment: productionteam: devops

创建命令:

kubectl apply -f namespace.yaml

2.3 设置默认 Namespace

为避免每次操作都需指定 -n 参数,可设置默认 Namespace:

# 设置默认 Namespace
kubectl config set-context --current --namespace=my-namespace# 查看当前上下文配置
kubectl config view --minify | grep namespace:

2.4 删除 Namespace

kubectl delete namespace my-namespace

注意:删除 Namespace 会同时删除该 Namespace 下的所有资源,请谨慎操作!

3、Namespace 资源隔离特性

3.1 资源名称隔离

不同 Namespace 中可以有同名的资源,它们被视为完全独立的资源:

# 在 default Namespace 创建名为 nginx 的 Pod
kubectl run nginx --image=nginx# 在 my-namespace 创建同名 Pod,不会冲突
kubectl run nginx --image=nginx -n my-namespace

3.2 网络隔离(非默认)

所有 Pod 无论位于哪个节点或哪个命名空间,都可以直接通过 IP 地址相互通信。

同一命名空间内:Pod 可以简单地使用 <service-name>来访问 Service。

例如:在 frontend命名空间的 Pod 访问同一命名空间的 api-service,直接使用 http://api-service:80。

跨命名空间访问:Pod 必须使用 Service 的完全限定域名(FQDN):<service-name>.<namespace-name>.svc.cluster.local

例如:在 frontend命名空间的 Pod 要访问 backend命名空间的 database-service,需要使用 http://database-service.backend.svc.cluster.local:5432。

简单来说:跨命名空间通信的秘诀就是使用 [服务名].[命名空间名].svc.cluster.local这个 DNS 地址

4、Namespace 与多租户管理

Namespace 是实现 Kubernetes 多租户管理的基础,结合其他功能可构建完整的多租户解决方案:

4.1 资源配额(Resource Quota)

为每个 Namespace 设置资源使用上限:

apiVersion: v1
kind: ResourceQuota
metadata:name: my-namespace-quotanamespace: my-namespace
spec:hard:pods: "10"requests.cpu: "4"requests.memory: "8Gi"limits.cpu: "8"limits.memory: "16Gi"

4.2 访问控制(RBAC)

通过 RBAC 为不同 Namespace 配置精细的权限控制:

# 仅允许在 my-namespace 中管理 Pod 的角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: my-namespacename: pod-manager
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]

3. 资源限制范围(Limit Range)

为 Namespace 中的资源设置默认和边界值:

apiVersion: v1
kind: LimitRange
metadata:name: my-namespace-limitsnamespace: my-namespace
spec:limits:- default:cpu: "500m"memory: "512Mi"defaultRequest:cpu: "100m"memory: "256Mi"type: Container

5、Namespace 注意事项

  1. 资源范围限制

    • 并非所有资源都属于 Namespace,如 Node, PersistentVolume, ClusterRole, ClusterRoleBinding, Namespace 本身、StorageClass 等。
    • 可通过 kubectl api-resources --namespaced=true 查看命名空间级资源
  2. 删除影响

    • 删除 Namespace 会级联删除其下所有资源
    • 被删除的 Namespace 会处于 Terminating 状态,直到所有资源都被清理
  3. 默认资源

    • 避免在 default Namespace 部署生产应用
    • 不要修改或删除 kube-system 中的系统组件
  4. 数量限制

    • 单个集群中 Namespace 数量不宜过多(建议不超过 1000)
    • 过多的 Namespace 会增加 etcd 负担和管理复杂度
http://www.wxhsa.cn/company.asp?id=427

相关文章:

  • linux安装python
  • 【IEEE、电力学科品牌会议】第五届智能电力与系统国际学术会议(ICIPS 2025)
  • 软工第一次作业
  • 注释
  • Microsoft 推出 .NET 10 RC 1
  • 2025 第九届控制工程与先进算法国际论坛(IWCEAA 2025)
  • kotlin中的netty
  • 多态
  • 数学分析 I
  • 高等代数 I
  • JAVA反编译神器CFR
  • 记录一下由于VS中qt的插件自动升级引发的编译问题
  • flutter右滑返回直接返回到native问题
  • ck随笔
  • 如何用变量与函数实现随机生成数字交互?附完整教程
  • 离散数学与结构 note
  • Java基础
  • Linux系统简单源码安装NGINX版本1.28.0
  • 终结“网络无助感”:Tenable CEO解析漏洞管理与安全心态
  • 部分算法记录
  • Kubernetes资源管理方式
  • 2025公众号排版工具深度测评报告:10款主流产品功能对比与场景化选择指南
  • 即将举办2025年11月埃及汽配博览会埃及国际汽配展Autotech
  • 生产搭建Hadoop
  • JBT 10389-2014
  • 生产搭建Rabbitmq
  • 【项目实战】基于i.MX8M Plus的人工智能小车(AGV导航、视觉避障、自动跟随、颜色识别、防跌落)有教程代码
  • unity TimeLine SignalTrack
  • macOS Tahoe 26 RC (25A353) Boot ISO 原版可引导镜像下载
  • 企业如何选型低代码平台?4款产品测评