通过 pod 访问 kubernetes python api

accessing kubernetes python api through a pod

所以我需要通过 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 任何提示或建议将不胜感激。谢谢。

so I need to connect to that pod somehow through the python api

我很确定你误解了,and/or我误解了你的问题。一个人应该只使用 load_incluster_config when ... in-cluster ...否则它将尝试使用 /var/run/secrets/kubernetes.io/etcetc 而找不到它们(除了上面提到的实际错误中缺少的 env-var ).但是,如果您按照建议用 if os.getenv('KUBERNETES_SERVICE_HOST'): 保护了 load_incluster_config(),那么它就不会 运行 该代码和这里的这个问题就不会成为问题。

如果您构建了一个 docker 映像,但 没有将其部署到 kubernetes,那就不清楚了。


如果你只想使用pythonapi来访问集群,而不是从 集群,config.load_kube_config() 实际上是正确的方法调用,但您绝对需要提供一个有效的 kubeconfig,无论是在 /root/.kube/config 还是在 env-var KUBECONFIG(我的意思是,通常;我没有专门查看 python 库来查看是否支持该 env-var)。