k8s权限相关问题

173 阅读1分钟

从node节点拷贝文件到pod时,提示权限不足。

命令如下:

kubectl -n namespace cp nodePath/filename podname:podPath/filename

提示报错信息如下:

pods "podname" is forbidden: User "system:node:nodename" cannot create resource "pods/exec" in API group "" in the namespace "namespace"

这是因为当前节点不是master节点,而是通过配置文件,让当前节点拥有了执行kubectl权限,自己在配置的时候不彻底,导致这种情况发生。

解决方案

1.将主节点中的/apps/conf/kubernetes/admin.conf(目录名可能不相同,需要将/apps/conf换成自己的目录名))文件拷贝到/apps/conf/kubernetes/目录下,如果无法拷贝文件,可以直接复制文件内容。

2.配置环境变量

echo "export KUBECONFIG=/apps/conf/kubernetes/admin.conf" >> ~/.bash_profile

3.立即生效 source ~/.bash_profile1

从pod复制文件到宿主机

1 首先进入pod 使用pwd查看当前容器所在的目录 比如/hbase

2 将pod中的文件file.txt放到该目录下,例如 /hbase/file.txt

3 使用kubectl的命令

kubectl cp namespace/pod-name:file.txt /主机路径/file.txt

有两点需要注意的:

1、命令中pod的目录要用相对目录

2、目标主机路径后面需要加上文件名