[英]Docker Can't find kubernetes Config File
我正在尝试容器化一个 python 应用程序,我在其中使用了 Kubernetes 包。 我的 Dockerfile 是:
FROM python:3.10.6
ADD App_pod.py .
ADD config.yml ~/.kube/config
RUN pip3 install requests beautifulsoup4
RUN pip3 install kubernetes
RUN apt-get install -y ca-certificates curl
CMD ["python3","./App_pod.py"]
当我输入 docker run -i -t run 时,它显示以下错误:
> Traceback (most recent call last):
> File "//./App_pod.py", line 9, in <module>
> config.load_kube_config()
> File "/usr/local/lib/python3.10/site-packages/kubernetes/config/kube_config.py", line 813, in load_kube_config
> loader = _get_kube_config_loader(
> File "/usr/local/lib/python3.10/site-packages/kubernetes/config/kube_config.py", line 770, in _get_kube_config_loader
> raise ConfigException(
> kubernetes.config.config_exception.ConfigException: Invalid kube-config file. No configuration found.
我试图从 raise exeption 中更改出现的错误,但它仍然向我显示相同的错误,所以我想它可能没有检测到我所做的更改。
我使用 ADD 命令将配置文件复制到特定路径,但它仍然显示相同的错误。 我还尝试挂载该卷,但由于还没有容器,因此无法挂载,因为它首先需要创建 conf 文件。 有没有人遇到这个问题并且知道如何解决?
几个问题:
~
在 Linux 上有特殊含义; 它是用户主目录的快捷方式。 我认为~
不适用于 Dockerfile ADD
(或COPY
)命令的目标路径。 您应该改用特定路径config.yml
是源,但config
是可能有问题的目标。 您没有包含完整的 Dockerfile,因此不清楚您的FROM
映像是什么,并且您没有包含App_pod.py
文件的源代码,因此不清楚它在哪里寻找 kubeconfig 文件,但是......
run
容器时将文件挂载到容器中假设您更改代码以接受工作目录中config.yml
的命令行参数,例如:
python3 App_pod.py ~/.kube/config
然后,当您运行容器时,您需要将config.yml
挂载到容器中并引用它。 在下文中,我使用不同的源文件夹和目标文件夹来说明这一点:
docker run \
--interactive --tty --rm \
--volume=~/.kube/config:/somewhere/.kube/config \
your-container /somewhere/.kube/config
您可以在--volume
标志中使用~
因为~
在您的 (Linux) 主机上有意义。 该文件映射到容器中的/somewhere/.kube/config
,因此您的 Python 文件在调用它时需要指向容器位置 (.)。
此外,为了您可以使用命令行参数,我鼓励您使用ENTRYPOINT
而不是CMD
来运行您的 Python 程序:
...
ENTRYPOINT ["python3","./App_pod.py"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.