Проблема при попытке доступа к API Kubernetes из контейнера Docker - PullRequest
1 голос
/ 19 апреля 2019

Я столкнулся с проблемой. Я пытаюсь получить доступ к Kubernetes API из контейнера Docker (создан .NetCore). Я получаю сообщение об ошибке «Соединение отказано» .

Кто-нибудь может помочь? Я буду благодарен.

using (HttpClient client = new HttpClient()) {
  var request_json = JsonConvert.SerializeObject(obj).ToString();
  var content = new StringContent(request_json, Encoding.UTF8, "application/json");
  client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Token");
  client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  client.DefaultRequestHeaders.Connection.Add("close");
  var result = await client.PostAsync("http://127.0.0.1:8001/apis/batch/v1/namespaces/default", content);
  var result_string = await result.Content.ReadAsStringAsync()`enter code here`;
  return result_string.ToString();
}

1 Ответ

1 голос
/ 19 апреля 2019

Если ваш докер-контейнер работает внутри кластера kubernetes, вы можете получить доступ к API kubernetes через службу.В пространстве имен по умолчанию служба уже предоставлена ​​как kubernetes, поэтому URL-адрес соединения будет https://kubernetes/.

Если вы запускаете Docker-контейнер локально и хотите использовать kubectl proxy для доступа к kubernetesapi контейнер Docker должен работать без изоляции сети, чтобы иметь возможность доступа к локальному порту прокси: docker run --net=host.Это работает, только если вы используете Linux, в MacOS или Windows виртуальная машина используется для размещения док-контейнеров, а localhost - это виртуальная машина, а не ваш рабочий стол.Затем вы должны использовать одно из специальных имен хостов docker.for.mac.host.internal или docker.for.win.localhost, но вам нужно будет соответственно запустить kubectl-proxy для прослушивания не только в петлевом сетевом интерфейсе, так как запрос будет поступать от docker-vm,который является внешним.

Кстати: если вы используете kubectl-proxy, он автоматически аутентифицирует запросы и нет необходимости добавлять токен на предъявителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...