使用kubectl cp复制本地文件到Hadoop Pod报目录不存在如何解决
问题场景
使用kubectl将本地文件复制到HADOOP Pod时,执行命令:
kubectl cp /data/titles.csv -c namenode hdfs-namnode-0:/newfile/titles.csv
执行后固定返回报错:
tar: /newfile: Cannot open : No such file or directory
已确认Pod内/newfile目录真实存在,凭证如下:
根因分析
kubectl cp参数顺序不符合语法规则:
该命令要求所有选项参数(如指定容器的-c参数)必须放在源路径、目标路径两个位置参数之前,禁止插在两个路径参数之间。上述写法将-c namenode放在本地源路径和远程目标路径中间,kubectl无法正确识别指定容器、解析目标路径,后台调用tar执行复制操作时自然找不到对应路径。
额外排查项:命令中填写的Pod名为hdfs-namnode-0,对比容器名namenode少了字母e,存在拼写错误,同样会引发路径识别失败。
修复步骤
- 调整参数顺序,将
-c选项移至路径参数最前,同时核对修正Pod名拼写,执行命令:
kubectl cp -c namenode /data/titles.csv hdfs-namenode-0:/newfile/titles.csv
- 若调整命令后仍报错,进入对应容器检查
/newfile目录的写入权限,确认操作用户具备该目录的写入权限:
kubectl exec -it hdfs-namenode-0 -c namenode -- ls -ld /newfile
权限不足时先调整目录权限,再重新执行复制操作即可。
内容的提问来源于stack exchange,提问作者Monica
相关产品推荐
相关产品推荐

