0
点赞
收藏
分享

微信扫一扫

k8s学习-配置客户机访问kubernetes集群资源

需求

我们需要一台单独的机器访问kubernetes资源,这样的好处就是避免直接通过 root身份登录kubernetes的master节点访问,提高了安全性,同时可以避免直接操作而带来的风险。

客户机访问如下:

k8s学习-配置客户机访问kubernetes集群资源_yum源

要求:

  • 客户机访问任意的master节点就可以操作k8s集群
  • 客户机的登录账号不能是root
  • 客户机只有查看k8s资源的权限,不能修改,删除资源,即list,watch,get
  • 客户机可以查看任意namespace

环境准备

环境准备如下。客户机centos7操作系统,helm3

配置客户机

创建用户user

指定用户user, 用户组user,家目录/home/user/

#客户机上root权限下执行
groupadd user #增加user用户组
useradd -d /home/user/ user -g user #增加user用户,用户组为user,家目录为/home/user/
passwd user #设定user的密码
gpasswd -a user wheel #增加user用户的sudo权限
id user #查看登录用户信息
#配置user用户可以ssh登录
echo "AllowUsers user" >> /etc/ssh/sshd_config
systemctl restart sshd

k8s学习-配置客户机访问kubernetes集群资源_创建用户_02

k8s学习-配置客户机访问kubernetes集群资源_创建用户_03

配置kubeconfig

需要在k8s集群中,配置一个用户user,生成kubeconfig文件。

生成kubeconfig

#master节点上执行
mkdir ~/kubeconfig_user && cd ~/kubeconfig_user
openssl genrsa -out user.key 2048 #新生成密钥
openssl req -new -key user.key -out user.csr -subj "/CN=user" #配置csr文件,CN的名字最好和user一致
openssl x509 -req -days 3650 -in user.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out user.crt #签发证书,有效期一年
#以下是生成kubeconfig
#cluster.local是集群名字,通过可kubectl config view查看
#server 是任意一个master节点地址

kubectl config set-cluster cluster.local --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true \
--server=https://192.168.85.4:6443 --kubeconfig=config-user
kubectl config set-credentials user --client-certificate=user.crt --client-key=user.key --embed-certs=true --kubeconfig=config-user
kubectl config set-context default --cluster=cluster.local --user=user --kubeconfig=config-user
kubectl config use-context default --kubeconfig=config-user
chmod 644 config-user

配置user用户的rbac信息

以下为rbac文件

#vim user-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: user
rules:
- apiGroups:
- '*'
resources: #设定的资源
- '*'
verbs: #设定的权限
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: user
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: user

配置完成后,应用资源,检查rbac

k8s学习-配置客户机访问kubernetes集群资源_yum源_04

测试

配置kubectl

客户机上配置

#配置kubectl的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#安装kubectl
yum install -y kubectl
#验证安装
kubeclt version

k8s学习-配置客户机访问kubernetes集群资源_创建用户_05

在master节点上,查看之前生成的kubeconfig文件

cat config-user

k8s学习-配置客户机访问kubernetes集群资源_用户组_06

使用客户机,登录user账户家目录

#使用user身份编辑
mkdir ~/.kube
vi ~/.kube/config

将前面生成的kubeconfig文件复制进去保存

使用user身份登录客户机进去后,查看配置信息

kubectl config view

k8s学习-配置客户机访问kubernetes集群资源_用户组_07

尝试删除pod,失败,确认权限配置生效

k8s学习-配置客户机访问kubernetes集群资源_yum源_08


举报

相关推荐

0 条评论