当存在多个kubeconfig文件时,我们可以将其进行合并使用。
当前系统上存在2个kubeconfig文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 root@k8s-master01:~ apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kube-api:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: REDACTED client-key-data: REDACTED root@k8s-master01:~ apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kube-api:6443 name: kubernetes contexts: - context: cluster: kubernetes user: masuri name: masuri@kubernetes current-context: masuri@kubernetes kind: Config preferences: {} users: - name: masuri user: client-certificate-data: REDACTED client-key-data: REDACTED
使用变量合并kubeconfig 1.使用KUBECONFIG变量将其进行合并
2.再次使用config view查看config文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 root@k8s-master01:~ apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kube-api:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes - context: cluster: kubernetes user: masuri name: masuri@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: REDACTED client-key-data: REDACTED - name: masuri user: client-certificate-data: REDACTED client-key-data: REDACTED
但是此方法存在问题,如果多个kubeconfig文件中存在多个相同的集群,会导致config中相同的集群出现多次。我们可以在此基础上将其重合部分进行斩平,然后重新生成新文件。
合并kubeconfig方法2 使用merge文件合并,flatten斩平
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 root@k8s-master01:~ root@k8s-master01:~ apiVersion: v1 clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://kube-api:6443 name: kubernetes contexts: - context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetes - context: cluster: kubernetes user: masuri name: masuri@kubernetes current-context: kubernetes-admin@kubernetes kind: Config preferences: {} users: - name: kubernetes-admin user: client-certificate-data: REDACTED client-key-data: REDACTED - name: masuri user: client-certificate-data: REDACTED client-key-data: REDACTED
测试使用不同账号来获取资源信息
1 2 3 4 5 6 7 8 9 10 11 root@k8s-master01:~ NAME STATUS ROLES AGE VERSION k8s-master01 Ready control-plane,master 15d v1.21.2 k8s-node01 Ready <none> 15d v1.21.2 k8s-node02 Ready <none> 15d v1.21.2 k8s-node03 Ready <none> 15d v1.21.2 root@k8s-master01:~ Error from server (Forbidden): nodes is forbidden: User "masuri" cannot list resource "nodes" in API group "" at the cluster scope