python FileNotFoundError:[Errno 2]具有绝对路径和文件

时间:2018-07-08 22:17:16

标签: python python-3.x kubernetes minikube

我正在将Python脚本作为Kubernetes作业运行。但是我有下一个问题。我已经尝试过使用chmod -R 777 /home/vagrant/,但是它不能使脚本成功运行。

Traceback (most recent call last):
  File "app.py", line 39, in <module>
    main()
  File "app.py", line 28, in main
    config.load_kube_config(config_file=kubeconfig)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/config/kube_config.py", line 470, in load_kube_config
    config_persister=config_persister)
  File "/usr/local/lib/python3.6/site-packages/kubernetes/config/kube_config.py", line 427, in _get_kube_config_loader_for_yaml_file
    with open(filename) as f:
FileNotFoundError: [Errno 2] No such file or directory: '/home/vagrant/.kube/config'

如您所见,脚本可能失败,因为该文件不存在,但是当我执行ls时,文件表明该文件确实存在。

vagrant@vagrant:/vagrant/podsLister$ kubectl delete job pod-lister
job.batch "pod-lister" deleted
vagrant@vagrant:/vagrant/podsLister$ ls /home/vagrant/.kube/
cache  config  http-cache

1 个答案:

答案 0 :(得分:1)

问题是该脚本在Docker容器中运行。该容器具有自己的文件系统,而不是托管它的任何计算机的文件系统。也就是说,实际上,大多数容器的 point :它们的作用就像一台隔离的独立计算机,而无需使用 actual 独立计算机。

该解决方案不太明显,因为尚不清楚您为何希望此方法起作用,或者您打算做什么。可能有意义的事情包括:

  • 更改docker构建脚本以将文件复制到容器中。
  • 设置主机文件共享,以便容器可以使用真实计算机文件系统的一部分,然后将其装入容器。
  • 设置“普通”文件共享,以便网络上的任何人都可以使用真实计算机文件系统的一部分,然后将其安装在容器上。
  • 使用Kubernetes ConfigMaps等高级功能将文件公开给容器。