Невозможно удалить входящий объект kubernetes через клиент Python kubernetes.

Я получаю эту ошибку при удалении входящих объектов.

Reason: Internal Server Error
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json', 'Content-Length': '161', 'Date': 'Wed, 14 Feb 2018 10:14:03 GMT'})
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"no kind \"Ingress\" is registered for version \"extensions/v1beta1\"","code":500}

И это фрагмент кода, который я использую для удаления...

try:
    resp = k8s_beta.read_namespaced_ingress(name=ing_name, namespace=namespace_name)
    resp1 = k8s_beta.delete_namespaced_ingress(
        name=resp['metadata']['name'],
        body=resp,
        namespace=namespace_name)
    print("Ingress deleted. status='%s'" % str(resp1.status))
except client.rest.ApiException:
    raise client.rest.ApiException

Я гарантировал, что входной объект действительно существует с правильным версионированием API. Получение похожих ошибок при попытке удалить объекты развертывания!

2 ответа

Тело param должно быть экземпляром client.V1DeleteOptions, а не конфигурацией входящего объекта.body = client.V1DeleteOptions()

Ingress можно удалить следующим образом:

      from yaml import safe_load
from kubernetes.client import NetworkingV1Api
from kubernetes.config import new_client_from_config


KUBECONFIG="k8s config..."
temp_config_file = NamedTemporaryFile()
with open(temp_config_file.name, mode="w") as config_file:
    config_file.write(KUBECONFIG)

client = new_client_from_config(config_file=temp_config_file.name)
ingress_client = NetworkingV1Api(client)

ingress_client.delete_namespaced_ingress(name=job_name, namespace="default")

документация

Другие вопросы по тегам