[英]Unable to connect to kubernetes python api - .kube/config file not found
I'm having trouble connecting to the kubernetes python client even though I'm following the examples here in the api. 即使我在api中遵循这里的示例,我也无法连接到kubernetes python客户端。
Basically this line can't connect to the kubernetes client: 基本上这行不能连接到kubernetes客户端:
config.load_kube_config()
What I'm doing: 我在做什么:
I have a Dockerfile file like this that I'm building my image with. 我有一个这样的Dockerfile文件,我正在构建我的图像。 This is just a simple python/flask app.
这只是一个简单的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" ]
This is my requirements.txt: 这是我的要求.txt:
Flask==1.0.2
gunicorn==19.8.1
kubernetes==6.0.0
requests # Apache-2.0
After building the Dockerfile it outputs: 构建Dockerfile后,它输出:
Successfully built a2590bae9fd9
Successfully tagged testapp:latest
but when I do docker run a2590bae9fd9
I receive an error: 但当我做
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'
I thought it might've been my python directory but I checked and its running in /usr/local/bin/python. 我以为它可能是我的python目录,但我检查并在/ usr / local / bin / python中运行。
I'm really stumped - any suggestions/tips? 我真的很难过 - 任何建议/提示? thank you.
谢谢。
You don't want config.load_kube_config()
, you want config.load_incluster_config()
你不想要
config.load_kube_config()
,你想要config.load_incluster_config()
If you need to distinguish between your setup and when it's running in a Pod
, one mechanism is if os.getenv('KUBERNETES_SERVICE_HOST'): config.load_incluster_config()
since that for sure will be in the environment while in a Pod
, and is unlikely to be in your local environment. 如果你需要区分你的设置和它在
Pod
运行的时间,一种机制是if os.getenv('KUBERNETES_SERVICE_HOST'): config.load_incluster_config()
因为肯定会在Pod
中的环境中,并且不太可能在你当地的环境中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.