k8s 命名空间和上下文

在 Kubernetes 中,上下文(Context) 是一个核心概念,用于将集群(Cluster)、用户身份(User)和命名空间(Namespace)组合成一个逻辑单元。它的目的是简化在不同环境(如开发、测试、生产)或不同集群之间的切换操作。


上下文(Context)包含什么?

一个上下文由以下 3 个关键组件组成(存储在 kubeconfig 文件中):

  1. Cluster

    • 定义要连接的 Kubernetes 集群的信息(如 API Server 地址、证书等)。

    • 示例:dev-cluster(开发集群)、prod-cluster(生产集群)。

  2. User

    • 定义访问集群的身份认证信息(如用户名、客户端证书、Token 等)。

    • 示例:dev-admin(开发管理员)、prod-readonly(生产只读用户)。

  3. Namespace(可选)

    • 指定当前上下文的默认命名空间。如果未设置,默认为 default

    • 示例:backendmonitoring


上下文的配置文件(kubeconfig)

上下文的信息存储在 ~/.kube/config 文件中,其结构大致如下:


apiVersion: v1

kind: Config

clusters:

- name: dev-cluster # 集群定义

 cluster:

 server: https://dev.k8s.example.com

 certificate-authority-data: <CA证书>

users:

- name: dev-admin # 用户定义

 user:

 client-certificate-data: <客户端证书>

 client-key-data: <客户端私钥>

contexts:

- name: dev-context # 上下文定义

 context:

 cluster: dev-cluster  # 关联的集群

 user: dev-admin # 关联的用户

 namespace: backend  # 默认命名空间(可选)

current-context: dev-context # 当前使用的上下文

上下文的作用

  1. 快速切换环境

    通过切换上下文,可以一键切换到另一个集群,并自动使用对应的用户身份和命名空间。

    示例

    
    kubectl config use-context prod-context  # 切换到生产集群
    
  2. 权限隔离

    不同上下文可能使用不同的用户身份(如管理员、只读用户),实现权限控制。

  3. 命名空间默认值

上下文中可设置默认命名空间,避免每次命令都要加 -n 参数。


上下文的常见操作

  1. 查看所有上下文

    
    kubectl config get-contexts
    
  2. 查看当前上下文

    
    kubectl config current-context
    
  3. 切换上下文

    
    kubectl config use-context <context-name>
    
  4. 修改上下文的默认命名空间

    
    kubectl config set-context --current --namespace=<namespace>
    

实际场景示例

假设你有以下两个上下文:

  • dev-context: 开发集群 + dev-admin 用户 + backend 命名空间

  • prod-context: 生产集群 + prod-readonly 用户 + default 命名空间

当你运行:


kubectl  config  use-context  dev-context

后续所有命令会自动:

  • 连接到开发集群(dev-cluster)的 API Server。

  • 使用 dev-admin 用户的证书进行认证。

  • 默认操作 backend 命名空间中的资源。


上下文与命名空间的关系

  • 上下文 包含命名空间,但命名空间是可选字段。

  • 切换上下文时,命名空间可能一起切换(如果上下文中设置了命名空间)。

  • 可以通过命令单独修改上下文的命名空间,而无需切换上下文。


总结

  • 上下文 = 集群 + 用户 + 命名空间

  • 它是 Kubernetes 多环境管理的核心机制,能显著提升操作效率。

  • 理解上下文的结构后,可以更灵活地管理开发、测试、生产等不同环境!

本作品采用《CC 协议》,转载必须注明作者和本文链接
比特莱布斯(bit-labs) 是一家专注于前沿软件开发的科技团队,致力于为企业和创业者提供高性能、可扩展的数字化解决方案。我们擅长:移动应用,公众号,小程序,网站,桌面端等应用开发.
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!