Есть ли способ получить cluster_ip из сервиса, который я создал с помощью клиента Python Kubernetes?

#python #kubernetes

Вопрос:

После создания развертывания с помощью клиента Python Kubernetes и предоставления сервиса с типом ClusterIP , как я могу получить IP-адрес кластера с помощью клиента python вместо команды Kubectl ?

Сервис был создан на основе примера кода

 def create_service():
core_v1_api = client.CoreV1Api()
body = client.V1Service(
    api_version="v1",
    kind="Service",
    metadata=client.V1ObjectMeta(
        name="service-example"
    ),
    spec=client.V1ServiceSpec(
        selector={"app": "deployment"},
        ports=[client.V1ServicePort(
            port=5678,
            target_port=5678
        )]
    )
)
# Creation of the Deployment in specified namespace
# (Can replace "default" with a namespace you may have created)
core_v1_api.create_namespaced_service(namespace="default", body=body) 
 

В документации есть команда для перечисления IP-адресов pod

 v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
    print("%st%st%s" %
          (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
 

мне интересно, есть ли способ сделать что-то подобное с Cluster-IP от служб.

Ответ №1:

Просто получите услугу и ознакомьтесь с ее spec.cluster_ip свойствами:

 from kubernetes import client, config
config.load_kube_config()
api = client.CoreV1Api()
service = api.read_namespaced_service(name="kubernetes", namespace="default")
print(service.spec.cluster_ip)
# 10.100.0.1