Я тоже столкнулся с тем же исключением.
После нескольких исследований исходного кода клиентской библиотеки, я думаю, вам нужно убедиться в двух вещах.
- Прежде всего, вы можете получить доступ к вашему api-серверу?
- Во-вторых, вам нужно проверить порядок загрузки ApiClient.
Какой способ вы используете для настройки вашего соединения
Первое, что здесь может быть не связано с вашим делом или библиотекой.
Клиентская библиотека API поддерживает три способа настройки: для взаимодействия с аписервером K8S как внутри модуля, так и вне кластера.
- читать env KUBECONFIG
- read $ {home} /. Kube / config
- прочитайте, что учетная запись службы находится в /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Если вы используете lib внутри Pod, обычно он пытается использовать третий способ.
Как вы загружаете своего клиента.
Вы должны иметь в виду, чтобы вызвать
Configuration.setDefaultApiClient(apiClient);
до того, как вы начнете CoreV1Api или ваш CRD API.
Причина довольно проста, потому что под всеми классами Api, например, под
класс io.kubernetes.client.api.CoreV1Api
public class CoreV1Api {
private ApiClient apiClient;
public CoreV1Api() {
this(Configuration.getDefaultApiClient());
}
...
}
Если вы не установили конфигурацию defaultApiClient, он будет использовать всю конфигурацию по умолчанию, для которой basePath будет localhost: 443 , тогда вы столкнетесь с ошибкой.
В пакете примеров клиент уже создал множество примеров и вариантов использования.
Полная логика конфигурации может быть такой:
public class Example {
public static void main(String[] args) throws IOException, ApiException {
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
// now you are safe to construct a CoreV1Api.
CoreV1Api api = new CoreV1Api();
V1PodList list =
api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
for (V1Pod item : list.getItems()) {
System.out.println(item.getMetadata().getName());
}
}
}
Просто помните, порядок важен, если вы используете конструктор по умолчанию для инициализации XXXApi.