docker - 尝试从 Docker 容器访问 Kubernetes API 的问题

标签 docker asp.net-core kubernetes

我正面临问题。我正在尝试从 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 容器在 kubernetes 集群中运行,您可以通过服务访问 kubernetes API。在默认命名空间中,该服务已作为 kubernetes 提供。 ,所以连接 url 将是 https://kubernetes/ .

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

顺便说一句:如果您使用的是 kubectl-proxy,它将自动对请求进行身份验证,无需添加不记名 token 。

关于docker - 尝试从 Docker 容器访问 Kubernetes API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55759284/

相关文章:

c# - 将 key 从 Key Vault 检索到在 AKS 中运行的 .Net Core 应用程序,是否需要 CSI 驱动程序?

kubernetes - 无法从 minikube 获取 ClusterIP 服务 url

python - docker-compose 无法解析服务主机名

docker - 在 Dockerfile 构建中连接到本地主机?

mysql - Docker容器bash无法通过socket连接到本地MySQL服务器

docker - 从 Docker 容器连接到 CosmosDB

c# - 反序列化对象的JSON数组,但是当数组包含1个对象时,数组被省略

linux - Azure Powershell 模块 - Linux (.NET Core) 支持

docker - Kubernetes和Dockerfile

kubernetes - 无法删除所有 Kubernetes 命名空间 Cronjob 中所有被驱逐的 pod