我对kubernetes相当陌生。想知道在pod中运行的程序是否可以访问pod运行的命名空间。
让我解释一下我的用法。我的应用程序的命名空间中有两个pod。一个pod必须是statefulset并且必须至少有3个副本。其他pod(例如POD-A)可以只是一个普通的部署。现在POD-A需要与statefulset的特定实例通信。我在一篇文章中读到它可以使用这种地址格式-来完成
如果我在这里有误解,请帮助我。任何替代/更简单的解决方案也欢迎。提前感谢!
https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#the-downward-api有一个这样的例子。
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
您可以使用向下API获取pod的命名空间:https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#the-downward-api(将命名空间挂载为环境变量)。
或者,如果serviceAcount挂载在pod中,则可以在文件中找到pod所在的命名空间: /var/run/secrets/kubernetes.io/serviceaccount/namespace.