集群的访问官方文档
使用 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
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空间下工作。
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
kubectl get 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
kubectl apply -f dengm.yaml && su - dengm
再次访问:
kubectl config use-context dengm@kubernetes
k && kubectl get pod -A