需求描述:在一台机器上通过kubectl管理多个Kubernetes集群。
操作过程:将各集群的kubectl config文件中的证书内容转换,通过命令创建config文件;通过上下文切换使用不同集群。
将不同环境下config文件中的certificate-authority-data、client-certificate-data、client-key-data三个字段的内容分别创建为pem文件
echo 'certificate-authority-data content' | base64 -d > ca.pem
echo 'client-certificate-data content' | base64 -d > client.pem
echo 'client-key-data content' | base64 -d > client-key.pem
在管理机器上创建集群管理上下文配置;
注意:如果上下文配置中已经存在同名的集群、用户、上下文,均会被覆盖。
# 创建集群配置;该集群名称为test
kubectl config set-cluster test --certificate-authority=/root/test/ca.pem --embed-certs=true --server=https://192.168.1.123:6443
# 创建用户配置;该用户名为test-admin
kubectl config set-credentials test-admin --client-certificate=/root/test/client.pem --embed-certs=true --client-key=/root/test/client-key.pem
# 创建上下文配置;该配置名为test
kubectl config set-context test --cluster=test --user=test-admin
# 设置test上下文为当前使用
# 当有多个上下文配置时,通过此命令切换来管理不同集群
kubectl config use-context test
以上操作则完成了一个集群配置的创建,如果需要管理多个集群,创建多个集群、用户、上下文即可。注意各名称不要相同。
其它常用操作
# 查看当前使用的上下文
kubectl config current-context
# 查看当前已设置的上下文
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
ali-prod ali-prod ali-prod-admin
* test test test-admin
# 查看详细信息
kubectl config view