【系统环境】
k8s-1.30集群(1个控制节点2个工作节点)
【系统需求】
单位来了一个新同事张宝,允许他操作k8s集群,但只能在自己的命名空间下操作,防范误操作带来的危险
【操作步骤】
1、创建用户及主目录 :
# 创建新的用户 zhangb 并设置主目录(详见图1)
useradd zhangb
mkdir -p /home/zhangb/.kube
chown -R zhangb:zhangb /home/zhangb

2、生成证书文件:
# 进入 Kubernetes 证书存储路径(详见图2)
cd /etc/kubernetes/pki/

# 生成 RSA 私钥并创建 CSR(详见图3)
(umask 077; openssl genrsa -out zhangb.key 2048)
openssl req -new -key zhangb.key -out zhangb.csr -subj "/CN=zhangb"

# 使用 CA 签发用户证书(详见图4)
openssl x509 -req -in zhangb.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out zhangb.crt -days 36500

3、创建命名空间与配置信息:
# 创建命名空间(详见图5)
kubectl create ns zhangb

# 设置集群配置信息(详见图6)
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true --server=https://192.168.40.186:6443 --kubeconfig=/root/zhangb.config

# 设置用户凭证(详见图7)
kubectl config set-credentials zhangb --client-certificate=/etc/kubernetes/pki/zhangb.crt --client-key=/etc/kubernetes/pki/zhangb.key --embed-certs=true --kubeconfig=/root/zhangb.config

# 设置默认上下文和使用配置文件(详见图8)
kubectl config set-context default --cluster=kubernetes --user=zhangb --namespace=zhangb --kubeconfig=/root/zhangb.config
kubectl config use-context default --kubeconfig=/root/zhangb.config

4、角色绑定设置 :
# 创建角色绑定,允许用户访问指定命名空间的资源(详见图9)
kubectl create clusterrolebinding zhangb-binding --clusterrole=edit --user=zhangb

5、复制并更新环境变量
# 复制配置文件到用户的 .kube 目录并更新环境变量(详见图10)
cp /root/zhangb.config /home/zhangb/.kube/config
echo 'export KUBECONFIG=/home/zhangb/.kube/config' >> /home/zhangb/.bashrc
chown -R zhangb:zhangb /home/zhangb/.kube

6、通过ctr导入镜像
# 通过ctr导入镜像(详见图11)
上传nginx.tar.gz至服务器
ctr --n=k8s.io images import nginx.tar.gz

7、验证和测试 :
# 验证配置文件的完整性(详见图12)
kubectl config view --minify --output=json | jq .

# 登录并验证权限(详见图13)
su - zhangb
kubectl run test-pod --image=nginx:latest
kubectl get pods
