2.5 配置多集群的访问和切换
通过前面的实践,我们已经分别创建了local-minikube、idc-kubeadm、idc-rancher和aliyun-k8s几个不同的Kubernetes容器集群,本节将展示如何使用它们的kubeconfig文件配置对多个集群进行访问和上下文切换。
在本示例中,我们将把上述每个Kubernetes集群的集群信息、用户信息和上下文信息合并到同一个配置文件中,其中local-minikube、idc-kubeadm、idc-rancher的集群API Server使用内网连接端点,aliyun-k8s使用公网连接端点,idc-rancher集群则通过token的方式访问API Server,其他集群都通过证书进行认证。
配置访问local-minikube,通过以下步骤分别配置集群信息、用户信息和上下文信息到/tmp/kubeconfig_all文件中。minikube_ca.crt、minikube_client.crt、minikube_client.key的内容可以从local-minikube集群节点的~/.kube/config中获取。
为集群local-minikube配置集群信息并保存到/tmp/kubeconfig.all文件中。
$ kubectl config set-cluster local-minikube --certificate-authority=minikube_ca.crt --embed-certs=true --server=https://192.168.0.44:8443 --kubeconfig=/tmp/kubeconfig_all
为集群local-minikube配置证书信息并保存到/tmp/kubeconfig.all文件中。
$ kubectl config set-credentials local-minikube --client-certificate=minikube_client.crt --embed-certs=true --client-key=minikube_client.key --kubeconfig= /tmp/kubeconfig_all
为集群local-minikube配置上下文信息并保存到/tmp/kubeconfig.all文件中。
$ kubectl config set-context local-minikube --cluster=local-minikube --user=local-minikube --kubeconfig=/tmp/kubeconfig_all
查看当前kubeconfig文件/tmp/kubeconfig_all中定义的集群上下文,如下所示。
$ kubectl config get-contexts --kubeconfig=/tmp/kubeconfig_all CURRENT NAME CLUSTER AUTHINFO NAMESPACE local-minikube local-minikube local-minikube
切换当前上下文为local-minikube集群,如下所示。
$ kubectl config use-context local-minikube --kubeconfig=/tmp/kubeconfig_all
查看集群local-minikube的运行状态,如下所示。
$ kubectl cluster-info --kubeconfig=/tmp/kubeconfig_all Kubernetes control plane is running at https://192.168.0.44:8443 KubeDNS is running at https://192.168.0.44:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
以同样的方式,将idc-kubeadm和aliyun-k8s集群的证书认证方式配置到/tmp/kubeconfig_all中。
分别配置idc-kubeadm的集群信息、用户信息和上下文信息并保存在/tmp/kubeconfig.all文件中,命令如下所示。
$ kubectl config set-cluster idc-kubeadm --certificate-authority=idc-kubeadm_ca.crt --embed-certs=true --server=https://192.168.0.45:6443--kubeconfig=/tmp/kubeconfig_all $ kubectl config set-credentials idc-kubeadm --client-certificate=idc-kubeadm_client.crt --embed-certs=true --client-key=idc-kubeadm_client.key--kubeconfig=/tmp/kubeconfig_all $ kubectl config set-context idc-kubeadm --cluster=idc-kubeadm --user=idc-kubeadm --kubeconfig=/tmp/kubeconfig_all
切换上下文为idc-kubeadm并检查集群的运行状态,验证配置是否正常,命令如下所示。
$ kubectl config use-context idc-kubeadm --kubeconfig=/tmp/kubeconfig_all $ kubectl cluster-info --kubeconfig=/tmp/kubeconfig_all Kubernetes control plane is running at https://192.168.0.45:6443 KubeDNS is running at https://192.168.0.45:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
继续配置aliyun-k8s的集群信息、用户信息和上下文信息并保存在/tmp/kubeconfig.all文件中,命令如下所示。
$ kubectl config set-cluster aliyun-k8s --certificate-authority=aliyun-k8s_ca.crt --embed-certs=true --server=https://39.106.178.250:6443 --kubeconfig=/tmp/kubeconfig_all $ kubectl config set-credentials aliyun-k8s --client-certificate=aliyun-k8s_client.crt --embed-certs=true --client-key=aliyun-k8s_client.key --kubeconfig=/tmp/kubeconfig_all $ kubectl config set-context aliyun-k8s --cluster=aliyun-k8s --user=aliyun-k8s--kubeconfig=/tmp/kubeconfig_all
切换上下文为aliyun-k8s并检查集群的运行状态,验证配置信息是否正常,命令如下所示。
$ kubectl config use-context aliyun-k8s --kubeconfig=/tmp/kubeconfig_all $ kubectl cluster-info --kubeconfig=/tmp/kubeconfig_all Kubernetes control plane is running at https://39.106.178.250:6443 metrics-server is running at https://39.106.178.250:6443/api/v1/namespaces/kube-system/services/heapster/proxy KubeDNS is running at https://39.106.178.250:6443/api/v1/namespaces/kube- system/services/kube-dns:dns/proxy
配置idc-rancher的集群信息、用户信息和上下文信息时,需要配置用户使用token方式访问集群,命令如下。
$ kubectl config set-cluster idc-rancher --certificate-authority=idc-rancher_ca.crt --embed-certs=true --server=https://192.168.0.48:6443 --kubeconfig=/tmp/kubeconfig_all $ kubectl config set-credentials idc-rancher --token=kubeconfig-user-8hq7r.c-l j287:hcj4zsvpng4kqdtqscv9v9jkdgwqmg97s58dlj47plmddf5f2wpdmw --kubeconfig=/tmp/kubeconfig_all $ kubectl config set-context idc-rancher --cluster=idc-rancher --user=idc-rancher --kubeconfig=/tmp/kubeconfig_all
切换上下文为idc-rancher并检查集群的运行状态,验证配置是否正常,命令如下所示。
$ kubectl config use-context idc-rancher --kubeconfig=/tmp/kubeconfig_all $ kubectl cluster-info --kubeconfig=/tmp/kubeconfig_all Kubernetes control plane is running at https://192.168.0.48:6443 CoreDNS is running at https://192.168.0.48:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
设置KUBECONFIG环境变量,默认使用/tmp/kubeconfig_all或将/tmp/kubeconfig_all复制为~/.kube/config,命令如下。
$ export KUBECONFIG=/tmp/kubeconfig_all
或使用如下命令。
$ cp -i /tmp/kubeconfig_all ~/.kube/config
再次运行以下命令,查看当前已经配置了的集群上下文列表。
$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE aliyun-k8s aliyun-k8s aliyun-k8s idc-kubeadm idc-kubeadm idc-kubeadm * idc-rancher idc-rancher idc-rancher local-minikube local-minikube local-minikube