通过pod访问kubernetes python api

问题描述 投票:0回答:1

所以我需要通过pod连接到python kubernetes客户端。我一直在尝试使用config.load_incluster_config(),基本上遵循here的例子。然而,它正在抛出这些错误。

  File "/Users/myname/Library/Python/2.7/lib/python/site-packages/kubernetes/config/incluster_config.py", line 93, in   load_incluster_config
  cert_filename=SERVICE_CERT_FILENAME).load_and_set()
  File "/Users/myname/Library/Python/2.7/lib/python/site- packages/kubernetes/config/incluster_config.py", line 45, in load_and_set
  self._load_config()
  File "/Users/myname/Library/Python/2.7/lib/python/site-packages/kubernetes/config/incluster_config.py", line 51, in _load_config
  raise ConfigException("Service host/port is not set.")

我正在使用Python 2.7和Minikube任何提示或建议都会非常感激。谢谢。

python kubernetes minikube kubernetes-python-client
1个回答
3
投票

所以我需要通过python api以某种方式连接到那个pod

我很确定你误解了my answer,和/或我误解了你的问题。人们应该只在群集中使用load_incluster_config ...否则它将尝试使用/var/run/secrets/kubernetes.io/etcetc而不是找到它们(在上面引用的实际错误中超出缺失的env-var)。但是,如果您按照建议使用load_incluster_config()保护if os.getenv('KUBERNETES_SERVICE_HOST'):,那么它将不会运行该代码,这里的问题不会成为问题。

如果您已经构建了一个docker镜像,但没有将其部署到kubernetes中,那么这一点并不清楚。


如果你只是想使用python api来访问集群,而不是来自集群内部,那么config.load_kube_config()实际上是正确的方法调用,但你绝对需要提供一个有效的kubeconfig,无论是在/root/.kube/config还是在指定的其他地方env-var KUBECONFIG(我的意思是,通常;我没有专门查看python库,看看是否尊重env-var)。

© www.soinside.com 2019 - 2024. All rights reserved.