繁体   English   中英

无法安装 Kubernetes Metrics Server

[英]Cannot install Kubernetes Metrics Server

我想安装 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

建议的新设置如下:

--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,其日志包含如下错误:

无法完全收集指标:...无法从 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

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

关于 Kubernetes 证书:

看看如何在集群中管理 TLS 证书

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

还有PKI 证书和要求

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

kubeadm默认在/etc/kubernetes/pki/目录中创建 Kubernetes 证书。

关于指标服务器错误:

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

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

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout | grep DNS

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM