前言

服务发现:什么是服务发现?随着微服务架构越来越火热,各个服务之间的配合调用更加紧密。像的通过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集群服务发现功能验证完成
在这里插入图片描述

在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐