所以我需要通过 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
我很确定你误解了my answer ,和/或我误解了你的问题。一个人应该只使用 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,那就不清楚了。
如果您只想使用 python api访问集群,而不是从内部集群,config.load_kube_config()实际上是正确的方法调用,但是您绝对需要提供一个有效的 kubeconfig,无论是在 /root/.kube/config 还是在 env 指定的其他地方-var KUBECONFIG(我的意思是,通常情况下;我没有专门查看 python 库以查看是否支持该 env-var)。
