集群的访问官方文档使用 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
三、创建存放访问文件
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
2、查看信息
cat kubeconfig
五、用户详细信息添加到配置文件中
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、查看信息
六、将上下文详细信息添加到配置文件中:
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
3、这个dengm用户只能在default空间下工作。
七、模拟开发人员dengm登录
1、创建用户
useradd dengm && echo root |passwd --stdin dengm
2、查看kubernetes主节点有个目录
ll ~/.kube/
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、修改复制过去的文件
文件应该是dengm权限,OK进行修改
chown -R dengm: /home/dengm/.kube/ && ll /home/dengm/.kube/
5、用户登录测试
- 登录
su - dengm
- 命令补全
echo "source <(kubectl completion bash)" >> ~/.bashrc
- 测试访问默认名称空间下的Pod
kubectl get pod
- 授权访问允许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
生成dengm权限的集群绑定,并且切换到dengm用户
kubectl apply -f dengm.yaml && su - dengm
再次访问:
kubectl config use-context dengm@kubernetes
k && kubectl get pod -A