十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂(yōu)售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹“如何在kubernetes上部署consul集群”,在日常操作中,相信很多人在如何在kubernetes上部署consul集群?jiǎn)栴}上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何在kubernetes上部署consul集群”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)防城港,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢(xún)建站服務(wù):13518219792
consul 集群的三個(gè)節(jié)點(diǎn)部署方式使用 StatefulSet
consul集群成員之間使用TLS進(jìn)行安全通信 TLS and encryption keys
本教程利用了Kubernetes 1.7.0和更高版本的特性.
kubernetes 1.7.x
下客戶(hù)端必須安裝在本教程所使用的機(jī)器上:
consul 0.9.x
cfssl and cfssljson 1.2
Clone this repo:
git clone https://github.com/nicklv/consul_cluster_on_kubernetes.git
進(jìn)入到 consul-on-kubernetes 目錄:
cd consul-on-kubernetes
Consul集群中成員之間的RPC通信使用TLS進(jìn)行加密。通過(guò)以下命令初始化CA證書(shū):
cfssl gencert -initca ca/ca-csr.json | cfssljson -bare ca
使用以下命令創(chuàng)建 TLS 證書(shū) 和 私有密鑰:
cfssl gencert \ -ca=ca.pem \ -ca-key=ca-key.pem \ -config=ca/ca-config.json \ -profile=default \ ca/consul-csr.json | cfssljson -bare consul
執(zhí)行完以上命令之后,在當(dāng)前目錄你應(yīng)該看到以下證書(shū)文件:
ca-key.pem ca.pem consul-key.pem consul.pem
Gossip communication Consul 集群成員之間使用共享的加密密鑰進(jìn)行加密通信。使用以下命令生成加密密鑰:
GOSSIP_ENCRYPTION_KEY=$(consul keygen)
Consul集群將通過(guò)CLI標(biāo)志、TLS證書(shū)和配置文件來(lái)完成配置,這些內(nèi)容通過(guò)Kubernetes的configmaps和secrets來(lái)存儲(chǔ)。
將 gossip 加密密鑰 和 TLS 證書(shū) 存儲(chǔ)在kubernetes的 Secret中:
kubectl create secret generic consul \ --from-literal="gossip-encryption-key=${GOSSIP_ENCRYPTION_KEY}" \ --from-file=ca.pem \ --from-file=consul.pem \ --from-file=consul-key.pem將Consul集群使用的配置文件存儲(chǔ)在kubernetes的 ConfigMap中:
kubectl create configmap consul --from-file=configs/server.json
kubectl create -f pvc/pvc.yaml
通過(guò)創(chuàng)建一個(gè)service來(lái)暴露Consul 集群功能:
kubectl create -f services/consul.yaml
通過(guò)部署StatefulSet(有狀態(tài)副本集)來(lái)啟動(dòng)Consul集群的3個(gè)實(shí)例節(jié)點(diǎn):
kubectl create -f statefulsets/consul.yaml
所有的Consul節(jié)點(diǎn)都會(huì)被創(chuàng)建,在進(jìn)入下一步操作之前,先驗(yàn)證所有的節(jié)點(diǎn)都處在正常的 Running 狀態(tài),執(zhí)行以下命令可以看到如下結(jié)果:
kubectl get pods
NAME READY STATUS RESTARTS AGE consul-0 1/1 Running 0 50sconsul-1 1/1 Running 0 29sconsul-2 1/1 Running 0 15s
在這個(gè)環(huán)節(jié),Consule 集群的所有節(jié)點(diǎn)都已經(jīng)啟動(dòng)。為了確定每個(gè)節(jié)點(diǎn)都已經(jīng)正常的工作,可以通過(guò)查看日志的命令,查看每個(gè)集群的成員狀態(tài)。
kubectl logs consul-0
(這一步可不執(zhí)行)可以使用Consul CLI檢查consul集群的健康狀態(tài),可以在新的命令窗口使用port-forward模式來(lái)通過(guò)IP訪問(wèn),在本教程的中我們的測(cè)試環(huán)境申請(qǐng)了域名,通過(guò)花生殼支持外網(wǎng)訪問(wèn)。
kubectl port-forward consul-0 8400:8400
Forwarding from 127.0.0.1:8400 -> 8400Forwarding from [::1]:8400 -> 8400
(如果不執(zhí)行上一步命令,可以通過(guò)以下命令進(jìn)入到consul-0 pod,kubectl exec -it consul-0 /bin/sh) 執(zhí)行consul members命令查看consul集群所有節(jié)點(diǎn)的狀態(tài)。
consul members
Node Address Status Type Build Protocol DC consul-0 10.244.2.197:8301 alive server 0.9.1 2 dc1 consul-1 10.244.1.231:8301 alive server 0.9.1 2 dc1 consul-2 10.244.2.198:8301 alive server 0.9.1 2 dc1
目前Consul集群的UI站點(diǎn)不支持權(quán)限驗(yàn)證,所以為了安全起見(jiàn)不建議在生產(chǎn)環(huán)境把Web UI訪問(wèn)暴露到外網(wǎng)。訪問(wèn)Web-UI有兩種訪問(wèn)方式:
通過(guò)port-forward把consul-0節(jié)點(diǎn)的8500端口暴露出來(lái),這種方式類(lèi)似nodeport模式,所有訪問(wèn)consul-0節(jié)點(diǎn)所在服務(wù)器8500端口的流量都被轉(zhuǎn)發(fā)到consul-0。弊端,節(jié)點(diǎn)重啟之后所在服務(wù)器節(jié)點(diǎn)發(fā)生變化的話(huà)訪問(wèn)IP也跟著變化。建議在實(shí)驗(yàn)環(huán)境使用這種模式。
kubectl port-forward consul-0 8500:8500
執(zhí)行以上命令之后,通過(guò)URL地址 http://127.0.0.1:8500訪問(wèn)consul集群web管理界面。
通過(guò)Ingress暴露外網(wǎng)訪問(wèn),我們配置了一個(gè) consul.xxxx.cn 的域名,暴露到了外網(wǎng)。這種模式,外網(wǎng)可以無(wú)限制進(jìn)行consul集群web管理界面訪問(wèn),所以建議在開(kāi)發(fā)或者測(cè)試環(huán)境使用,不要在生產(chǎn)環(huán)境使用該模式。
運(yùn)行cleanup腳本,會(huì)自動(dòng)清除掉所有正在運(yùn)行的consul相關(guān)的kubernetes資源。備注:根據(jù)實(shí)際情況調(diào)整下 cleanup腳本。
bash cleanup
到此,關(guān)于“如何在kubernetes上部署consul集群”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!