总结:kubectl之kubeconfig配置

 一、介绍

我们一般使用kubectl去操作K8S集群,如部署Pod,获取node信息,获取pod信息,获取svc信息,删除某个svc等。

那我们就需要有个目标,具体是操作哪个K8S集群,操作权限等。

kubectl默认会从$HOME/.kube目录下查找文件名为 config 的文件,也能通过设置环境变量 KUBECONFIG 或者通过设置去指定其它 kubeconfig 文件。kubeconfig就是为访问集群所作的配置。

比如我们131服务器的配置文件:执行命令:cat ~/.kube/config

总结:kubectl之kubeconfig配置_第1张图片

这个配置文件怎么来的呢?其实很简单,去rancher上直接有:

总结:kubectl之kubeconfig配置_第2张图片

点击 Kubeconfig文件 按钮,得到如下信息:

总结:kubectl之kubeconfig配置_第3张图片

二、配置文件介绍

总结:kubectl之kubeconfig配置_第4张图片

三、生成配置文件

默认生成的kubeconfig 被保存到 ~/.kube/config 文件

# 配置kubernetes集群参数
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=https://172.17.213.60:6443

# 配置客户端认证参数
kubectl config set-credentials admin \
  --client-certificate=/etc/kubernetes/ssl/admin.pem \
  --embed-certs=true \
  --client-key=/etc/kubernetes/ssl/admin-key.pem

# 设置上下文参数 
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=admin

# 设置默认上下文
kubectl config use-context kubernetes

生成的 kubeconfig 被保存到 ~/.kube/config 文件;配置文件描述了集群、用户和上下文

集群参数
本段设置了所需要访问的集群的信息。使用set-cluster设置了需要访问的集群,如上为kubernetes,这只是个名称,实际为--server指向的apiserver;--certificate-authority设置了该集群的公钥;--embed-certs为true表示将--certificate-authority证书写入到kubeconfig中;--server则表示该集群的kube-apiserver地址

用户参数
本段主要设置用户的相关信息,主要是用户证书。如上的用户名为admin,证书为:/etc/kubernetes/ssl/admin.pem,私钥为:/etc/kubernetes/ssl/admin-key.pem。注意客户端的证书首先要经过集群CA的签署,否则不会被集群认可。此处使用的是ca认证方式,也可以使用token认证,如kubelet的 TLS Boostrap机制下的bootstrapping使用的就是token认证方式。上述kubectl使用的是ca认证,不需要token字段

上下文参数
集群参数和用户参数可以同时设置多对,在上下文参数中将集群参数和用户参数关联起来。上面的上下文名称为kubenetes,集群为kubenetes,用户为admin,表示使用admin的用户凭证来访问kubenetes集群的default命名空间,也可以增加--namspace来指定访问的命名空间。

最后使用kubectl config use-context kubernetes来使用名为kubenetes的环境项来作为配置。如果配置了多个环境项,可以通过切换不同的环境项名字来访问到不同的集群环境。

备注
使用kubeconfig还需要注意用户已经经过授权(如RBAC授权),上述例子中用户的证书中OU字段为system:masters,kube-apiserver 预定义的 RoleBinding cluster-admin 将 Group system:masters 与 Role cluster-admin 绑定,该 Role 授予了调用kube-apiserver 相关 API 的权限。

你可能感兴趣的:(K8S,kubernetes,kubelet)