Kubernetes安装系列之kubctl exec权限设定

RBAC对于权限的控制更加方便,同时入门使用时需要了解的内容也进一步增多。这篇文章memo一下kubectl exec设定权限的方法。

环境准备

[root@host131 ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
27833a3ba0a5: Pull complete 
e83729dd399a: Pull complete 
ebc6a67df66d: Pull complete 
Digest: sha256:c8a861b8a1eeef6d48955a6c6d5dff8e2580f13ff4d0f549e082e7c82a8617a2
Status: Downloaded newer image for nginx:latest
[root@host131 ~]#

使用此下载的nginx镜像创建一个pod

[root@host131 ~]# kubectl get pods
No resources found.
[root@host131 ~]# kubectl run --generator=run-pod/v1 nginx-test --image=nginx
pod/nginx-test created
[root@host131 ~]# kubectl get pods
NAME         READY   STATUS              RESTARTS   AGE
nginx-test   0/1     ContainerCreating   0          3s
[root@host131 ~]# kubectl get pods
NAME         READY   STATUS    RESTARTS   AGE
nginx-test   1/1     Running   0          5s
[root@host131 ~]#

现象

[root@host131 ~]# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
nginx-test-76bc85c85-skl5t   1/1     Running   0          149m
[root@host131 ~]#

启动的上述的pod,当希望使用kubectl exec进入到其中的时候提示了Forbidden信息:

[root@host131 ~]# kubectl exec -it nginx-test sh
error: unable to upgrade connection: Forbidden (user=kubernetes, verb=create, resource=nodes, subresource=proxy)
[root@host131 ~]# 

原因

使用kubectl exec命令时,由于会转到kubelet,需要对apiserver调用kubelet API的授权。

对应方法

使用kubectl create clusterrolebinding进行设定即可,使用示例如下:

[root@host131 ~]# kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes
clusterrolebinding.rbac.authorization.k8s.io/kube-apiserver:kubelet-apis created
[root@host131 ~]# 

设定完毕之后再次执行则会发现已经可以正常进入pod之中了

[root@host131 ~]# kubectl exec -it nginx-test sh
# hostname
nginx-test
# 

其他问题

node的csr需要手动approve,提示信息如下所示

[root@host131 ~]# kubectl exec -it nginx-test sh
Error from server: error dialing backend: remote error: tls: internal error
[root@host131 ~]# 

对应方法示例如下:

[root@host131 shell]# kubectl get csr
NAME                                                   AGE     REQUESTOR                     CONDITION
csr-pjv59                                              9m25s   system:node:192.168.163.131   Pending
node-csr-_n7VaWDb8ivj0Fk5oISj1Vqm5jVrISEFGTUs837vOqM   15m     kubelet-bootstrap             Approved,Issued
[root@host131 shell]# kubectl certificate approve csr-pjv59 
certificatesigningrequest.certificates.k8s.io/csr-pjv59 approved
[root@host131 shell]#
淼叔 CSDN认证博客专家 神经网络 TensorFlow NLP
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页