k8s-通过kubectl管理多套kubernetes集群
CommentContents
前言
kubectl config
支持通过配置文件管理多个集群, 将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用 kubectl config use-context 命令快速地在集群之间进行切换。
如何使用配置文件来配置对多个集群的访问,要怎么配置呢?我们用一个案例来详细看看。
常用命令:
命令 | 作用 |
---|---|
kubectl config get-contexts |
获取当前客户端支持的上下文配置 |
kubectl config use-context <要切换的目标上下文> |
切换客户端当前设置的上下文 |
案例
假设我们现在有测试和生产两个k8s集群:
- test:开发测试使用的环境
- prod:生产正式使用的环境
效果:通过kubectl配置两套集群的上下文,然后可以通过切换上下文,去连接不同的集群。如:切换到prod后,后续所有kubectl命令发送到prod集群,切换到test,则发送到test集群。
如何配置多集群访问
1,在 $HOME/.kube
目录下创建多个环境的配置文件,如:config-test
、config-prod
,然后将集群对应的连接信息,配置到对应的config文件中
1 | 注:不知道怎么找到 $HOME/.kube 目录? 或许你可以直接在命令终端执行:open $HOME/.kube |
2,修改对应环境的config文件,统一集群、上下文、当前上下、用户名称,以方便后面管理
- 修改
config-test
连接信息,将名称统一为:k8s-test
,如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19apiVersion: v1
clusters:
- cluster:
server: https://47.103.114.16:6443
certificate-authority-data: xxxxx省略xxxx
name: k8s-test # 修改的内容
contexts:
- context:
cluster: k8s-test # 修改的内容
user: k8s-test # 修改的内容
name: k8s-test # 修改的内容
current-context: k8s-test # 修改的内容
kind: Config
preferences: {}
users:
- name: k8s-test # 修改的内容
user:
client-certificate-data: xxxxx省略xxxx
client-key-data: LS0 - 修改
config-prod
连接信息,将名称统一为:k8s-prod
,如:
1 | apiVersion: v1 |
3,执行命令将config-prod
和config-test
的配置合并到$HOME/.kube/config
中
1 | KUBECONFIG=config-prod:config-test kubectl config view --flatten > $HOME/.kube/config |
执行完成后,可以通过cat $HOME/.kube/config
查看,此时应该已经合并完成了。
4,获取当前客户端支持的上下文配置
1 | kubectl config get-contexts |
输出:
1 | CURRENT NAME CLUSTER AUTHINFO NAMESPACE |
注:CURRENT下,带*
的就是当前使用的上下文,比如现在,就表示目前连接的是k8s-test环境
5,切换客户端当前设置的上下文,比如我们切换到k8s-prod环境
1 | kubectl config use-context k8s-prod |
输出:
1 | Switched to context "k8s-prod". |
官方文档:配置多集群访问
- 本文作者:沙果栗子本文链接:https://32e.co/2021/05/02/k8s-kubectl-manage-multiple-clusters/版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!