kubelet tls证书的目的是什么?

时间:2017-07-12 09:09:43

标签: kubernetes kubelet

我看到kubelet在/ var / run / kubernetes /中创建了一对自签名证书:

# ll /var/run/kubernetes/
total 8
-rw-r--r--. 1 root root 1164 iul  6 05:38 kubelet.crt
-rw-------. 1 root root 1679 iul  6 05:38 kubelet.key

这些用于他自己的tls配置,并且还设置了" CA:TRUE"。如果删除,则重新创建它们。

我的第一个问题是用CA制作它们的目的是什么:是的? kubelet是否会创建其他证书?如果是,为了什么目的?

为什么apiserver会自动信任这些证书?

祝你好运, 克里斯蒂安

1 个答案:

答案 0 :(得分:1)

kubelet需要在端口10250上为其HTTPS服务器提供证书。它不需要签署证书,因此CA:TRUE是多余的。不知道为什么会这样创造。

IIRC,如果在没有设置--tls-ca-file的情况下运行,kube-apiserver会信任任何证书。我记得一些较旧的k8s教程没有强制执行TLS。

此外,在您启用kubelet authentication之前,任何人/任何人都可以不受限制地访问kubelet。

在任何情况下,如果你的k8s群集以这种方式运行,那么它就是不安全的。我建议使用kargo,kops,kubeadm或任何一个众所周知的工具来提升你的集群。这些解决方案构建了适当的证书层次结构,作为设置过程的一部分。

来自kubelet's docs的额外信息:

--cert-dir string    The directory where the TLS certs are located (by default /var/run/kubernetes). If --tls-cert-file and --tls-private-key-file are provided, this flag will be ignored. (default "/var/run/kubernetes")
--tls-cert-file string    File containing x509 Certificate for HTTPS.  (CA cert, if any, concatenated after server cert). If --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to the directory passed to --cert-dir.
--port int32    The port for the Kubelet to serve on. (default 10250)