无法安装Kubernetes Metrics服务器
我想安装Kubernetes Metrics服务器,并通过以下方式尝试Metrics API(来自Kubernetes手册)。我目前有一个Kubernetes 1.13集群,它是与kubeadm一起安装的 配方部分建议更改无法安装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
/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扩展名和正确的使用者名称生成,则它将起作用。