docker - Docker for Windows - 无法列出节点:获取 https://kubernetes.docker.internal:6443/api/v1/nodes:禁止
问题描述
我尝试从 Docker for Windows 运行 Kubernetes。在我单击Kubernetes选项卡Enable Kubernetes
内部后,进程运行到无限状态。Kuberneters is starting...
查看service.txt
日志C:\ProgramData\DockerDesktop\pki
,Docker 一直重复以下日志块。
[10:23:26.068][ApiProxy ][Error ] time="2020-01-14T10:23:26+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:27.080][ApiProxy ][Error ] time="2020-01-14T10:23:27+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:28.071][ApiProxy ][Error ] time="2020-01-14T10:23:28+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:28.624][ApiProxy ][Info ] time="2020-01-14T10:23:28+01:00" msg="DNS failure: www-cache.\tIN\t A: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:28.626][ApiProxy ][Info ] time="2020-01-14T10:23:28+01:00" msg="DNS failure: www-cache.\tIN\t AAAA: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:29.068][ApiProxy ][Error ] time="2020-01-14T10:23:29+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:30.083][ApiProxy ][Error ] time="2020-01-14T10:23:30+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:31.088][ApiProxy ][Error ] time="2020-01-14T10:23:31+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:32.068][ApiProxy ][Error ] time="2020-01-14T10:23:32+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:32.715][ApiProxy ][Info ] time="2020-01-14T10:23:32+01:00" msg="DNS failure: www-cache.\tIN\t AAAA: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:32.717][ApiProxy ][Info ] time="2020-01-14T10:23:32+01:00" msg="DNS failure: www-cache.\tIN\t A: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:33.068][ApiProxy ][Error ] time="2020-01-14T10:23:33+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:34.074][ApiProxy ][Error ] time="2020-01-14T10:23:34+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:34.658][ApiProxy ][Info ] time="2020-01-14T10:23:34+01:00" msg="DNS failure: www-cache.\tIN\t A: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:34.661][ApiProxy ][Info ] time="2020-01-14T10:23:34+01:00" msg="DNS failure: www-cache.\tIN\t AAAA: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:35.069][ApiProxy ][Error ] time="2020-01-14T10:23:35+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:36.074][ApiProxy ][Error ] time="2020-01-14T10:23:36+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:37.070][ApiProxy ][Error ] time="2020-01-14T10:23:37+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:38.072][ApiProxy ][Error ] time="2020-01-14T10:23:38+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:39.072][ApiProxy ][Error ] time="2020-01-14T10:23:39+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:39.681][ApiProxy ][Info ] time="2020-01-14T10:23:39+01:00" msg="DNS failure: www-cache.\tIN\t AAAA: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:39.684][ApiProxy ][Info ] time="2020-01-14T10:23:39+01:00" msg="DNS failure: www-cache.\tIN\t A: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:40.069][ApiProxy ][Error ] time="2020-01-14T10:23:40+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:41.076][ApiProxy ][Error ] time="2020-01-14T10:23:41+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:42.089][ApiProxy ][Error ] time="2020-01-14T10:23:42+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:42.745][ApiProxy ][Info ] time="2020-01-14T10:23:42+01:00" msg="DNS failure: www-cache.\tIN\t A: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:42.748][ApiProxy ][Info ] time="2020-01-14T10:23:42+01:00" msg="DNS failure: www-cache.\tIN\t AAAA: errno 9002: DnsQuery: DNS-Serverfehler."
[10:23:43.071][ApiProxy ][Error ] time="2020-01-14T10:23:43+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:44.088][ApiProxy ][Error ] time="2020-01-14T10:23:44+01:00" msg="Cannot list nodes: Get https://kubernetes.docker.internal:6443/api/v1/nodes: Forbidden"
[10:23:44.758][VpnKit ][Info ] vpnkit.exe: Expired 256 UDP NAT rules
故障排除:
代理设置
我的机器在代理后面,所以我在代理选项卡中添加了相应的信息
没有变化
ping kubernetes.docker.internal
Ping wird ausgeführt für kubernetes.docker.internal [127.0.0.1] mit 32 Bytes Daten:
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Antwort von 127.0.0.1: Bytes=32 Zeit<1ms TTL=128
Ping-Statistik für 127.0.0.1:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
代理:忽略本地地址
因此 kubernetes.docker.internal 是一个本地地址,我将该地址添加到 docker 和我的机器 internetoptions 中的代理忽略列表中。
没有变化
从 C:\ProgramData\DockerDesktop\pki 安装 ca.crt
我还尝试将 docker 添加.crt
到我机器的受信任证书中
没有变化
移除 PKI 并重置 Kubernetes 集群
启动 kubernetes 的无休止状态并不少见,所以我在github上找到了很多建议处理。最有效的建议是关于删除东西和重置 docker。我多次尝试所有这些。
没有变化
https://kubernetes.docker.internal:6443/api/v1/nodes
在浏览器中调用
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:22:37 2019
OS/Arch: windows/amd64
Experimental: false
在 Windows 10 机器上进行测试。
我分散了所有的镜头,不知道该怎么做。
解决方案
我遇到了同样的问题,似乎 k8s API 不想回答 TLS Client hello 消息。我在本地接口上使用 Wireshark 检查了流量(这是用于 kubernetes.docker.internal 的接口)。TCP 会话设置工作正常。
我还在 kubernetes 选项卡下的 docker for windows 设置中检查了“显示系统容器(高级)”选项,但是“docker ps -a”没有显示任何容器(我不确定它应该,但是选项的名称向我暗示)。
我很乐意继续调试,看看 API 服务是否真的在 Windows 中提供 docker 的 HyperV 虚拟机中运行,但我无法通过 Hyper-V 管理器连接到它。任何想法,如何检查并获取服务日志?
推荐阅读
- javascript - 如何处理firestore中为空的数据?
- c - 在 cmd 上打印到 stderr 无法打印非 ASCII UTF-8 文本的第一个字符
- python - 如何存储来自 Web 请求响应的特定数据?
- android - 使用 BottomSheetDialogFragment 删除底部表中的暗淡背景
- graphql - 链接资产随机消失
- html - 有没有办法隐藏检查元素的评论?
- sql - 使用 SQL Server 2016 解析 XML
- javascript - 如何在类外的另一个函数中使用类的方法?
- pytorch - 如何在 Pytorch 中训练 LSTM?
- c - 如何将此 ifs 语句转换为 switch 语句。在 C 语言中