[Kubernetes] kubeconfig 进行多集群管理

[Kubernetes] kubeconfig 进行多集群管理kubeconfig 介绍 kubeconfig

大家好,欢迎来到IT知识分享网。

在这里插入图片描述

1.认识 kubeconfig

在这里插入图片描述

在这里插入图片描述

  • current-context 选择 context 操作相应集群
  • context 将 user 与 cluster 联系起来
    • cluster是 cluster(K8S 集群)的名称代号
    • user是访问 cluster(K8S 集群)的用户账号代号

    name是这个上下文的名称代号

  • user 提供要操作集群的 cert 与 key
    • name是用户账号的名称代号
    • user/token是用户的 token 认证方式,token 不是用户认证的唯一方式,其他还有账号+密码等。
  • cluster 提供集群的 ca 与 集群的入口地址
    • name是这个 cluster(K8S 集群)的名称代号
    • server是这个 cluster(K8S 集群)的访问方式,一般为 IP+PORT
    • certificate-authority-data是证书数据,只有当 cluster(K8S 集群)的连接方式是 https 时,为了安全起见需要证书数据
$ kubectl config --help Available Commands: current-context 显示当前上下文 delete-cluster 删除kubeconfig文件中指定的集群 delete-context 删除kubeconfig文件中指定的context delete-user 删除kubeconfig文件中指定的user get-clusters 显示kubeconfig文件中定义的集群 get-contexts 显示一个或多个contexts get-users 显示kubeconfig文件中定义的users rename-context 重命名kubeconfig文件里的context set 在kubecconfig文件中设置一个单独的值 set-cluster 在kubecconfig中设置集群条目 set-context 在kubecconfig中设置上下文条目 set-credentials 在kubecconfig中设置一个用户条目 unset 取消kubecconfig文件中单个值的设置 use-context 在kubecconfig文件中设置当前上下文(kubecconfig文件可以有多个上下文) view 显示合并的 kubeconfig 配置或一个指定的 kubeconfig 文件 

2.kubeconifg 使用

  1. kubectl 自动加载 ~/.kube/config
  2. 如果指定 $KUBECONFIG, 从 $KUBECONFIG加载
  3. 也可以通过 kubectl 指定: kubectl config get-contexts –kubeconfig=/root/.kube/config1
apiVersion: v1 clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBD...... server: https://11.0.1.100:16443 # 指定集群的入口 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes # 指定当前 context 上下文 kind: Config preferences: {    } users: - name: kubernetes-admin user: client-certificate-data: ...... client-key-data: ...... 
2.1 生成 context
# 获取 kubeconfig 中所有 cluster $ kubectl config get-clusters NAME kubernetes $ kubectl config set-context test --cluster=kubernetes --user=kubernetes-admin --kubeconfig=/root/.kube/config --namespace=test # --kubeconfig kubeconfig 是默认路径可省略 # --namespace 指定 context 的默认 namespace, 没有即为 default 
...... contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes - context: # 新增 context cluster: kubernetes namespace: test user: kubernetes-admin name: test ... 
2.2 切换 context 上下文
# 查看当前 context $ kubectl config current-context kubernetes-admin@kubernetes # 查看 kubeconfig 中所有 context $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE kubernetes-admin@kubernetes kubernetes kubernetes-admin * test kubernetes kubernetes-admin test # 切换 context $ kubectl config use-context test Switched to context "test". # 创建 pod | 默认在 test namespace 下创建 $ k get po NAME READY STATUS RESTARTS AGE nginxpod 1/1 Running 0 14m 
2.3 多集群管理

因集群配置有 vip, 本文将新增一个 cluster 直接指向 master apiserver 的地址, 所以, cluster 的 ca 不变

$ cat ~/.kube/config apiVersion: v1 clusters: - cluster: certificate-authority-data: LS0tLS1CRUdJTiBD...... server: https://11.0.1.100:16443 name: kubernetes - cluster: certificate-authority-data: LS0tLS1CRUdJTiBD...... server: https://11.0.1.150:6443 name: direct-cluster contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes - context: cluster: kubernetes namespace: test user: kubernetes-admin name: test current-context: test kind: Config preferences: { 
   } users: - name: kubernetes-admin user: client-certificate-data: ...... client-key-data: ...... 

创建 context

# 默认 namespace 为 default $ kubectl config set-context direct --user=kubernetes-admin --cluster=direct-cluster # 切换 context $ kubectl config use-context direct $ kubectl get po No resources found in default namespace. 

新增 context

...... contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes - context: cluster: kubernetes namespace: test user: kubernetes-admin name: test - context: # 新增 context cluster: direct-cluster user: kubernetes-admin name: direct ... 

3.Api 使用

列出所有上下文信息。

kubectl config get-contexts 

查看当前的上下文信息。

kubectl config current-context 

更改context信息

kubectl config use-context ${CONTEXT_NAME} 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135664.html

(0)
上一篇 2025-07-02 22:33
下一篇 2025-07-02 22:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信