集群的访问官方文档使用 kubeconfig 文件组织集群访问

简介:
在将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用 kubectl config use-context命令快速地在集群之间进行切换

用于配置集群访问的文件有时被称为 kubeconfig 文件。
这是一种引用配置文件的通用方式,
并不意味着存在一个名为 kubeconfig 的文件。

准备开始前提:
1、Kubernets集群
2、kubectl 的版本应该与集群的 API 服务器使用同一次版本号(kubectl version --client)命令可查看信息
3、准备好证书

删除:

  • 删除用户,可以运行
kubectl --kubeconfig=config-demo config unset users.<name>
  • 删除集群,可以运行
kubectl --kubeconfig=config-demo config unset clusters.<name>
  • 删除上下文,可以运行
kubectl --kubeconfig=config-demo config unset contexts.<name>

一、创建证书

将证书统一存放在/etc/kubernetes/pki目录下

cd /etc/kubernetes/pki
(umask 077; openssl genrsa -out dengm.key 2048)
openssl req -new -key dengm.key -out dengm.csr -subj "/CN=dengm"    
openssl x509 -req -in dengm.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out dengm.crt -days 3650
openssl x509 -in dengm.crt -text -noout

#注解CN 填写集群访问的用户名

二、查看命令帮助

kubectl  config -h

kubesphere认证 kubectl 证书_运维


三、创建存放访问文件

mkdir -p /root/kubernetes/k8sconfig

设置 KUBECONFIG 环境变量

export KUBECONFIG_SAVED=192.168.11.128

192.168.11.128 k8smaster主机的ip地址

接下来我们创建集群、用户名和上下文到一个文件中

四、将群集详细信息添加到配置文件中

1、将集群信息创建到/root/kubernetes/k8sconfig目录下

kubectl config --kubeconfig=/root/kubernetes/k8sconfig/kubeconfig \
set-cluster dengm \
--server=https://$KUBECONFIG_SAVED:6443 \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--embed-certs=true

kubesphere认证 kubectl 证书_数据库_02

2、查看信息

cat kubeconfig

kubesphere认证 kubectl 证书_ruby_03

五、用户详细信息添加到配置文件中

1、将用户信息创建到/root/kubernetes/k8sconfig目录下

kubectl config --kubeconfig=/root/kubernetes/k8sconfig/kubeconfig \
set-credentials dengm \
--client-certificate=/etc/kubernetes/pki/dengm.crt \
--client-key=/etc/kubernetes/pki/dengm.key \
--embed-certs=true

2、查看信息

kubesphere认证 kubectl 证书_数据库_04

六、将上下文详细信息添加到配置文件中:

1、将上下文信息创建到/root/kubernetes/k8sconfig目录下

kubectl config --kubeconfig=/root/kubernetes/k8sconfig/kubeconfig \
set-context dengm@kubernetes \
--cluster=dengm \
--namespace=default \
--user=dengm
--cluster 集群名
--namespace 名称空间
--user 用户,上面创建的证书cn的用户

2、由于信息过多显示,可使用此命令查看

kubectl config --kubeconfig=/root/kubernetes/k8sconfig/kubeconfig view

kubesphere认证 kubectl 证书_数据库_05

3、这个dengm用户只能在default空间下工作。

七、模拟开发人员dengm登录

1、创建用户

useradd  dengm && echo root |passwd --stdin dengm

2、查看kubernetes主节点有个目录

ll  ~/.kube/

kubesphere认证 kubectl 证书_数据库_06

3、将/root/kubernetes/k8sconfig/kubeconfig复制一份到dengm用户.kube/下

mkdir -p  /home/dengm/.kube/ && cp  -r  /root/kubernetes/k8sconfig/kubeconfig  /home/dengm/.kube/ && mv /home/dengm/.kube/kubeconfig /home/dengm/.kube/config

4、修改复制过去的文件

kubesphere认证 kubectl 证书_ruby_07


文件应该是dengm权限,OK进行修改

chown  -R  dengm:   /home/dengm/.kube/ &&  ll /home/dengm/.kube/

kubesphere认证 kubectl 证书_ruby_08

5、用户登录测试

  • 登录
su - dengm
  • 命令补全
echo "source <(kubectl completion bash)" >> ~/.bashrc
  • 测试访问默认名称空间下的Pod
kubectl  get  pod

kubesphere认证 kubectl 证书_运维_09

  • 授权访问允许Pod(不建议除非运维管理员)

切换kubernetes-admin@kubernetes

exit && kubectl  config  use-context  kubernetes-admin@kubernetes

生成用户绑定用户集群权限yaml文件

kubectl  create  clusterrolebinding  dengm --clusterrole=cluster-admin --user=dengm --dry-run=client -o yaml  > dengm.yaml

kubesphere认证 kubectl 证书_配置文件_10


生成dengm权限的集群绑定,并且切换到dengm用户

kubectl  apply -f dengm.yaml && su  - dengm

再次访问:

kubectl  config  use-context  dengm@kubernetes
k && kubectl  get  pod  -A

kubesphere认证 kubectl 证书_运维_11