初识headless类型的service

第一次使用rancher搭建了一个k8s集群,迫不及待地按照官方文档开始新增workload,ingress进行测试,使用自己地代码自己打包的镜像进行简单的测试。在新增一个ingressA之后,在service discovery tab中看到自动也给我新建了一个serviceA,自己在集群中再启动了一个ubuntu的镜像,尝试着直接curl serviceA 却发现一直报错80端口拒绝访问。我的后端服务是8080端口,可是在ingressA和这个servuceA中我明明都加了端口映射的,即targetPort=8080,port=80,serviceA的类型也是ClusterIP的,按照kubernetes的官方介绍来看我在集群内部访问这个服务应该是用80端口才对,然而却一直报80端口拒绝访问。然后使用curl serviceA:8080,竟然意外地访问通了!然后使用kubectl describe svc serviceA查看详细信息的时候才发现这个service的clusterip竟然是none。接着在kubernetes官方查看service的描述,才发现一个关键词:headless

开始研究headless类型的service

查看官方文档,发现这种类型的service主要是用来返回一系列ip地址的,所谓的这种类型的service只是新增了一条dns记录,不会进行负载均衡,也不会走kubeproxy,似懂非懂的查找了一些列资料之后终于找到了一篇描述的比较详细的文章https://medium.com/swlh/discovering-running-pods-by-using-dns-and-headless-services-in-kubernetes-7002a50747f4

headless类型的service之我的理解



即新增这种类型的service的时候,会在集群内部新增一条dns记录,这条dns记录表示通过这个服务名字可以访问到的后端服务ip地址(一组pod的内部ip地址,endpoints),通过nslooklook serviceA 或者dig +search serviceA命令可以查看到该条dns记录

当时也还是不明白返回这样一条dns记录有什么用,后边才明白,在程序内部可以通过这个服务名称进行dns解析得到一组ip地址,然后在自己的程序内部进行比如负载均衡流量控制之类的操作,比如返回的有三个pod的redis的地址,redis客户端程序可以自定义连接建立的算法,自己决定某个时刻连接哪个ip的服务。有的时候恰好就有这种的需求,比如redis、mongodb集群,这种需要客户端自定义负载均衡算法和管理连接,瞬间清晰了。

System.Net.IPAddress[] ipAddresses = Dns.GetHostAddresses("serviceA");
string connectionString = "";
foreach(IPAddress in ipAddresses)
{
if(connectionString = "")
connectionString = "mongodb://";
else
connectionString += ",";
connectionString += $"{IPAddress.ToString()}:27017";
}
connectionString += "/database";
var client = new MongoClient(connectionString);

最新文章

  1. C#开源日志Nlog入门
  2. 嵌入式文件I/O操作
  3. (整理)IIS 7 503 "service unavailable" errors
  4. Log4Net简单使用
  5. poj 3273 Monthly Expense(贪心+二分)
  6. linux 客户端与linux服务器端连接与文件上传下载
  7. git checkout
  8. Xcode7 低版本iOS系统上下有黑边的问题
  9. asp.net,mvc4,mysql数据库,Ef遇到问题集合
  10. Inception体验之安装
  11. linux服务基础之DNS正反向解析、主从同步、子域授权及视图
  12. 【tmos】字段update_time如何动态的更新
  13. 配置firewalld端口转发
  14. Spring RPC 入门学习(3)-插入Student对象
  15. Qt__文件打开保存对话框(QFileDialog)
  16. [sh]basename&dirname截取路径和文件名&case参数选项
  17. jvm 内存溢出问题排查方法
  18. Web服务器讲解与JavaWeb应用部署(本机,以Tomcat为例)
  19. lua 按拉分析与合成
  20. 【咸鱼教程】EUI多图片滑动组件ScrollView

热门文章

  1. 使用hutool工具导出excel,使用jodd工具压缩流,使用oss上传流
  2. Laravel + Swoole 打造IM简易聊天室
  3. MySQL 数据排序 order by
  4. Vue | 路由守卫面试常考
  5. IDA PRO:庆祝成立创新 30 周年
  6. C语言:编译具体过程及隐藏
  7. fork、父进程和子进程
  8. Python+API接口测试框架设计(pytest)
  9. Mybatis order by 动态传参出现的一个小bug
  10. 【JavaWeb】请求和响应Request&Response