示例代碼 https://github.com/CodingSoldier/java-learn/tree/master/project/k8s-spring-cloud-csdn
csdn下載地址(積分似乎無法修改) https://download.csdn.net/download/u010606397/11245542
在本項目中,會部署eureka、gateway、app01、app02
先看下eureka的yaml配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-eureka-server
spec:
# 註冊中心只能部署一個pod
replicas: 1
selector:
matchLabels:
app: eureka-server
template:
metadata:
labels:
app: eureka-server
spec:
containers:
- name: eureka-server
image: codingsoldier/eureka-server:latest
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 10001
---
apiVersion: v1
kind: Service
metadata:
# service的名字非常重要,必須跟application.properties的eureka.client.serviceUrl.defaultZone=http://server-eureka-server:10001/eureka/ 中的域名相同
name: server-eureka-server
spec:
selector:
app: eureka-server
# 使用NodePort類型的Service,綁定service的10001端口到宿主機,以便在物理機瀏覽器上看註冊中心的信息
type: NodePort
ports:
- name: http
port: 10001
targetPort: 10001
# 暴露端口取值範圍是30000-32767
nodePort: 30001
重要的有兩點
1、註冊中心pod數量只能爲1個(只是演示,就這麼着了。實際部署中可以部署集羣,這太麻煩了)
2、Service的名字是 eureka.client.serviceUrl.defaultZone 的域名。見下圖
補充,image用的是我的倉庫,請改成自己的,在自己的機器上打成鏡像
gateway、app01、app02的註冊中心配置爲
eureka.client.serviceUrl.defaultZone=http://server-eureka-server:10001/eureka/
爲了能夠在物理機上調用gateway,將gateway的service設置爲NodePort類型(實際部署時,應該通過ingress或者雲廠商提供的loadBlance調用網關。ngress太複雜了,不想搞)
使用步驟
1、把jar包上傳到所有node節點,打成鏡像
2、在主節點部署服務
app01的/test01/test02/post接口會使用feign調用app02,調一下這個接口。