我正在使用python访问我的集群。我碰到的唯一一件接近的事是list_namespaced_pod,它没有给我豆荚的实际名称。
答案 0 :(得分:2)
如注释中所述,您可以访问API调用返回的容器项列表中每个容器的metadata
中的所有信息。
这里是一个示例:
def get_pods():
v1 = client.CoreV1Api()
pod_list = v1.list_namespaced_pod("example")
for pod in pod_list.items:
print("%s\t%s\t%s" % (pod.metadata.name,
pod.status.phase,
pod.status.pod_ip))
答案 1 :(得分:0)
你应该已经找到了溶胶。为了获得 pod 名称,我在这里再发一张。
在下面,您可以使用特定的正则表达式从命名空间中获取 pod(正则表达式 = 如果您想使用某种模式搜索特定的 pod)。 您也可以使用下面的 fn 来检查特定的 pod 是否存在。
from kubernetes import config , client
from kubernetes.client import Configuration
from kubernetes.client.api import core_v1_api
from kubernetes.client.rest import ApiException
from kubernetes.stream import stream
import re
pod_namespace = "dev_staging"
pod_regex = "log_depl"
try:
config.load_kube_config()
c = Configuration().get_default_copy()
except AttributeError:
c = Configuration()
c.assert_hostname = False
Configuration.set_default(c)
core_v1 = core_v1_api.CoreV1Api()
def get_pod_name(core_v1,pod_namespace,pod_regex):
ret = core_v1.list_namespaced_pod(pod_namespace)
for i in ret.items:
#print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
pod_name=i.metadata.name
if re.match(pod_regex, pod_name):
return pod_name
def check_pod_existance(api_instance,pod_namespace,pod_name):
resp = None
try:
resp = api_instance.read_namespaced_pod(name=pod_name,namespace=pod_namespace)
except ApiException as e:
if e.status != 404:
print("Unknown error: %s" % e)
exit(1)
if not resp:
print("Pod %s does not exist. Create it..." % pod_name)
您可以将函数调用为:
pod_name=get_pod_name(core_v1,pod_namespace,pod_regex)
check_pod_existance(core_v1,pod_namespace,pod_name)