简述Kubernetes Headless Service?

悬赏园豆:50 [已解决问题]

今天在阅读 k8s 的资料时发现 k8s 中有个神奇东东叫 headless service ,俗话说神龙见首不见尾,而它却是见尾不见首,这就究竟是什么东东?请知道的园友快快道来。

这也是一种通过 dns 解析实现负载均衡的方式

我们来说说 Kubernetes 的服务发现。那么首先这个大前提是同主机通信以及跨主机通信都是 ok 的,即同一 Kubernetes 集群中各个 Pod 都是互通的。这点是由更底层的方案实现,包括 docker0/CNI 网桥、Flannel vxlan/host-gw 模式等,在此篇就不展开讲了。

在各 Pod 都互通的前提下,我们可以通过访问 podIP 来调用 Pod 上的资源,那么离服务发现还有多少距离呢?首先 Pod 的 IP 不是固定的,另一方面我们访问一组 Pod 实例的时候往往会有负载均衡的需求,那么 Service 对象就是用来解决此类问题的。

Service 首先解决的是集群内通信的需求,首先我们编写一个普通的 deployment:

这个应用干的事儿就是访问它是返回自己的 hostname,并且每个 Pod 都带上了 APP 为 hostnames 的标签。

那么我们为这些 pod 编写一个普通的 Service:

我们之前讲了我们通过 NodePort 的方式将 nginx-ingress 暴露出去了,而这时候我们 Ingress 配置又希望通过 来访问到后端 Pod,那么首先 这个域名得指到任意一台宿主机 Ip:nodePort上,请求到达 nginx-ingress 之后再转发到各个后端 Service 上。当然,暴露

我们最后来试一下请求:

可以看到 Nginx Ingress controller 已经为我们成功将请求转发到了对应的后端 Service。而当请求没有匹配到任何一条 ingress rule 的时候,理所当然我们会得到一个 404。

至此,Kubernetes 的容器网络是怎么实现服务发现的已经讲完了,而服务发现正是微服务架构中最核心的问题,解决了这个问题,那么使用 Kubernetes 来实现微服务架构也就实现了一大半。

  • 一、Service 对于kubernetes整个集群来说,Pod的地址也可变的,也就是说如果一个Pod因为某些原因...

  • 我们来说说 kubernetes 的服务发现。那么首先这个大前提是同主机通信以及跨主机通信都是 ok 的,即同一 ...

  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...

  • 首先介绍下自己的背景: 我11年左右入市到现在,也差不多有4年时间,看过一些关于股票投资的书籍,对于巴菲特等股神的...

  • 不知不觉易趣客已经在路上走了快一年了,感觉也该让更多朋友认识知道易趣客,所以就谢了这篇简介,已做创业记事。 易趣客...

  • 我要回帖

    更多关于 kubernetes是什么意思 的文章

     

    随机推荐