2017-07-12 44 views
0

我看到kubelet是创建在/ var一对自签名证书/运行/ kubernetes /:什么是kubelet TLS证书的目的

# 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制作它们的目的是什么:true? Kubelet是否创建了其他证书?如果是,为了什么目的?

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

最好的问候, 克里斯蒂安

回答

1

kubelet证书需要在端口10250.它并不需要签署证书的HTTPS服务器,所以CA:TRUE是多余的。不知道为什么这样创建。

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

另外,任何人/任何东西都可以无限制地访问kubelet,直到您打开kubelet authentication

在任何情况下,如果以这种方式运行您的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) 
+0

集群与kubeadm创建。从你的链接看来,授权是通过默认kubelet配置给予apiserver的。感谢您的帮助。 – cristi