Kubernetes 使用K8s Python客户端获取服务选择器

Kubernetes 使用K8s Python客户端获取服务选择器,kubernetes,kubernetes-python-client,Kubernetes,Kubernetes Python Client,我正在尝试获取服务标签选择器。我正在使用方法检索服务,并使用field\u selector参数对其进行过滤,如: ... field_selector="spec.selector={u'app': 'redis'} ... services = v1.list_service_for_all_namespaces(field_selector=field_selector, watch=False) for service in services.items: print(servi

我正在尝试获取服务
标签选择器
。我正在使用方法检索服务,并使用
field\u selector
参数对其进行过滤,如:

...
field_selector="spec.selector={u'app': 'redis'}
...
services = v1.list_service_for_all_namespaces(field_selector=field_selector, watch=False)
for service in services.items:
    print(service)
...
我得到这个错误:

HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"\"spec.selector\" is not a known field selector: only \"metadata.name\", \"metadata.namespace\"","reason":"BadRequest","code":400}
因此,似乎只有
name
namespace
是有效的参数,这是没有文档记录的:

field_selector='field_selector_example'#str |一个选择器,用于按字段限制返回对象的列表。默认为一切。(可选)

目前,我的解决方法是将标签设置为与服务的标签选择器相同的标签,然后通过
标签选择器
参数检索它,但我希望能够通过
标签选择器
获取它

问题是,从一开始,我需要获取服务后面的端点(后端POD),但API调用甚至没有返回此信息,所以我想我应该获取选择器,将它们与POD上的标签匹配,然后我们就开始了,但现在我意识到选择器也不可能获取


这是太多的限制。我想可能是我的方法错了。有人知道从服务获取标签选择器的方法吗?

您应该能够从服务对象获取选择器,然后使用该方法查找与选择器匹配的所有POD

例如(我希望我没有打字错误,我的python已经生锈了):


这是有效的。但这是纯粹的python技能。我希望API能以某种方式返回这些信息。非常感谢。
services = v1.list_service_for_all_namespaces(watch=False)
for svc in services.items:
    if svc.spec.selector:
        # convert the selector dictionary into a string selector
        # for example: {"app":"redis"} => "app=redis"
        selector = ''
        for k,v in svc.spec.selector.items():
            selector += k + '=' + v + ','
        selector = selector[:-1]

        # Get the pods that match the selector
        pods = v1.list_pod_for_all_namespaces(label_selector=selector)
        for pod in pods.items:
            print(pod.metadata.name)