Rancher k8s集群服务发现
- 前言
- 一、添加DNS
- 1.外部IP方式
- 2.外部域名方式
- 3.创建完成(如下)
- 二、校验服务是否正常调用
- 1. 以java为例创建一个服务调用者
- 2.部署服务
- 三、调用服务验证结果
前言
服务发现:什么是服务发现?随着微服务架构越来越火热,各个服务之间的配合调用更加紧密。像的通过ip+端口的方式来做服务间的相互调用就会显得非常乏力。因为ip和端口是受部署环境影响的。为此我们需要一个中介来整合各个服务之间的互相调用,这时就用到了服务发现机制。服务发现机制现在开源的也有很多,如nacos、console、eureka等等。然而当我们使用容器部署服务时,k8s也提供了此类功能。在Rancher中配置k8s集群服务发现更是相当简便,下面做几个示例供大家参考
一、添加DNS
说明:正常我们部署一个http服务,服务会自动注册。不需要我们单独为其添加DNS,除非特殊用途才需要添加。已经注册的服务,集群内部可以通过服务名访问该服务。
1.外部IP方式
外部IP是指集群当前k8s集群以外的服务IP地址,可以支持我们集群内服务跨网或者跨集群调用。
2.外部域名方式
外部域名是指集群当前k8s集群以外的服务域名地址,可以支持我们集群内服务跨网调用。 注意:不能使用负载均衡生成的域名,程序内部会报500错误
如果服务需要跨集群访问,服务内部可以直接访问负载均衡生成的域名
服务别名、工作负载、pod 这些就不单独贴图了。选项是固定的,只要服务或负载部署正确只需要定义名称即可。
3.创建完成(如下)
二、校验服务是否正常调用
1. 以java为例创建一个服务调用者
queue、haproxy 分别就是上面我们创建的DNS服务名称
@RestController
public class TestController {
@Autowired
RestTemplate restTemplate;
//外部域名
@RequestMapping("/queue")
public Object get(){
return restTemplate.getForObject("http://queue:88/configservice/v1/healthCheck",String.class);
}
//外部ip
@RequestMapping("/ip")
public Object get2(){
return restTemplate.getForObject("http://haproxy:10602/haproxy-stats",String.class);
}
}
2.部署服务
至于镜像打包、上传私有镜像库。暂且跳过,有需要的童鞋请查阅资料吧。在这里直接由服务部署开始了。
三、调用服务验证结果
分别调用 http://192.168.8.51:30212/nginx 跟 http://192.168.8.51:30212/queue 返回结果如下,至此Rancher K8s集群服务发现功能验证完成