无法连接到kubernetes python api - 找不到.kube/config文件

hel*_*rld 5 python flask docker kubernetes minikube

即使我在api中遵循这里的示例,我也无法连接到kubernetes python客户端.

基本上这行不能连接到kubernetes客户端:

config.load_kube_config()
Run Code Online (Sandbox Code Playgroud)

我在做什么:

我有一个这样的Dockerfile文件,我正在构建我的图像.这只是一个简单的python/flask应用程序.

FROM python:2

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY requirements.txt /usr/src/app/

RUN pip install --no-cache-dir -r requirements.txt

COPY . /usr/src/app

EXPOSE 5000

CMD [ "python", "./app.py" ]
Run Code Online (Sandbox Code Playgroud)

这是我的要求.txt:

Flask==1.0.2
gunicorn==19.8.1
kubernetes==6.0.0
requests # Apache-2.0
Run Code Online (Sandbox Code Playgroud)

构建Dockerfile后,它输出:

    Successfully built a2590bae9fd9
    Successfully tagged testapp:latest
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,docker run a2590bae9fd9我收到一个错误:

Traceback (most recent call last):
  File "./app.py", line 10, in <module>
    config.load_kube_config()
  File "/usr/local/lib/python2.7/site-     packages/kubernetes/config/kube_config.py", line 470, in load_kube_config
    config_persister=config_persister)
   File "/usr/local/lib/python2.7/site-   packages/kubernetes/config/kube_config.py", line 427, in     _get_kube_config_loader_for_yaml_file
    with open(filename) as f:
 IOError: [Errno 2] No such file or directory: '/root/.kube/config'
Run Code Online (Sandbox Code Playgroud)

我以为它可能是我的python目录,但我检查了它在/ usr/local/bin/python中运行.

我真的很难过 - 任何建议/提示?谢谢.

mda*_*iel 11

你不想要config.load_kube_config(),你想要的config.load_incluster_config()

如果你需要区分你的设置和它在a中运行的时间Pod,那么一种机制是if os.getenv('KUBERNETES_SERVICE_HOST'): config.load_incluster_config()因为肯定会在环境中处于a Pod,并且不太可能在你的本地环境中.

  • 我实际上已经在这个 config.load_incluster_config() 行上收到“kubernetes.config.config_exception.ConfigException:服务主机/端口未设置”错误。你对我能做些什么来解决它有什么建议吗? (2认同)