Kubernetes集群需要存儲(chǔ)包括節(jié)點(diǎn)/組件/POD/Deployment/Service等各種對(duì)象相關(guān)的大量數(shù)據(jù)。使用ETCD存儲(chǔ)可以實(shí)現(xiàn)集群的持久化運(yùn)作。
為便于說(shuō)明,將主節(jié)點(diǎn)上部署ETCD實(shí)例。在主節(jié)點(diǎn)上進(jìn)入上述KubePre目 錄,執(zhí) 行“vi config.properties”命令,在該配置文 件 的“ETCD_ENDPOINTS=”行中修改ETCD路徑信息,例如將其修改為“ETCD_ENDPOINTS=https://172.16.1.101:2379”。
接下來(lái)需要在所有節(jié)點(diǎn)上安裝CFSSL工具,用來(lái)生成證書(shū)和密鑰文件。執(zhí)行“wget-q --show-progress -https-only --timestamping https://pkg.cfssl.org/r1.2/cfssl_linux=amd64 https://pkg.cfssl.org/r1.2/cfssljson_linuxamd64”命令,下載該工具。執(zhí) 行“chmod +x cfssl_linux-amd64 cfssljson_linux-amd64”命 令,將 其修改為可執(zhí)行權(quán)限。執(zhí)行“mv cfssl_linux-amd64 /usr/local/bin/cfssl”,“mv cfssljson_linux-amd64 /usr/local/bin/cfssljson”命令移動(dòng)到Bin目錄,便于之后的使用。
在主節(jié)點(diǎn)生成根證書(shū),執(zhí) 行“mkdir -p /etc/Kubernetes/ca”命 令,創(chuàng)建所需的目錄。執(zhí)行“cp~/KubePre/target/ca/ca-config.json /etc/Kubernetes/ca”,“cp ~/KubePre/target/ca/cascr.json /etc/Kubernetes/ca”命令,準(zhǔn)備生成證書(shū)的配置文件。執(zhí)行“cd /etc/Kubernetes/ca”,“cssl gencert -initca ca-scr.json | cfssljson -bare ca”命令,生產(chǎn)所需的私鑰和證書(shū)文件,其名稱分別為“ca-key.pem”和“ca.pem”。
因?yàn)镋TCD節(jié)點(diǎn)是用于存儲(chǔ)數(shù)據(jù)的,必須得到有效保護(hù),這就必然需要為其增加安全認(rèn)證功能。ETCD節(jié)點(diǎn)為其他服務(wù)提供訪問(wèn),所以需要驗(yàn)證其他服務(wù)身份,這就需要一個(gè)標(biāo)識(shí)自己監(jiān)聽(tīng)服務(wù)的Server證書(shū)。當(dāng)有多個(gè)ETCD節(jié)點(diǎn)的話,也需要客戶端證書(shū)和ETCD集群的其他節(jié)點(diǎn)交互。執(zhí)行“mkdir -p/etc/Kubernetes/ca/etcd”命令,創(chuàng)建所需目錄存儲(chǔ)ETCD證書(shū)。
執(zhí) 行“cp ~/KubePre/target/ca/etcd/etcd-scr.json /etc/Kubernetes/ca/etcd”、“cd /etc/Kubernetes/ca/etcd”、“cfssl gencert -ca=/etc/Kubernetes/ca/ca-key.pem-ca-key=/etc/Kubernetes/ca/etcd -config=/etc/Kubernetes/ca/ca-config.json -profile=Kubernetes etcd-csr.json | cfssljson-bare etcd ”命令,準(zhǔn)備生成證書(shū)的配置文件,并使用根證書(shū)簽發(fā)etcd證書(shū),得到所需的私鑰和證書(shū),名稱分別為“etcd-key.pem”和“etcd.pem”。
因?yàn)樯厦嫔闪怂枧渲梦募?,并保存在“KubePre/target”目錄,所以進(jìn)入該文件夾,將“master-node”目錄中的“etcd.service”文件復(fù)制到“/lib/systemd/system”目 錄。 執(zhí) 行“systemctl enable etcd.service”、“mkdir -p /var/lib/etcd”、“service etcd start”命令啟動(dòng)ETCD服務(wù)。
執(zhí)行“netstat -ntlp”命令,在網(wǎng)絡(luò)連接信息列表中應(yīng)看到2379/2380端口為開(kāi)啟狀態(tài)。執(zhí)行“ETCDCTRL_API=3 etcdctl -endpoints=htt ps://172.16.1.101:2379 -cacert=/etc/Kubernetes/ca/ca.pem --cert=/etc/Kubernetes/etcd/etcd.pem-key=/etc/Kubernetes/ca/etcd/etcd-key.pem endpoint health”命令驗(yàn)證ETCD服務(wù)。