Kubernetes kubeconfig 文件组织集群访问

在 Kubernetes 中,kubeconfig 文件是组织和管理集群访问的核心配置文件。它包含了用户身份、集群信息和上下文,用来告诉 kubectl 如何连接到不同的集群、使用哪个用户身份以及在哪个命名空间下工作。


🧩 kubeconfig 的核心作用

  • 组织集群访问:保存多个集群的连接信息。
  • 管理用户身份:存储不同用户的认证方式(证书、Token)。
  • 上下文切换:通过 Context 快速切换集群、用户和命名空间。
  • 安全认证:保存证书、密钥或 Token,用于安全访问 API Server。

📌 类比理解

kubeconfig 文件想象成一个 旅行护照夹

  • clusters = 国家信息
    👉 每个 cluster 就像一个国家,里面有边境地址(API Server)和官方印章(CA 证书)。
  • users = 签证/身份
    👉 每个 user 就像护照或签证,证明你是谁,允许你进入某个国家。
  • contexts = 行程单
    👉 每个 context 就像一份旅行行程,告诉你要去哪个国家(cluster)、用哪个签证(user)、在哪个城市(namespace)。
  • current-context = 当前行程
    👉 就是你现在正在执行的旅行计划,决定你此刻在哪个国家、用哪个身份。

📝 示例 kubeconfig 文件

apiVersion: v1
kind: Config
clusters:
- name: dev-cluster
  cluster:
    server: https://dev.example.com:6443
    certificate-authority: /path/to/ca.crt
users:
- name: dev-user
  user:
    client-certificate: /path/to/dev.crt
    client-key: /path/to/dev.key
contexts:
- name: dev-context
  context:
    cluster: dev-cluster
    user: dev-user
    namespace: development
current-context: dev-context

👉 在这个例子里:

  • dev-cluster 是一个国家(集群)。
  • dev-user 是签证(用户身份)。
  • dev-context 是行程单(上下文)。
  • current-context: dev-context 表示你现在正在执行这份行程。

⚙️ 常用命令

  • 查看当前上下文:

    kubectl config current-context
    
  • 切换上下文:

    kubectl config use-context prod-context
    
  • 查看所有上下文:

    kubectl config get-contexts
    
  • 查看所有集群:

    kubectl config get-clusters
    

⚠️ 注意事项

  • 安全性:推荐使用证书或 Token,不要用明文密码。
  • 合理命名:集群、用户和上下文名称要清晰,避免混淆。
  • 命名空间默认值:在 context 中设置 namespace,可以减少命令行参数。

💡 总结

  • kubeconfig 文件是 Kubernetes 的 旅行护照夹
  • clusters、users、contexts 就像国家、签证和行程单。
  • current-context 决定你当前的旅行计划(默认连接的集群和命名空间)。

🧩 clusters

在 Kubernetes 的 kubeconfig 文件中,clusters 部分用来定义集群的连接信息,它告诉 kubectl 如何找到并安全地连接到 API Server。


🧩 clusters 的作用

  • 指定 API Server 地址:告诉客户端要连接的集群入口。
  • 提供安全证书:通过 CA 证书验证 API Server 的身份。
  • 支持多集群:一个 kubeconfig 文件可以定义多个 cluster,方便在不同环境间切换。

📌 clusters 的结构

每个 cluster 通常包含以下字段:

  • name:集群的名字,用于在 context 中引用。
  • server:API Server 的 URL。
  • certificate-authoritycertificate-authority-data:CA 证书文件路径或内嵌数据,用于验证 API Server。
  • insecure-skip-tls-verify:是否跳过 TLS 验证(不推荐)。

📝 示例配置

apiVersion: v1
kind: Config
clusters:
- name: dev-cluster
  cluster:
    server: https://dev.example.com:6443
    certificate-authority: /path/to/ca.crt
- name: prod-cluster
  cluster:
    server: https://prod.example.com:6443
    certificate-authority: /path/to/prod-ca.crt

👉 在这个示例中,定义了两个集群:dev-clusterprod-cluster,分别指向不同的 API Server。


⚙️ 常用命令

  • 查看当前集群:

    kubectl config view --minify | grep server
    
  • 查看所有集群:

    kubectl config get-clusters
    

⚠️ 注意事项

  • 安全性:推荐使用 CA 证书验证 API Server,避免使用 insecure-skip-tls-verify
  • 多集群管理:合理命名 cluster,避免混淆。
  • 与 context 配合:cluster 本身只是定义连接信息,必须与 user 和 namespace 组合成 context 才能使用。

💡 总结

  • clusters 是 kubeconfig 文件的核心部分,定义了 API Server 的地址和安全信息。
  • 一个 kubeconfig 文件可以包含多个 cluster,方便管理不同环境。
  • 与 users 和 contexts 配合使用,才能实现完整的集群访问控制。

🧩 users

在 Kubernetes 的 kubeconfig 文件中,users 部分用来定义用户的认证信息。它告诉 kubectl 使用哪个身份来访问 API Server。


🧩 users 的作用

  • 身份认证:保存用户的证书、密钥或 Token,用于安全访问集群。
  • 支持多用户:一个 kubeconfig 文件可以定义多个用户,方便在不同角色之间切换。
  • 与 clusters、contexts 配合:用户信息必须与集群和上下文组合才能生效。

📌 users 的结构

每个 user 通常包含以下字段:

  • name:用户的名字,用于在 context 中引用。
  • client-certificate / client-certificate-data:客户端证书文件路径或内嵌数据。
  • client-key / client-key-data:客户端私钥文件路径或内嵌数据。
  • token:用于认证的 Bearer Token。
  • username / password:基本认证方式(不推荐)。

📝 示例配置

apiVersion: v1
kind: Config
users:
- name: dev-user
  user:
    client-certificate: /path/to/dev.crt
    client-key: /path/to/dev.key
- name: prod-user
  user:
    token: abcdef1234567890

👉 在这个示例中,dev-user 使用证书认证,prod-user 使用 Token 认证。


⚙️ 常用命令

  • 查看所有用户:

    kubectl config get-users
    
  • 添加新用户:

    kubectl config set-credentials new-user --client-certificate=/path/to/new.crt --client-key=/path/to/new.key
    

⚠️ 注意事项

  • 安全性:推荐使用证书或 Token,不要使用明文用户名和密码。
  • 与 context 配合:单独定义用户没有意义,必须与 cluster 组合成 context 才能使用。
  • 多用户场景:合理命名用户,避免混淆。

💡 总结

  • users 是 kubeconfig 文件的认证部分,定义了用户的身份信息。
  • 支持证书、密钥、Token 等多种认证方式。
  • 与 clusters 和 contexts 配合使用,才能实现完整的访问控制。

🧩 contexts

在 Kubernetes 的 kubeconfig 文件中,contexts 部分是把 clustersusers 和命名空间组合在一起的配置。它定义了一个完整的访问环境,告诉 kubectl 使用哪个集群、哪个用户身份,以及在哪个命名空间下工作。


🧩 contexts 的作用

  • 组合信息:把集群、用户和命名空间绑定在一起。
  • 快速切换:通过上下文可以在不同环境间快速切换。
  • 简化命令:避免每次执行命令时都要指定集群、用户和命名空间。

📌 contexts 的结构

每个 context 通常包含以下字段:

  • name:上下文的名字,用于切换。
  • cluster:引用一个已定义的 cluster。
  • user:引用一个已定义的 user。
  • namespace:指定默认命名空间(可选)。

📝 示例配置

apiVersion: v1
kind: Config
contexts:
- name: dev-context
  context:
    cluster: dev-cluster
    user: dev-user
    namespace: development
- name: prod-context
  context:
    cluster: prod-cluster
    user: prod-user
    namespace: production
current-context: dev-context

👉 在这个示例中:

  • dev-context 使用 dev-clusterdev-user,默认命名空间是 development
  • prod-context 使用 prod-clusterprod-user,默认命名空间是 production
  • 当前上下文是 dev-context

⚙️ 常用命令

  • 查看当前上下文:

    kubectl config current-context
    
  • 切换上下文:

    kubectl config use-context prod-context
    
  • 查看所有上下文:

    kubectl config get-contexts
    
  • 设置命名空间:

    kubectl config set-context --current --namespace=development
    

⚠️ 注意事项

  • 必须与 cluster 和 user 配合:单独的 context 没有意义。
  • 合理命名:上下文名称应清晰标识环境(如 dev、prod)。
  • 命名空间默认值:可以减少命令行参数,提高效率。

💡 总结

  • contexts 是 kubeconfig 文件的组合部分,把 cluster、user 和 namespace 绑定在一起。
  • 它让我们可以快速切换不同环境,简化命令。
  • 当前上下文决定了 kubectl 默认连接的集群和命名空间。

🧩 current-context

在 Kubernetes 的 kubeconfig 文件中,current-context 用来指定当前正在使用的上下文。它决定了 kubectl 默认连接的集群、使用的用户身份以及所在的命名空间。


🧩 current-context 的作用

  • 默认环境:告诉 kubectl 在执行命令时使用哪个 context。
  • 简化操作:避免每次命令都要指定 --context 参数。
  • 快速切换:通过修改 current-context,可以在不同集群和用户之间切换。

📌 示例配置

apiVersion: v1
kind: Config
clusters:
- name: dev-cluster
  cluster:
    server: https://dev.example.com:6443
    certificate-authority: /path/to/ca.crt
users:
- name: dev-user
  user:
    client-certificate: /path/to/dev.crt
    client-key: /path/to/dev.key
contexts:
- name: dev-context
  context:
    cluster: dev-cluster
    user: dev-user
    namespace: development
current-context: dev-context

👉 在这个示例中,current-context 设置为 dev-context,因此 kubectl 默认会连接到 dev-cluster,使用 dev-user,并在 development 命名空间下工作。


⚙️ 常用命令

  • 查看当前上下文:

    kubectl config current-context
    
  • 切换上下文:

    kubectl config use-context prod-context
    
  • 查看所有上下文:

    kubectl config get-contexts
    

⚠️ 注意事项

  • 必须存在对应的 context:如果 current-context 指向不存在的 context,命令会失败。
  • 合理命名:上下文名称应清晰标识环境(如 dev、prod)。
  • 命名空间默认值:通过 context 设置命名空间,可以减少命令行参数。

💡 总结

  • current-context 是 kubeconfig 文件的默认入口
  • 它决定了 kubectl 当前连接的集群、用户和命名空间。
  • 通过切换 current-context,可以轻松在不同环境间工作。
posted @ 2026-05-29 15:51  Donaver  阅读(50)  评论(0)    收藏  举报