公司项目私有化部署,甲方要求服务间调用使用K8sSVC完成服务间调用。需要把原有基于springboot+nacos 服务注册发现改造为k8ssvc完成服务间注册发现。
首先了解一下k8s svc:
K8S核心概念之SVC(易混淆难理解知识点总结)_k8s svc_倾听铃的声的博客-CSDN博客
创建SVC
对集群内部暴露服务的模式--Cluster
apiVersion: v1kind: Servicemetadata: labels: app: my-dep name: my-depspec: ports: - port: 8000 #设定Serivce对集群内部暴露的端口. protocol: TCP targetPort: 80 #设定Pod的端口,即Pod网络的端口。 selector: app: my-dep type: ClusterIP
对集群外部暴露服务的模式--NodePort
apiVersion: v1kind: Servicemetadata: labels: app: my-dep name: my-depspec: ports: - port: 8000 #设定Serivce对集群内部暴露的端口. protocol: TCP targetPort: 80 #设定Pod的端口,即Pod网络的端口。 selector: app: my-dep type: NodePort
注:如果不在yaml文件当中指定NodePort端口,则NodePort是在Node节点上的30000-32767之间随机暴漏端口
代码改造:
1. 原有fegin调用修改为手动创建http请求。
我这里是写了个自定义注解;
注:如果需要具体实现方法可私聊,我私发给你。
2.k8s 需要配置对应的svc.配置如下:
//版本号
apiVersion: v1
//svc
kind: Service
metadata:
//服务名
name: log
//服务命名空间
namespace: default
spec:
//暴露类型
type: ClusterIP
selector:
//服务名
app: log
ports:
//端扣信息
- port: 80
protocol: TCP
targetPort: 80
注意:服务端口一定要与配置端口保持一致。
配置完成后即可通过 name.namespace:80/接口地址 完成调用