k8s部署-20-k8s的服务发现原理,k8s有几种服务发现规则

图片

到现在为止,我们分别掌握了k8s部署、k8s镜像存储之harbor高可用,那么接下来是不是就应该实操了呢?不过不着急,实操之前我们要考虑下,还需要掌握什么呢?

是不是通信呀,这所有的前提都是在可以通信的情况下进行的,彼此之间如何通信,通信的方式是什么,本文就来介绍下。

图片

情形

我们集群的通信方式,根据不同的条件,可以分为以下三种方式:

1、集群内相互通信;

2、集群内访问集群外;

3、集群外访问集群内。

本文就按照这三种场景,每种场景分别使用不同的方法,在实际情况中根据需要来选择。

集群内相互通信

1、DNS+ClustreIP

图片

图释:

如果podA访问podB,由于pod的IP是会经常发生变化的,所以不能直接配置podB的IP地址,所以k8s提出了一个概念为service,它包含了一个clusterIP,也就是图中的10.1.1.1,那么这样子是不是就可以了呢?显然还是不太好,因为我们配置IP地址也很麻烦,这个时候service又提供了一个dns,可以理解为别名,这样我们直接配置dns就好了。

2、headless(去中心化)

图片

图释:

我们在部署整个架构的时候,是不是经常会遇到一些去中心化的服务,比如zookeeper服务,本意是为了保证高可用的,但是这样子就面临一个问题,我们应该访问谁呢?这时候k8s就提出了一个概念,hadeless类型的service,这个服务的作用是什么呢,你可以理解为透传,就是当PodA访问这PodB的时候,他就会给你返回一个列表,podA自己做选择访问谁。

集群内访问集群外

1、Ip+Port

图片

图释:

集群内的PodA直接通过IP和port地址,访问集群外的数据库就行。

2、endprint

图片

图释:

如果有100个服务要访问外部的mysql呢?难道我们配置100次吗?万一哪天mysql的IP地址变了,我们怎么办呢?这个时候就引入了一个endpring。使用endprint来做代理,它有一个和它同名的service,再往上面呢,它还有一个DNS,以供内部使用,我们的endpring上面配置上外部服务的地址。

这个有什么好处呢?好处就是内部的服务访问的地址不会变,有变化的仅仅是endpring,有问题的时候我们只需要修改endpring即可立刻恢复服务。

集群外访问集群内

剩余内容请转至VX公众号 “运维家” ,回复 “127” 查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值