一.$HOME/.kube/config文件内容详解
---
apiVersion: v1
clusters:
- cluster:
certificate-authority: fake-ca-file
server: https://1.2.3.4
name: development
- cluster:
insecure-skip-tls-verify: true
server: https://5.6.7.8
name: scratch
contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: ""
kind: Config
preferences: {}
users:
- name: developer
user:
client-certificate: fake-cert-file
client-key: fake-key-file
- name: experimenter
user:
password: some-password
username: exp
一份kubeconfig文件内容包含三部分:
- clusters: 集群名字,API Server地址,ca证书文件内容(通过base64进行加密)
- contexts: 描述使用哪个用户的凭证去访问哪个集群的namespace,它是工作状态的切换开关
- users: 具体用户名称以及用户的证书文件和私钥文件,文件内容使用base64加密
注意:证书文件key如果使用具体内容,则需要在当前key名称后面增加"-data",即原来的key为certificate-authority,修改为certificate-authority-data
二.对应具体命令行操作
添加kubernetes集群名称,以及集群对应的api server地址,证书文件:
kubectl config set-cluster development \
--server=https://1.2.3.4 \
--certificate-authority=fake-ca-file \
--embed-certs=true
添加上下文信息,使用哪个用户的凭证去访问哪个集群的namespace:
kubectl config set-context dev-frontend \
--cluster=development\
--user=developer \
--namespace=frontend
添加凭据,具体用户名称以及用户的证书文件和私钥文件
kubectl config set-credentials developer \
--client-certificate=fake-cert-file \
--client-key=fake-key-file \
--embed-certs=true
设置默认的上下文信息,即current-context,也可以不设置
kubectl config use-context dev-frontend
注意embed-certs=true即将crt/key文件写入到kubeconfig文件中去