试图从Docker容器访问Kubernetes API的问题

问题描述 投票:1回答:1

我正面临着问题。我试图从Docker Container(Created .NetCore)访问Kubernetes API。我收到错误消息“连接被拒绝”。

有人可以帮忙吗?我会感恩的。

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();
}
docker asp.net-core kubernetes
1个回答
1
投票

如果您的docker容器在kubernetes集群中运行,则可以通过服务访问kubernetes API。在默认命名空间中,服务已作为kubernetes提供,因此连接URL将为https://kubernetes/

如果您在本地运行docker容器并希望使用kubectl proxy访问kubernetes api,则docker容器必须在没有网络隔离的情况下运行才能访问本地代理端口:docker run --net=host。这仅适用于使用Linux,在MacOS或Windows上,虚拟机用于托管docker容器,而localhost则是VM,而不是桌面。然后,您将使用其中一个特殊主机名docker.for.mac.host.internaldocker.for.win.localhost,但您需要相应地启动kubectl-proxy以不仅侦听环回网络接口,因为请求将来自docker-vm,这是外部的。

BTW:如果您使用kubectl-proxy,它将自动验证请求,无需添加承载令牌。

© www.soinside.com 2019 - 2024. All rights reserved.