无法安装 Kubernetes Metrics Server

roo*_*099 5 kubernetes

我想安装 Kubernetes Metrics Server 并按照此配方(来自 Kubernetes 手册)尝试 Metrics API。我目前有一个安装了 kubeadm 的 Kubernetes 1.13 集群。

该配方的启用 API 聚合部分建议更改/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
Run Code Online (Sandbox Code Playgroud)

建议的新设置如下:

--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
Run Code Online (Sandbox Code Playgroud)

如果我在没有进行这些更改的情况下安装指标服务器,其日志将包含如下错误:

无法完全收集指标:...无法从 Kubelet 获取指标...x509:由未知机构签名的证书

这些凭证从何而来?它们意味着什么?我目前没有目录/etc/kubernetes/certs。

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

command:
- /metrics-server
- --client-ca-file
- /etc/kubernetes/pki/ca.crt

volumeMounts:
- mountPath: /etc/kubernetes/pki/ca.crt
  name: ca
  readOnly: true

volumens:
- hostPath:
    path: /etc/kubernetes/pki/ca.crt
    type: File
  name: ca
Run Code Online (Sandbox Code Playgroud)

更新 这可能就是为什么将 CA 证书安装到容器中显然没有帮助的原因。

Edu*_*llo 2

关于 Kubernetes 证书:

\n\n

了解如何在集群中管理 TLS 证书:

\n\n
\n

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

\n
\n\n

还有PKI 证书和要求:

\n\n
\n

Kubernetes 需要 PKI 证书来通过 TLS 进行身份验证。如果\n您使用以下命令安装 Kuberneteskubeadm,则会自动生成您的集群所需的证书。

\n
\n\n

kubeadm默认情况下,在以下位置创建 Kubernetes 证书/etc/kubernetes/pki/。

\n\n

关于指标服务器错误:

\n\n

看起来指标服务器正在尝试验证 kubelet 服务证书,而不让它们由主 Kubernetes CA 签名。安装工具如kubeadm可能无法正确设置证书。

\n\n

如果您的服务器在安装 Kubernetes 后更改了名称/地址,也可能会发生此问题,这会导致与您当前的名称/地址不匹配apiserver.crt Subject Alternative Name。检查一下:

\n\n
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep DNS\n
Run Code Online (Sandbox Code Playgroud)\n\n

克服此错误的最快/简单的方法是使用--kubelet-insecure-tls指标服务器标志。像这样的东西:

\n\n
# metrics-server-deployment.yaml\n[...]\n- name: metrics-server\n        image: k8s.gcr.io/metrics-server-amd64:v0.3.1\n        command:\n        - /metrics-server\n        - --kubelet-insecure-tls\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,这意味着安全问题。如果您正在运行测试,那么可以。但对于生产来说,最好的方法是识别并修复证书问题(查看此指标服务器问题以获取更多信息:#146)

\n