Kubernetes Kubeadm 单节点,仪表板 "malformed http response"

标签 kubernetes kubeadm

我刚刚按照 kubeadm 指南设置了一个单节点 Kubernetes 集群。集群本身看起来不错,并且所有 pod 都正常运行:

will@kubemaster:~$ sudo kubectl get pods --all-namespaces
NAMESPACE     NAME                                        READY     STATUS    RESTARTS   AGE
kube-system   calico-etcd-w6dkj                           1/1       Running   0          16m
kube-system   calico-node-mjsnr                           2/2       Running   0          16m
kube-system   calico-policy-controller-59fc4f7888-vc6x6   1/1       Running   0          16m
kube-system   etcd-kubemaster                             1/1       Running   0          16m
kube-system   kube-apiserver-kubemaster                   1/1       Running   1          16m
kube-system   kube-controller-manager-kubemaster          1/1       Running   0          16m
kube-system   kube-dns-545bc4bfd4-mbbrl                   3/3       Running   0          16m
kube-system   kube-proxy-wkmlj                            1/1       Running   0          16m
kube-system   kube-scheduler-kubemaster                   1/1       Running   0          16m
kube-system   kubernetes-dashboard-7f9dbb8685-rxwfw       1/1       Running   0          4m

我使用以下方法安装了仪表板:
sudo kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

我尝试通过运行“sudo kubectl proxy”在本地提供 kubrnetes 仪表板。

当我加载“http://127.0.0.1:8001 ”时,我得到了 API 端点列表,一切看起来都很好。但是当我添加/ui 以加载仪表板( http://127.0.0.1:8001/ui )时,我得到以下响应:
Error: 'malformed HTTP response "\x15\x03\x01\x00\x02\x02"'
Trying to reach: 'http://192.167.141.3:8443/'

另请注意,上述 URL 被重定向到 API:
http://localhost:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/

如果我用 HTTPS 替换 HTTP,我会收到“安全连接失败,SSL 收到超过最大允许长度的记录”。

如果我尝试在不使用 kubectl 代理的情况下加载仪表板,例如使用主 IP,我的连接被拒绝。

我在 Ubuntu 16.04 上运行,我的 kubectl 版本详细信息如下:
will@kubemaster:~$ sudo kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

最佳答案

从 v1.7 开始,仪表板默认只能通过 HTTPS 访问。

可在 http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ 获得与 kubectl proxy .

使用 HTTP 部署仪表板(不推荐用于生产)

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

仪表板可以在 http://localhost:8001/ui 加载与 kubectl proxy .

关于Kubernetes Kubeadm 单节点,仪表板 "malformed http response",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46654742/

相关文章:

docker - 如何为 Kubernetes 桌面 UI 配置简单的登录/通过身份验证

kubernetes - worker 开始失败CSINodeIfo : error updating CSINode annotation

kubernetes - RBAC 规则在具有 Kubeadm 的集群中不起作用

bash - 我可以从 azure cli 创建 Azure DevOps 变量组并为其传递一些值吗?

kubernetes - Google 容器引擎是否启用了 CFS cpu 配额?

environment-variables - kubernetes 默认创建了哪些环境变量

kubernetes - 重置 kubeadm 后无法删除 etcd

asp.net-core - 如何在 Kubernetes 中使用 HTTPS 在本地运行 ASP.NET Core

sockets - ipvsadm 在 kubeadm 集群中未显示任何条目

join - 集群信息 ConfigMap 中没有 JWS 签名 token - Kubernetes v1.7