无法连接到 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 中从工作连接到服务

Kubernetes - 无法从服务的 pod 连接到服务 IP

Kubernetes node.js 容器无法连接到 MongoDB Atlas

.NET Core pod 无法连接到 Kubernetes 中的 SQL Server pod

无法从 kubernetes pod 内部连接到外部数据库

为啥我的一些 kubernetes 节点无法连接到我的 postgres 集群而其他节点成功?