kubectl连接k8s不同集群
参考:Configure Access to Multiple Clusters连接不同的k8s集群不用将本节点当作集群的从节点(that’s stupid),只需要将凭证信息放在KUBECONFIG环境变量的路径下即可。在不同的k8s集群间切换,使用context. context是一个{user,namespace,cluster}三个坐标确定的。即以哪个用户的身份连接哪个集群,默认使用哪个命
·
参考:Configure Access to Multiple Clusters
连接不同的k8s集群不用将本节点当作集群的从节点(that’s stupid),只需要将凭证信息放在KUBECONFIG
环境变量的路径下即可。
在不同的k8s集群间切换,使用context. context是一个{user,namespace,cluster}
三个坐标确定的。即以哪个用户的身份连接哪个集群,默认使用哪个命名空间。
一般每个用户的身份信息在/etc/kubernetes/admin.conf
中:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ...... # 很长
server: https://xxx.xxx.xxx.xxx:6443 # k8s master地址(其实是etcd的地址)
name: kubernetes
contexts:
- context:
# 默认命名使用空间default
cluster: kubernetes-1 # cluster
user: kubernetes-admin # user
name: kubernetes-1 # 这是context的名字
current-context: kubernetes-1
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: ....# 很长
client-key-data: .... # 很长
在客户端主机上比如你把这个文件放在/opt/kube/cluster1/admin.conf
就在/etc/profile
中添加KUBECONFIG
环境变量中添加刚才的路径
export KUBECONFIG=/opt/kube/cluster1/admin.conf:/opt/kube/cluster2/admin.conf
kubectl会去扫描这个环境变量中的所有文件,你可以使用查看刚才的配置有没有被扫描到:
kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://xxx.xxx.xxx.xxx:6443
name: kubernetes
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://xxx.xxx.xxx.xxx:6443
name: kubernetes-2
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-1
- context:
cluster: kubernetes-2
user: kubernetes-admin-2
name: kubernetes-2
current-context: kubernetes-1
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
- name: kubernetes-admin-2
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
切换连接的k8s集群
使用不同context就会切换到context的不同集群
$ kubectl config use-context kubernetes-1
Switched to context "kubernetes-1".
查看是否连接到指定集群:
$ kubectl get ns # 查看是否是目标集群的命名空间列表
查看当前的上下文
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* kubernetes-1 kubernetes kubernetes-admin # 当前连接的context
kubernetes-2 kubernetes-2 kubernetes-admin-2
或者使用:
$ kubectl config current-context
kubernetes-1
jenkins中KUBECONFIG为何不生效?
jenkins有自己的shell环境,在系统配置->全局变量中设置全局变量。
sh
命令会在执行时,将全部全局变量以shell环境变量的方式注入进去。
更多推荐
已为社区贡献7条内容
所有评论(0)