web-dev-qa-db-ja.com

kubernetesに接続できませんpython api-.kube / configファイルが見つかりません

APIの例 ここ に従っているのに、kubernetes python clientに接続できません。

基本的に、この回線はkubernetesクライアントに接続できません。

config.load_kube_config()

私がしていること:

イメージを構築しているこのような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" ]

これは私のrequirements.txtです:

Flask==1.0.2
gunicorn==19.8.1
kubernetes==6.0.0
requests # Apache-2.0

Dockerfileをビルドすると、次のように出力されます。

    Successfully built a2590bae9fd9
    Successfully tagged testapp:latest

しかし、私がするとき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'

pythonディレクトリだったのではないかと思いましたが、/ usr/local/bin/pythonで実行されていることを確認しました。

私は本当に困惑しています-何か提案/ヒントはありますか?ありがとうございました。

7
helloworld

config.load_kube_config()は必要ありません、必要です config.load_incluster_config()

セットアップとPodで実行されているときを区別する必要がある場合、1つのメカニズムはif os.getenv('KUBERNETES_SERVICE_Host'): config.load_incluster_config()です。これは、Podにいる間、確実に環境内にあるためです。そして、あなたのローカル環境にある可能性は低いです。

11
mdaniel