无法安装Kubernetes Metrics Server

时间:2019-04-05 12:44:51

标签: kubernetes

我想安装Kubernetes Metrics Server,并按照this recipe(来自Kubernetes手册)尝试Metrics API。我目前有一个与kubeadm一起安装的Kubernetes 1.13集群。

食谱的Enable API Aggregation部分建议更改/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

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

1 个答案:

答案 0 :(得分:1)

关于Kubernetes证书:

看看如何Manage TLS Certificates in a Cluster

  

每个Kubernetes集群都有一个集群根证书颁发机构   (CA)。群集组件通常使用CA来验证   API服务器的证书,由API服务器验证kubelet客户端   证书等。为此,CA证书捆绑包是   分布到集群中的每个节点,并作为   密码附加到默认服务帐户。

还有PKI Certificates and Requirements

  

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

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