_____egon新書來襲請看:https://egonlin.com/book.html
一套證書方案(4套即可)
etcd
1、etcd服務端證書(etcd_server.key、etcd_server.crt):用於作server、peer兩種功能,給etcd集群自己做服務端、作peer通信用
ps:etcd配置文件中下列配置用的就是該證書
ETCD_CERT_FILE=etcd_server.crt
ETCD_KEY_FILE=etcd_server.key
ETCD_PEER_CERT_FILE=etcd_server.crt
ETCD_PEER_KEY_FILE=etcd_server.key
ETCD_PEER_TRUSTED_CA_FILE=ca.crt
2、etcd客戶端證書(etcd_client.key,etcd_client.crt):用作client,給kube-apiserver連接etcd時使用
在kube-apiserver的配置文件中需要用到
--etcd-cafile=ca.crt
--etcd-certfile=etcd_client.crt
--etcd-keyfile=etcd_client.key
apiserver
1、服務端證書(apiserver.key,apiserver.crt):用作server,給kube-apiserver自己作為服務端用、還有用作kube-controller-manager為ServiceAccount自動頒發token使用私鑰文件
注意:該證書在制作的時候,需要把所有kube-apiserver所在主機的ip地址何負載均衡地址都放進去,還有server網絡的clusterIP的第一個ip地址,例如10.96.0.1
在kube-apiserver的配置文件中需要用到
--tls-cert-file=apiserver.crt
--tls-private-key-file=apiserver.key
--client-ca-file=ca.crt
在kube-controller-manager配置文件中用到
--service-account-private-key-file=apiserver.key
2、客戶端證書(client.key,client.crt):給kube-controller-mananger、kube-scheduler、kubelet、kube-proxy、以及kubectl作為客戶端連接kube-apiserver
2.1 對於kubectl來說
[root@gzbh-hygon0000005.gzbh ~]# md5sum /root/.kube/config 3974cac839f740cf2fd132d0930b292c /root/.kube/config [root@gzbh-hygon0000005.gzbh ~]# md5sum /etc/kubernetes/admin.conf 3974cac839f740cf2fd132d0930b292c /etc/kubernetes/admin.conf 看見沒有,md5都一模一樣,內容完全一致 admin.conf拷貝到了/root/.kube/config,因為kubectl固定去當前用戶家目錄下找配置
2.2 對於其他組件來說:
新建一個文件/etc/kubernetes/kubeconfig(內容同admin.conf),配置好vip,該文件就給kube-controller-mananger、kube-scheduler、kubelet、kube-proxy用了,大家作為客戶端都一樣
這些組件kube-controller-mananger、kube-scheduler、kubelet、kube-proxy的配置中都會指定
--kubeconfig=/etc/kubernetes/kubeconfig
二 該博客中的證書方案
該方案需要修正,請參考方案一,然后方案一的基礎上加入:TLS bootstrapping 簡化kubelet證書制作
1、所有的證書都由一個ca頒發
2、etcd就建一套證書,用作服務端與peer
3、kube-apiserver一套證書,用作etcd的客戶端,用作apiserver自己的服務端
kube-apiserver開啟了簡單認證:各組件與API Server之間的通信仍然采用HTTPS,但不采用CA數字證書,這種認證機制與CA證書相比,安全性很低,不建議生產使用
# vim /opt/kubernetes/ssl/basic-auth.csv # 該文件可以考慮刪掉試試 admin,admin,1 readonly,readonly,2
cat > /usr/lib/systemd/system/kube-apiserver.service << EOF
--basic-auth-file=/opt/kubernetes/ssl/basic-auth.csv \ # 該配置可以考慮刪掉試試
4、kubelet的證書:TLS bootstrapping 簡化kubelet證書制作
原理:https://www.cnblogs.com/linhaifeng/articles/15167217.html
配置
https://mritd.com/2018/01/07/kubernetes-tls-bootstrapping-note/#5-3%E3%80%811-7-TLS-bootstrapping-%E9%85%8D%E7%BD%AE
