我正在使用python访问我的集群,我遇到的唯一一件事,也就是close是list_namespaced_pod,它没有给予我pod的实际名称。
omqzjyyz1#
如注解中所述,您可以访问API调用返回的pod项列表中每个pod的metadata中的所有信息。下面是一个例子:
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))
dddzy1tm2#
你可能已经找到了获取吊舱名称的解决方案,我在这里再贴一个。下面你可以用特定的正则表达式从命名空间中获取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)
2条答案
按热度按时间omqzjyyz1#
如注解中所述,您可以访问API调用返回的pod项列表中每个pod的
metadata
中的所有信息。下面是一个例子:
dddzy1tm2#
你可能已经找到了获取吊舱名称的解决方案,我在这里再贴一个。
下面你可以用特定的正则表达式从命名空间中获取pod(如果你想用某种模式搜索特定的pod,正则表达式=)。你也可以用下面的fn检查特定的pod是否存在。
您可以按以下方式调用函数: