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で実行されていることを確認しました。
私は本当に困惑しています-何か提案/ヒントはありますか?ありがとうございました。
config.load_kube_config()
は必要ありません、必要です config.load_incluster_config()
セットアップとPod
で実行されているときを区別する必要がある場合、1つのメカニズムはif os.getenv('KUBERNETES_SERVICE_Host'): config.load_incluster_config()
です。これは、Pod
にいる間、確実に環境内にあるためです。そして、あなたのローカル環境にある可能性は低いです。