中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在kubernetes上部署consul集群

發布時間:2022-01-04 17:30:29 來源:億速云 閱讀:157 作者:iii 欄目:云計算

這篇文章主要介紹“如何在kubernetes上部署consul集群”,在日常操作中,相信很多人在如何在kubernetes上部署consul集群問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何在kubernetes上部署consul集群”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

預覽

  • consul 集群的三個節點部署方式使用  StatefulSet

  • consul集群成員之間使用TLS進行安全通信  TLS and encryption keys

預備知識

本教程利用了Kubernetes 1.7.0和更高版本的特性.

  • kubernetes  1.7.x

下客戶端必須安裝在本教程所使用的機器上:

  • consul  0.9.x

  • cfssl  and  cfssljson  1.2

使用

Clone this repo:

git clone https://github.com/nicklv/consul_cluster_on_kubernetes.git

進入到 consul-on-kubernetes 目錄:

cd consul-on-kubernetes

生成 TLS 證書

Consul集群中成員之間的RPC通信使用TLS進行加密。通過以下命令初始化CA證書:

cfssl gencert -initca ca/ca-csr.json | cfssljson -bare ca

使用以下命令創建 TLS 證書 和 私有密鑰:

cfssl gencert \  -ca=ca.pem \  -ca-key=ca-key.pem \  -config=ca/ca-config.json \  -profile=default \
  ca/consul-csr.json | cfssljson -bare consul

執行完以上命令之后,在當前目錄你應該看到以下證書文件:

ca-key.pem
ca.pem
consul-key.pem
consul.pem

生成 Consul Gossip 加密密鑰

Gossip communication  Consul 集群成員之間使用共享的加密密鑰進行加密通信。使用以下命令生成加密密鑰:

GOSSIP_ENCRYPTION_KEY=$(consul keygen)

使用以下命令生成Consul 集群使用的Secret 和 Configmap

Consul集群將通過CLI標志、TLS證書和配置文件來完成配置,這些內容通過Kubernetes的configmaps和secrets來存儲。

將 gossip 加密密鑰 和 TLS 證書 存儲在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集群使用的配置文件存儲在kubernetes的 ConfigMap中:

kubectl create configmap consul --from-file=configs/server.json

在創建Consul service和statefulSet之前,先創建Consul集群使用到的pv(persistVolume)持久化存儲卷和pvc(persistVolumeClaim)持久化存儲卷聲明

kubectl create -f pvc/pvc.yaml

通過kubectl 命令創建Consul 集群服務

通過創建一個service來暴露Consul 集群功能:

kubectl create -f services/consul.yaml

創建 Consul 集群 StatefulSet

通過部署StatefulSet(有狀態副本集)來啟動Consul集群的3個實例節點:

kubectl create -f statefulsets/consul.yaml

所有的Consul節點都會被創建,在進入下一步操作之前,先驗證所有的節點都處在正常的 Running 狀態,執行以下命令可以看到如下結果:

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

核實節點狀態

在這個環節,Consule 集群的所有節點都已經啟動。為了確定每個節點都已經正常的工作,可以通過查看日志的命令,查看每個集群的成員狀態。

kubectl logs consul-0

(這一步可不執行)可以使用Consul CLI檢查consul集群的健康狀態,可以在新的命令窗口使用port-forward模式來通過IP訪問,在本教程的中我們的測試環境申請了域名,通過花生殼支持外網訪問。

kubectl port-forward consul-0 8400:8400
Forwarding from 127.0.0.1:8400 -> 8400Forwarding from [::1]:8400 -> 8400

(如果不執行上一步命令,可以通過以下命令進入到consul-0 pod,kubectl exec -it consul-0 /bin/sh) 執行consul members命令查看consul集群所有節點的狀態。

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 集群Web UI

目前Consul集群的UI站點不支持權限驗證,所以為了安全起見不建議在生產環境把Web UI訪問暴露到外網。訪問Web-UI有兩種訪問方式:

  1. 通過port-forward把consul-0節點的8500端口暴露出來,這種方式類似nodeport模式,所有訪問consul-0節點所在服務器8500端口的流量都被轉發到consul-0。弊端,節點重啟之后所在服務器節點發生變化的話訪問IP也跟著變化。建議在實驗環境使用這種模式。

    kubectl port-forward consul-0 8500:8500
    執行以上命令之后,通過URL地址 http://127.0.0.1:8500訪問consul集群web管理界面。
  2. 通過Ingress暴露外網訪問,我們配置了一個 consul.xxxx.cn 的域名,暴露到了外網。這種模式,外網可以無限制進行consul集群web管理界面訪問,所以建議在開發或者測試環境使用,不要在生產環境使用該模式。

清理

運行cleanup腳本,會自動清除掉所有正在運行的consul相關的kubernetes資源。備注:根據實際情況調整下 cleanup腳本。

bash cleanup

到此,關于“如何在kubernetes上部署consul集群”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐城市| 顺昌县| 偃师市| 外汇| 聂荣县| 措美县| 吉安县| 通化市| 马尔康县| 平陆县| 南川市| 唐河县| 神木县| 阿拉善右旗| 囊谦县| 双辽市| 宾阳县| 景洪市| 屯留县| 吉林省| 政和县| 全南县| 邵武市| 汶上县| 平邑县| 海林市| 铁力市| 游戏| 宜君县| 牟定县| 崇州市| 乐业县| 炉霍县| 涪陵区| 南安市| 特克斯县| 陵川县| 镇康县| 潜江市| 台湾省| 衡山县|