kubeconfg文件是kubectl的配置文件,其中的配置了kubectl将要连接的kubernetes集群的信息,包含集群的地址、认证信息,以及连接集群使用的用户和用户的认证信息,默认的namespace等。
1. 文件的位置
读取文件的位置通过KUBECONFIG环境变量设置:
1. 可以通过冒号配置多个,会选择找到的第一个文件读取。
2. 如果没有配置该环境变量,会使用~/.kube/config文件
2. 文件的内容
文件中包含了集群和用户的认证信息,一般不直接编辑这个文件,而是通过kubectl config命令修改配置。
3. kubeconfig对象
通过命令 kubectl config view 可以查看config的信息
operator@ubuntu2:~/.kube$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.1.9:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
namespace: default
user: kubernetes-admin
name: default
- context:
cluster: kubernetes
namespace: kube-system
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: default
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: DATA+OMITTED
client-key-data: DATA+OMITTED
config 主要包含以下几部分内容
1. clusters: 一个或多个集群的信息,每个集群有一个name, 同时还有集群server的地址、证书的数据(只显示概要,信息在文件里可以看到)
2.users:一个或多个用户的信息,每个用户也有一个name,以及认证需要的信息
3. contexs: 一个或多个context,每个context是一个集群、用户的组合,表示使用该用户连接该集群,同时还有一个namespace字段,表示默认访问的namespace,默认是default。
4. current-context:当前使用的context,配置了kubectl命令运行时,会用哪个用户连接到哪个集群,默认使用哪个namespace。
4. kubeconfig的操作
配置的操作基本上就是对cluster、user、context的操作。即对cluster、user、context的添加、修改、删除;以及设置当前使用的context。
下面以context为例,展示操作
1. 新建context
通过运行kubectl config set-context命令,指定各种参数即可。
1. 如果改name的context不存在,则新建,如果已存在,则修改。新建context,要指定cluster、user、namespace,修改时,只要指定修改的内容即可。
2. 如果修改当前正在使用的context,带上--current即可
operator@ubuntu2:~/.kube$ kubectl config set-context kube-system --cluster kubernetes --user kubernetes-admin --namespace kube-system
Context "kube-system" created.
1. 选择使用的context
使用kubectl config use-context
operator@ubuntu2:~/.kube$ kubectl config use-context kube-system
Switched to context "kube-system".
operator@ubuntu2:~/.kube$ kubectl get pod
NAME READY STATUS RESTARTS AGE
coredns-66f779496c-47t9c 1/1 Running 6 7d15h
coredns-66f779496c-9wskd 1/1 Running 6 7d15h
etcd-ubuntu2 1/1 Running 6 7d15h
kube-apiserver-ubuntu2 1/1 Running 7 7d15h
kube-controller-manager-ubuntu2 1/1 Running 9 (133m ago) 7d15h
kube-proxy-9q5tq 1/1 Running 6 7d15h
kube-scheduler-ubuntu2 1/1 Running 7 7d15h
metrics-server-794bb5d868-w8clm 1/1 Running 2 2d22h