无法连接到 kubernetes python api - .kube/config 文件未找到
Posted
技术标签:
【中文标题】无法连接到 kubernetes python api - .kube/config 文件未找到【英文标题】:Unable to connect to kubernetes python api - .kube/config file not found 【发布时间】:2018-12-04 13:37:43 【问题描述】:即使我在 api 中遵循示例 here,我也无法连接到 kubernetes python 客户端。
基本上这条线连接不上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 中运行。
我真的很难过 - 有什么建议/提示吗?谢谢。
【问题讨论】:
它正在尝试加载'/root/.kube/config'
并且该文件在您的容器中不存在。你期待它存在吗?您希望它从哪里加载您的配置?
我在本地有 ~/.kube/config 文件,所以我想我错误地认为它可以在通过 requirements.txt 安装 kubernetes 时使用它。我怎样才能让它读取我本地计算机上的配置文件,这可以通过 Dockerfile 吗?
【参考方案1】:
你不想要config.load_kube_config()
,你想要config.load_incluster_config()
如果您需要区分您的设置和它在Pod
中运行的时间,一种机制是if os.getenv('KUBERNETES_SERVICE_HOST'): config.load_incluster_config()
,因为它肯定会在Pod
中的环境中,并且不太可能在您的本地环境。
【讨论】:
我只是将 load_kube_config 包围在 try/catch 中,然后使用 load_incluster_config 但你的方式更好 成功了!我以前使用过 incluster ,但没有 if 语句,所以我想这就是我所缺少的。谢谢! 我实际上已经在此 config.load_incluster_config() 行上收到“kubernetes.config.config_exception.ConfigException:服务主机/端口未设置”错误。你对我能做些什么来解决它有什么建议吗? 在什么情况下你会得到这个错误,因为我的建议是使用 50% 的确切错误所抱怨的内容:$KUBERNETES_SERVICE_HOST
(另外 50% 是 `_PORT')跨度>
以上是关于无法连接到 kubernetes python api - .kube/config 文件未找到的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes - 无法从服务的 pod 连接到服务 IP
Kubernetes node.js 容器无法连接到 MongoDB Atlas