无法安装Kubernetes Metrics服务器

无法安装Kubernetes Metrics服务器,kubernetes,Kubernetes,我想安装Kubernetes Metrics服务器,并通过以下方式尝试Metrics API(来自Kubernetes手册)。我目前有一个Kubernetes 1.13集群,它是与kubeadm一起安装的 配方部分建议更改/etc/kubernetes/manifests/kube apiserver.yaml中的几个设置。当前设置如下所示: --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --proxy-c

我想安装Kubernetes Metrics服务器,并通过以下方式尝试Metrics API(来自Kubernetes手册)。我目前有一个Kubernetes 1.13集群,它是与kubeadm一起安装的

配方部分建议更改
/etc/kubernetes/manifests/kube apiserver.yaml
中的几个设置。当前设置如下所示:

--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
--requestheader-allowed-names=front-proxy-client
--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
--requestheader-client-ca-file=/etc/kubernetes/certs/proxy-ca.crt
--proxy-client-cert-file=/etc/kubernetes/certs/proxy.crt
--proxy-client-key-file=/etc/kubernetes/certs/proxy.key
--requestheader-allowed-names=aggregator
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
建议的新设置如下所示:

--proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
--proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
--requestheader-allowed-names=front-proxy-client
--requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
--requestheader-client-ca-file=/etc/kubernetes/certs/proxy-ca.crt
--proxy-client-cert-file=/etc/kubernetes/certs/proxy.crt
--proxy-client-key-file=/etc/kubernetes/certs/proxy.key
--requestheader-allowed-names=aggregator
--requestheader-extra-headers-prefix=X-Remote-Extra-
--requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User
如果安装metrics server时未进行这些更改,其日志将包含以下错误:

无法完全收集指标:。。。无法从中获取度量 库贝莱。。。x509:由未知权限签署的证书

这些证书从何而来,需要什么?我目前没有目录
/etc/kubernetes/certs

更新我现在尝试在
metrics server deployment.yaml中的适当位置添加以下内容,但是问题仍然存在(在缺少
--kubelet不安全tls的情况下
):

更新可能是将CA证书装入容器显然没有帮助的原因。

关于Kubernetes证书: 了解如何:

每个Kubernetes群集都有一个群集根证书颁发机构 (CA)。CA通常由集群组件用于验证 API服务器的证书,由API服务器验证kubelet客户端 证书等。为了支持这一点,CA证书包 分发到群集中的每个节点,并作为 附加到默认服务帐户的秘密

而且:

Kubernetes需要PKI证书通过TLS进行身份验证。如果 您可以使用
kubeadm
安装Kubernetes,您的 自动生成群集请求

kubeadm
,默认情况下,在
/etc/Kubernetes/pki/
目录下创建Kubernetes证书

关于metrics服务器错误: metrics服务器似乎正在尝试验证kubelet服务证书,而无需主Kubernetes CA对其进行签名。类似于
kubeadm
的安装工具可能无法正确设置证书

如果您的服务器在Kubernetes安装后更改了名称/地址,这会导致
apiserver.crt
主题替代名称
与您当前的名称/地址不匹配,则也会发生此问题。请检查以下内容:

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep DNS
克服此错误的最快/简单方法是为metrics server使用
--kubelet unsecure tls
标志。大概是这样的:

# metrics-server-deployment.yaml
[...]
- name: metrics-server
        image: k8s.gcr.io/metrics-server-amd64:v0.3.1
        command:
        - /metrics-server
        - --kubelet-insecure-tls

请注意,这意味着安全问题。如果您正在运行测试,请单击“确定”。但对于生产,最好的方法是识别和修复证书问题(查看此metrics server问题以了解更多信息:)

是,
--kubelet不安全tls
(“不要验证Kubelets提供的服务证书的CA”)克服了此问题。非常感谢你。不过,我仍然不知道如何在生产中修复它。kubelet的证书似乎是由Kubernetes CA签署的(openssl验证-CAfile/etc/Kubernetes/pki/CA.crt/var/lib/kubelet/pki/kubelet客户端current.pem
),那么怎么办?请参阅我对该问题的更新。您是否尝试在kubelet的配置中设置?看看评论和相关评论。你能建议如何以“干净”的方式在现有集群上添加此选项吗?覆盖以前由
kubeadm
(例如
/etc/systemd/system/kubelet.service.d/10 kubeadm.conf
)生成的文件似乎不正确。@rookeye099我可以在您的第一条评论中回答您的问题。将
--kubelet certificate authority
标志与群集CA证书的位置一起传递给您的metrics服务器。如果您的kubelet客户端证书已使用正确的x509扩展名和正确的使用者名称生成,则它将起作用。