【问题标题】:Unable to connect to kubernetes python api - .kube/config file not found无法连接到 kubernetes python api - .kube/config 文件未找到
【发布时间】: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 吗?

标签: python docker flask kubernetes minikube


【解决方案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')跨度>
猜你喜欢
  • 2019-09-12
  • 1970-01-01
  • 2021-06-16
  • 2019-04-30
  • 2019-04-26
  • 2016-10-09
  • 2018-11-29
  • 2020-08-15
  • 2015-12-27
相关资源
最近更新 更多