Skip to content

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

@wmlynch

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions