在K8S上部署eureka-server
本文參考地址:https://kuboard.cn/learning/k8s-practice/ocp/eureka-server.html#%E7%90%86%E8%A7%A3eureka-server
一、資源準備
- 代碼參考eureka-server的代碼倉庫
- 構建docker鏡像並推送到倉庫
在 Kubernetes 中部署多個 eureka-server 的實例組成集羣時,主要有如下考慮因素:
- 每個 eureka-server 需要被賦予一個唯一的 id,通過字段 eureka.instance.instance-id 指定。OCP 中,該字段的配置爲 {spring.cloud.client.ip-address}:KaTeX parse error: Expected '}', got 'EOF' at end of input: …on.instance_id:{server.port}}
Kubernetes 爲每一個 Pod 分配一個 IP 地址,此要求可以滿足 - eureka-server 的每一個實例需要知道集羣中其他實例的地址和端口號,通過字段 eureka.client.serviceUrl.defaultZone 指定
請參考 StatefulSet的使用場景 以理解爲何選擇 StatefulSet 部署 eureka
請參考 StatefulSet穩定的網絡ID 以理解 StatefulSet 如何爲其中的 Pod 分配 DNS name - eureka-server 的多個實例之間,不能存在端口衝突
請參考 Kubernetes的網絡模型 以理解 Kubernetes 中如何避免端口衝突
我們在 Kubernetes 上部署 eureka-server 時:
- 使用 StatefulSet 部署 eureka-server,副本數量爲 3
- 使用環境變量覆蓋 eureka.client.service-url.defaultZone 取值,將其設置爲:
http://cloud-eureka-0.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.test.svc.cluster.local:1111/eureka
具體爲什麼設置成這些值,參考StatefulSet穩定的網絡ID 、Kubernetes的網絡模型。
- 使用環境變量覆蓋 eureka.instance.prefer-ip-address 取值,將其設置爲:false
- 爲 eureka-server 創建 Ingress,如果沒有域名可以不創建Ingress
二、部署eureka-server
本教程將 eureka-server 及其他微服務組件部署到 test 名稱空間,並假設您已經創建好了該名稱空間,參考 創建名稱空間
在 Kuboard 界面中進入 test 名稱空間,並點擊頁頭的按鈕 創建工作負載,如下圖所示:
填寫表單:
字段名稱 | 填寫內容 | 備註 |
---|---|---|
服務類型 | StatefulSet | |
服務分層 | 中間件 | |
服務名稱 | eureka | |
服務描述 | 註冊中心 | |
副本數量 | 3 | |
容器名稱 | eureka-server | |
鏡像 | harbor.hld.com/test/eureka:latest | harbor鏡像倉庫鏡像地址 |
抓取策略 | Always | |
環境變量 | eureka.client.service-url.defaultZone=http://cloud-eureka-0.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-1.cloud-eureka.test.svc.cluster.local:1111/eureka,http://cloud-eureka-2.cloud-eureka.test.svc.cluster.local:1111/eureka eureka.instance.prefer-ip-address=false | 填入 kuboard 時環境變量名後面不帶 = |
Service | NodePort:協議 TCP 服務端口 1111節點端口 31111 容器端口 1111 | 可從節點端口訪問 |
Ingress | 域名:xxxxx 路由配置: 映射URL / 服務端口 1111 | 可通過域名訪問 |
- 保存、應用。然後等待完成
三、驗證
按照上面的部署方式,有如下兩種方式可以從瀏覽器訪問 eureka-server 的界面:
- 使用域名: http://cloud-eureka.ocp.demo.kuboard.cn/
- 使用節點端口:http://${任意節點的IP地址}:31111
eureka-server 界面如下圖所示: