news 2026/9/25 10:08:07

K8S中Namespace(ns)、Pod、Service和ConfigMap(cm)四种重要的资源对象的关系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8S中Namespace(ns)、Pod、Service和ConfigMap(cm)四种重要的资源对象的关系

在Kubernetes中,Namespace(ns)、Pod、Service和ConfigMap(cm)是四种重要的资源对象,它们之间存在着紧密的关系。下面我将详细解释它们之间的关系以及它们是如何协同工作的。

1. 基本概念

  • Namespace(ns):命名空间,是Kubernetes中用于资源隔离的逻辑分组。可以将不同的资源划分到不同的命名空间中,从而实现多租户、环境隔离等。

  • Pod:是Kubernetes中最小的部署和管理单位。一个Pod可以包含一个或多个容器(通常是一个),这些容器共享网络、存储等资源。

  • Service:是Kubernetes中定义了一组Pod的访问策略的抽象。它为Pod提供了一个稳定的IP地址和DNS名称,并且可以负载均衡到后端的Pod。

  • ConfigMap(cm):是一种用于存储非机密数据的资源对象。它可以将配置数据以键值对的形式存储,然后注入到Pod中,使应用程序可以方便地使用这些配置。

  • text

    Namespace ├── Pods (运行容器) │ ├── 通过环境变量引用 ConfigMap │ ├── 通过Volume挂载 ConfigMap │ └── 被Service的Selector选择 │ ├── Services │ ├── 通过Selector选择Pods │ └── 为Pods提供稳定访问入口 │ └── ConfigMaps └── 被Pods引用作为配置数据

2. 关系描述

2.1 Namespace 与其他资源

  • Namespace 提供了一个逻辑上的边界,Pod、Service、ConfigMap 等资源都属于某个特定的 Namespace(除了少数集群级别的资源)。

  • 默认情况下,Kubernetes 有四个命名空间:default、kube-system、kube-public、kube-node-lease。用户也可以创建自己的命名空间。

  • 同一命名空间内的资源可以通过名称进行相互引用,而跨命名空间的资源引用需要加上命名空间名称(例如service-name.namespace-name)。

2.2 Pod 与 Service

  • Service 通过标签选择器(Selector)与一组 Pod 关联。当创建 Service 时,需要定义标签选择器,Service 会动态地发现并关联具有匹配标签的 Pod。

  • Service 为这组 Pod 提供了一个统一的访问入口,客户端只需访问 Service 的集群IP(或NodePort、LoadBalancer等)即可,而不需要直接访问每个 Pod 的IP。

  • Service 还负责将请求负载均衡到后端的一个Pod上。

2.3 Pod 与 ConfigMap

  • ConfigMap 用于将配置数据与 Pod 解耦。Pod 可以通过两种方式使用 ConfigMap:

    1. 环境变量:将 ConfigMap 中的数据作为环境变量注入到 Pod 的容器中。

    2. 卷挂载:将 ConfigMap 中的键值对作为文件挂载到 Pod 的容器中,每个键成为文件名,值成为文件内容。

  • 这样,当配置数据发生变化时,可以更新 ConfigMap 而不需要重新构建镜像或重启 Pod(部分情况需要重启,取决于使用方式)。

2.4 Service 与 ConfigMap

  • Service 和 ConfigMap 之间没有直接的关系。但是,ConfigMap 中可能会存储一些配置,例如应用程序需要访问的 Service 的地址(通常通过环境变量或配置文件注入)。

  • 另外,ConfigMap 也可以用于存储其他服务的访问信息,但这不是强关联,而是通过应用程序的配置来间接关联。

2.5 四者之间的协同

在一个典型的应用部署中:

  1. 首先,我们创建一个命名空间(例如my-namespace)来隔离资源。

  2. 然后,创建一个 ConfigMap,存储应用程序的配置数据(例如数据库连接字符串)。

  3. 接着,部署一个 Pod(通常通过 Deployment 等控制器),在 Pod 的定义中,通过环境变量或卷挂载引用 ConfigMap 中的配置。

  4. 最后,创建一个 Service,通过标签选择器与这个 Pod 关联,以便其他服务或外部客户端可以访问这个应用。

3. 示例

假设我们有一个简单的 Web 应用,它需要读取一个配置文件,并且我们希望其他服务能够访问它。

3.1 创建命名空间

yaml

apiVersion: v1 kind: Namespace metadata: name: my-namespace

3.2 创建 ConfigMap

yaml

apiVersion: v1 kind: ConfigMap metadata: name: my-config namespace: my-namespace data: app.properties: | database.url=jdbc:mysql://db-service:3306/mydb server.port=8080

3.3 创建 Pod(通过 Deployment)

yaml

apiVersion: apps/v1 kind: Deployment metadata: name: my-app namespace: my-namespace spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app:latest ports: - containerPort: 8080 env: - name: DB_URL valueFrom: configMapKeyRef: name: my-config key: database.url volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: my-config

3.4 创建 Service

yaml

apiVersion: v1 kind: Service metadata: name: my-service namespace: my-namespace spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP

4. 总结

  • Namespace提供了资源隔离和分组。

  • Pod是运行应用的容器组。

  • Service提供了对一组 Pod 的稳定访问和负载均衡。

  • ConfigMap提供了配置数据的管理,并可以将配置注入到 Pod 中。

它们之间的关系可以概括为:在同一个 Namespace 中,Service 通过标签选择器将流量路由到具有匹配标签的 Pod,而 Pod 可以通过 ConfigMap 获取配置数据。这样,我们就能够构建一个可配置、可访问且隔离的微服务应用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 21:26:02

2025 网安副业入门:5 个低门槛方向,零基础也能接的第一单

2025 网安副业入门:5 个低门槛方向,零基础也能接的第一单 “学了半个月 Kali,想赚点外快却不知道从哪下手”“怕技术不够接不了单,又怕定价太高没人要”—— 这是 90% 网安新手想做副业时的共同困境。2025 年网安副业市场需求旺盛…

作者头像 李华
网站建设 2026/9/25 4:45:22

WebSocket实时通讯完整指南:从基础到生产级应用

引言在现代Web应用开发中,实时通讯已经成为不可或缺的功能。无论是聊天应用、实时数据监控,还是在线游戏,WebSocket都扮演着重要角色。本文将基于Vue3项目,详细介绍如何实现一个生产级的WebSocket实时通讯方案。一、WebSocket基础…

作者头像 李华
网站建设 2026/9/24 21:25:54

43、Unix 手册页与文件系统全面解析

Unix 手册页与文件系统全面解析 1. 手册页语法检查 在 Unix 系统中,检查手册页的正确格式通常有多种方式。可以通过打印输出来直观检查,使用的命令如下: - groff -man -Tps pathfind.man | lp - troff -man -Tpost pathfind.man | /usr/lib/lp/postscript/dpost | lp…

作者头像 李华
网站建设 2026/9/24 16:48:33

大模型+数据治理=解放双手!AI Agent编程实战,让代码自己会思考

引言 当“人治”成为数据治理的最大瓶颈, AI Agent 正在成为那根撬动变革的杠杆。 在企业数字化浪潮中,“数据治理”早已不是新鲜词。但现实却令人无奈:制度写得再完善,执行仍靠人;流程设计再精细,落地总…

作者头像 李华
网站建设 2026/9/24 15:06:45

AI干货:多模态大模型技术演进全解析!从CLIP到Qwen3-Omni,三条技术路线重塑AI开发范式,小白也能看懂的AI革命!

导语 从视觉与语言的初步对齐,到跨模态理解与生成的深度融合,多模态大语言模型(Multimodal LLM)的演进正以前所未有的速度重塑人机交互的边界。 回溯这一技术脉络,CLIP 首次通过对比学习在海量图文数据中建立起语义对…

作者头像 李华
网站建设 2026/9/24 21:25:44

JAVA多端任务系统:助力国际悬赏接单新体验

JAVA多端任务系统:助力国际悬赏接单新体验——以技术驱动全球化协作,打造高效、透明、安全的跨境任务生态一、系统核心价值:破解国际悬赏接单三大痛点跨时区协作难题痛点:全球用户因时区差异导致任务响应延迟,影响项目…

作者头像 李华