k8s权限/证书:工作节点权限收缩

背景:

kubectl使用congig文件来访问集群。

目前,工作节点直接拷贝kubeadm在master生成的admin,conf文件。该文件使工作节点的kubectl具有最高权限。

目的:

单独为工作节点的kubectl设置权限适当的config文件。

方案概述:

目前,平台预设了以下四种权限。我们为工作节点的kubectl绑定“开发人员权限”。master节点的kubectl保持“管理员权限”。

 

目前,手动操作的流程如下:

第一部分:为工作节点的kubectl,生成config文件

操作地点:master节点(需要使用的CA证书,只存在于master节点)

1.使用集群CA,为节点签证书

工作目录:/etc/kubernetes

// 生成服务器的私钥(长度为2048)

openssl genrsa -out worker.key 2048

// 使用私钥,生成证书请求文件

openssl req -new -key worker.key -subj "/CN=worker" -out worker.csr

// 生成证书

openssl x509 -req -in worker.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -days 36500 -out worker.crt

2.生成config文件

1)在/etc/kubernetes创建config-worker文件

内容如下:

apiVersion: v1

kind: Config

preferences: {}

2)设置集群地址和CA证书

kubectl config --kubeconfig=config-worker set-cluster cls-54g954mb --server=https://kube-chongqing.cls-54g954mb.io:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs
3)设置worker用户

kubectl config --kubeconfig=config-worker set-credentials worker --client-key=/etc/kubernetes/worker.key --client-certificate=/etc/kubernetes/worker.crt --embed-certs
4)设置上下文

kubectl config --kubeconfig=config-worker set-context worker@cls-54g954mb --cluster cls-54g954mb --user worker

5)设置当前上下文

kubectl config --kubeconfig=config-worker use-context worker@cls-54g954mb

3.检查clusterRole[dev]

检查是否存在dev

kubectl get clusterrole dev -o yaml

4.绑定角色[dev]

 

5.检查config文件

检查是否符合预期。

命令

预期结果

kubectl get pod -A --kubeconfig='config-worker'Y
kubectl get node --kubeconfig='config-worker'Y
kubectl delete pod <pod名字> --kubeconfig='config-worker'Y
kubectl get csidrivers --kubeconfig='config-worker'N
kubectl get clusterroles --kubeconfig='config-worker'N
kubectl get clusterrolebindings --kubeconfig='config-worker'N
kubectl delete node 10.0.2.21 --kubeconfig='config-worker'N

第二部分:拷贝config文件至工作节点

地址:~/.kube

修改文件名为config

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.22.17: output: Error response from daemon: Ge t "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.22.17: output: Error response from d aemon: Get "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.22.17: output: Error response from daemon: Ge t "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.22.17: output: Error response from daemon: Get "h ttps://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.5: output: Error response from daemon: Get "https://k8s .gcr.io/v2/": context deadline exceeded, error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.5.0-0: output: Error response from daemon: Get "https:// k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns/coredns:v1.8.4: output: Error response from daemon: Get "https://k8s.gcr.io/v2/": context deadline exceeded, error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher
07-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值