Skip to content

k8s_info openshift.dynamic.exceptions.ServiceUnavailableError: 503 #349

Description

@wmlynch

Target cluster version: Openshift 4.2.5
openshift pip version: 0.10.0
kubernetes pip version: 10.0.1
ansible 2.9.2

- name: wait for kubernetes service
  k8s_info:
    api_version: v1
    kind: Service
    kubeconfig: "{{ cluster_kubeconfig }}"
    name: kubernetes
    namespace: default
  register: _kube_service

Ansible std_error block:

    "stderr_lines": [
        "Traceback (most recent call last):",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/client.py\", line 42, in inner",
        "    resp = func(self, *args, **kwargs)",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/client.py\", line 241, in request",
        "    _return_http_data_only=params.get('_return_http_data_only', True)",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/api_client.py\", line 334, in call_api",
        "    _return_http_data_only, collection_formats, _preload_content, _request_timeout)",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/api_client.py\", line 168, in __call_api",
        "    _request_timeout=_request_timeout)",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/api_client.py\", line 355, in request",
        "    headers=headers)",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/rest.py\", line 231, in GET",
        "    query_params=query_params)",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/rest.py\", line 222, in request",
        "    raise ApiException(http_resp=r)",
        "kubernetes.client.rest.ApiException: (503)",
        "Reason: Service Unavailable",
        "HTTP response headers: HTTPHeaderDict({'Cache-Control': 'no-cache, private', 'Content-Type': 'text/plain; charset=utf-8', 'X-Content-Type-Options': 'nosniff', 'Date': 'Thu, 12 Dec 2019 23:00:40 GMT', 'Content-Length': '20'})",
        "HTTP response body: b'service unavailable\\n'",
        "",
        "",
        "During handling of the above exception, another exception occurred:",
        "",
        "Traceback (most recent call last):",
        "  File \"/root/.ansible/tmp/ansible-tmp-1576191621.8594584-53701596979993/AnsiballZ_k8s_info.py\", line 102, in <module>",
        "    _ansiballz_main()",
        "  File \"/root/.ansible/tmp/ansible-tmp-1576191621.8594584-53701596979993/AnsiballZ_k8s_info.py\", line 94, in _ansiballz_main",
        "    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)",
        "  File \"/root/.ansible/tmp/ansible-tmp-1576191621.8594584-53701596979993/AnsiballZ_k8s_info.py\", line 40, in invoke_module",
        "    runpy.run_module(mod_name='ansible.modules.clustering.k8s.k8s_info', init_globals=None, run_name='__main__', alter_sys=True)",
        "  File \"/usr/lib/python3.7/runpy.py\", line 205, in run_module",
        "    return _run_module_code(code, init_globals, run_name, mod_spec)",
        "  File \"/usr/lib/python3.7/runpy.py\", line 96, in _run_module_code",
        "    mod_name, mod_spec, pkg_name, script_name)",
        "  File \"/usr/lib/python3.7/runpy.py\", line 85, in _run_code",
        "    exec(code, run_globals)",
        "  File \"/tmp/ansible_k8s_info_payload_hb4to5hf/ansible_k8s_info_payload.zip/ansible/modules/clustering/k8s/k8s_info.py\", line 179, in <module>",
        "  File \"/tmp/ansible_k8s_info_payload_hb4to5hf/ansible_k8s_info_payload.zip/ansible/modules/clustering/k8s/k8s_info.py\", line 175, in main",
        "  File \"/tmp/ansible_k8s_info_payload_hb4to5hf/ansible_k8s_info_payload.zip/ansible/modules/clustering/k8s/k8s_info.py\", line 156, in execute_module",
        "  File \"/tmp/ansible_k8s_info_payload_hb4to5hf/ansible_k8s_info_payload.zip/ansible/module_utils/k8s/common.py\", line 215, in kubernetes_facts",
        "  File \"/tmp/ansible_k8s_info_payload_hb4to5hf/ansible_k8s_info_payload.zip/ansible/module_utils/k8s/common.py\", line 205, in find_resource",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 201, in get",
        "    results = self.search(**kwargs)",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 242, in search",
        "    results = self.__search(self.__build_search(**kwargs), self.__resources, [])",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 284, in __search",
        "    matches.extend(self.__search([key] + parts[1:], resources, reqParams))",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 270, in __search",
        "    return self.__search(parts[1:], resourcePart, reqParams + [part] )",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 284, in __search",
        "    matches.extend(self.__search([key] + parts[1:], resources, reqParams))",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 270, in __search",
        "    return self.__search(parts[1:], resourcePart, reqParams + [part] )",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 263, in __search",
        "    group, part, resourcePart.preferred)",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/discovery.py\", line 166, in get_resources_for_api_version",
        "    resources_response = self.client.request('GET', path).resources or []",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/client.py\", line 44, in inner",
        "    raise api_exception(e)",
        "openshift.dynamic.exceptions.ServiceUnavailableError: 503",
        "Reason: Service Unavailable",
        "HTTP response headers: HTTPHeaderDict({'Cache-Control': 'no-cache, private', 'Content-Type': 'text/plain; charset=utf-8', 'X-Content-Type-Options': 'nosniff', 'Date': 'Thu, 12 Dec 2019 23:00:40 GMT', 'Content-Length': '20'})",
        "HTTP response body: b'service unavailable\\n'",
        "Original traceback: ",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/client.py\", line 42, in inner",
        "    resp = func(self, *args, **kwargs)",
        "",
        "  File \"/usr/lib/python3.7/site-packages/openshift/dynamic/client.py\", line 241, in request",
        "    _return_http_data_only=params.get('_return_http_data_only', True)",
        "",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/api_client.py\", line 334, in call_api",
        "    _return_http_data_only, collection_formats, _preload_content, _request_timeout)",
        "",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/api_client.py\", line 168, in __call_api",
        "    _request_timeout=_request_timeout)",
        "",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/api_client.py\", line 355, in request",
        "    headers=headers)",
        "",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/rest.py\", line 231, in GET",
        "    query_params=query_params)",
        "",
        "  File \"/usr/lib/python3.7/site-packages/kubernetes/client/rest.py\", line 222, in request",
        "    raise ApiException(http_resp=r)",
        ""
    ]

Inspecting the cluster, post k8s_info failure, the following apiservices are in a failed state.

apiservice.apiregistration.k8s.io/v1.packages.operators.coreos.com         openshift-operator-lifecycle-manager/v1-packages-operators-coreos-com   False (FailedDiscoveryCheck) 
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io                   openshift-monitoring/prometheus-adapter                                 False (FailedDiscoveryCheck) 

I'm surmising that one or both of the apiservices in FailedDiscoveryCheck caused the failure. What I'm struggling to understand is why.

Some questions/observations:

  • Based on discussions in issue Client init fails if one of apis is unavailable #327 the openshift client is gathering all v1 resources, Is this correct?
  • If so, why?
  • I suspect that if I called oc get service -n default kubernetes -o yaml the command would work successfully.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions