Невозможно удалить входящий объект 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")