kubernetes switch context
2021-02-15 tech kubernetes 6 mins 2 图 2180 字
我经常需要在多个 k8s 集群之间切换,可以使用配置文件来配置对多个集群的访问。有一点需要注意的是,kubectl 与集群的版本要一致,否则可能某些api的有变更导致结果与我们预期的不一致。
这篇文章记录切换不同集群的步骤。
kubectl config view
kubectl config get-contexts # 显示上下文列表
kubectl config current-context # 展示当前所处的上下文
kubectl config use-context my-cluster-name # 设置默认的上下文为 my-cluster-name
默认访问说明
可以打开 ~/.kube/config
文件,默认是本集群的访问信息,文件结构默认如下:
apiVersion: v1
clusters:
- cluster:
certificate-authority: 某ca-file路径 # 也有可能是base64过后的信息, certificate-authority-data:
server: https://1.2.3.4:6443
name: cluster1
contexts:
- context:
cluster: cluster1
user: admin
name: context-cluster1-admin
current-context: ""
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate: 某cert-file路径 # 也有可能是base64过后的信息, client-certificate-data:
client-key: 某key-file路径 # 也有可能是base64过后的信息, client-key-data:
- name: experimenter
user:
password: some-password
username: exp
添加集群访问的相关信息
了解配置文件之后,就可以添加相关信息了。只要修改对应的配置name,不与当前配置冲突即可。
以下是我的例子。
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: xxx
server: https://10.181.1.131:6443
name: cluster1
- cluster:
certificate-authority: /vagrant/n1.ca
server: https://10.181.2.131:6443
name: n1
- cluster:
certificate-authority-data: xxx
server: https://10.181.3.131:6443
name: n2
contexts:
- context:
cluster: cluster1
user: admin
name: context-cluster1-admin
- context:
cluster: n2
user: admin-n2
name: n2
- context:
cluster: n1
user: kubernetes-admin
name: n1
current-context: context-cluster1-admin
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate-data: xxx
client-key-data: xxx
- name: admin-n2
user:
client-certificate-data: xxx
client-key-data: xxx
- name: kubernetes-admin
user:
client-certificate: /vagrant/n1.crt
client-key: /vagrant/n1.key
然后就可以查看上下文信息了。
使用以下命令行切换即可:
kubectl config use-context n1
kubectl config use-context n2
其它
记录一个 base64反解析为文件的用法:
将1,2,3的 value部分
反向base64还原,分别按顺序保存为 k8s-cluster.ca
k8s.crt
k8s.key
,三个文件,反向base64的命令如下:
echo '${替换内容}' | base64 -d