K8S容器HeadlessService间动态IP通信
文件网址:https://www.kubebiz.com/KubeBiz/MongoDB?k8sv=v1.20
使用文件网址中提供的yaml文件安装三节点的mongodb集群,其service是headless service,因为对应的service.yaml文件中: spec.clusterIP:None


和普通Service相比,Headless Service没有ClusterIP(所以没有负载均衡),它会给一个集群内部的每个成员提供一个唯一的DNS域名来作为每个成员的网络标识,集群内部成员之间使用域名通信。无头服务管理的域名是如下的格式:
$(service_name).$(k8s_namespace).svc.cluster.local
其中的 "cluster.local"是集群的域名,除非做了配置,否则集群域名默认就是cluster.local。
statefulSet.spec.serviceName,当serviceName 配置成与headless service的Name 相同的时候, 可以通过 {hostName}.{headless service}.{namespace}.svc.cluster.local 解析出节点IP。hostName 由 {statefulSet name}-{编号} 组成。
StatefulSet下创建的每个Pod,得到一个对应的DNS子域名,格式如下:
{statefulSet name}-{编号}.{headless service}.{namespace}.svc.cluster.local
放在当前mongoDB中,对应的DNS子域名分别是:
mongo-0.mongo.my-space.svc.cluster.local
mongo-1.mongo.my-space.svc.cluster.local
mongo-2.mongo.my-space.svc.cluster.local
查看ednpoints
# kubectl describe service mongo -n my-space
Name: mongo
Namespace: my-space
Labels: name=mongo
Annotations: <none>
Selector: role=mongo
Type: ClusterIP
IP Families: <none>
IP: None
IPs: None
Port: <unset> 27017/TCP
TargetPort: 27017/TCP
Endpoints: 10.1.112.241:27017,10.3.7.207:27017,10.3.7.208:27017
Session Affinity: None
ping headless service的结果,会发现是从3个当中任选一个来进行响应的
/ # ping mongo.my-space.svc.cluster.local
PING mongo.my-space.svc.cluster.local (10.3.7.207): 56 data bytes
64 bytes from 10.3.7.207: seq=0 ttl=63 time=0.632 ms
64 bytes from 10.3.7.207: seq=1 ttl=63 time=0.267 ms
64 bytes from 10.3.7.207: seq=2 ttl=63 time=0.161 ms
64 bytes from 10.3.7.207: seq=3 ttl=63 time=0.149 ms
64 bytes from 10.3.7.207: seq=4 ttl=63 time=0.150 ms
^C
--- mongo.my-space.svc.cluster.local ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.149/0.271/0.632 ms
单独ping 每一个pods的DNS域名:
/ # ping mongo-0.mongo.my-space.svc.cluster.local
PING mongo-0.mongo.my-space.svc.cluster.local (10.1.112.241): 56 data bytes
64 bytes from 10.1.112.241: seq=0 ttl=62 time=1.358 ms
64 bytes from 10.1.112.241: seq=1 ttl=62 time=0.917 ms
64 bytes from 10.1.112.241: seq=2 ttl=62 time=0.945 ms
64 bytes from 10.1.112.241: seq=3 ttl=62 time=0.717 ms
^C
--- mongo-0.mongo.my-space.svc.cluster.local ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.717/0.984/1.358 ms
/ # ping mongo-1.mongo.my-space.svc.cluster.local
PING mongo-1.mongo.my-space.svc.cluster.local (10.3.7.207): 56 data bytes
64 bytes from 10.3.7.207: seq=0 ttl=63 time=0.526 ms
64 bytes from 10.3.7.207: seq=1 ttl=63 time=0.156 ms
64 bytes from 10.3.7.207: seq=2 ttl=63 time=0.135 ms
^C
--- mongo-1.mongo.my-space.svc.cluster.local ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.135/0.272/0.526 ms
/ # ping mongo-2.mongo.my-space.svc.cluster.local
PING mongo-2.mongo.my-space.svc.cluster.local (10.3.7.208): 56 data bytes
64 bytes from 10.3.7.208: seq=0 ttl=63 time=0.290 ms
64 bytes from 10.3.7.208: seq=1 ttl=63 time=0.145 ms
64 bytes from 10.3.7.208: seq=2 ttl=63 time=0.198 ms
^C
--- mongo-2.mongo.my-space.svc.cluster.local ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.145/0.211/0.290 ms
K8S容器HeadlessService间动态IP通信的更多相关文章
- kubernetes(k8s)容器编排工具基础概念
Kubernetes (K8s): 中文社区:https://www.kubernetes.org.cn/replication-controller-kubernetes 官网:https://ku ...
- K8s容器编排
K8s容器编排 Kubernetes(k8s)具有完备的集群管理能力: 包括多层次的安全防护和准入机制 多租户应用支撑能力 透明的服务注册和服务发现机制 内建智能负载均衡器 强大的故障发现和自我修复能 ...
- 实体ip 虚拟ip 固定ip 动态ip
实体 IP:在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 位址的定义.一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 207.46.197.101 』这个 IP ...
- 使用Boost asio实现同步的TCP/IP通信
可以先了解一下Boost asio基本概念,以下是Boost asio实现的同步TCP/IP通信: 服务器程序部分,如果想保留套接字之后继续通信,可以动态申请socket_type,保存指针,因为so ...
- 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理
转:http://blog.csdn.net/suhuaiqiang_janlay/article/details/60466333 本人找几篇讲得好的来整理一下. (1)问题的由来: (2)动态ip ...
- IP通信中音频编解码技术与抗丢包技术概要
此文较长,建议收藏起来看. 一.一个典型的IP通信模型 二.Server2Server技术分类 Server2Server这块也是一个专门的领域,这里只简单分个类. 1.同一国家相同运营商之间: 同一 ...
- 2014-10-2 bug更新5 ecshop和ectouch解决动态ip登录超时和购物车清空问题
有客户说登陆网站后台操作的时候,会时不时的掉一下,要重新登陆才能继续操作,自动登出的频率快和时间短,针对这个问题是因为: 购物车问题原因的产生是因为动态IP的SESSEION机制导致很多在公司或者其他 ...
- Linux 静态IP动态IP设置
1.设置动态IP ifconfig eth0 192.168.1.12 设置后立即生效,重启机器后就无效了 2.设置静态IP 编辑文件 /etc/sysconfig/network-scripts/i ...
- 解决Ecshop因为动态ip问题登录后台自动退出
解决Ecshop因为动态ip问题登录后台自动退出 PHP 铁匠 2年前 (2013-07-21) 1130℃ 0评论 修改lib_base.php文件real_ip()函数,添加以下代码即可解 ...
随机推荐
- 没有编辑器时,使用echo更换源
echo "\ deb http://mirrors.aliyun.com/ubuntu/ xenial main deb-src http://mirrors.aliyun.com/ubu ...
- centos更改mac
centos 6更改mac vim /etc/udev/rules.d/70-persistent-net.rules
- NC15665 maze
题目链接 题目 题目描述 小明来到一个由n x m个格子组成的迷宫,有些格子是陷阱,用'#'表示,小明进入陷阱就会死亡,'.'表示没有陷阱.小明所在的位置用'S'表示,目的地用'T'表示. 小明只能向 ...
- S32K148-CAN收发
最近在搞一个转换板开发,大概意思把CAN信号转换成SPI信号,方案有两种:1)通过硬件电路直接把信号的bit位一位一位移给两个集成芯片:2)通过MCU接收CAN信号,再把信号变量转换成SPI信号发送给 ...
- Python网页解析库:用requests-html爬取网页
Python网页解析库:用requests-html爬取网页 1. 开始 Python 中可以进行网页解析的库有很多,常见的有 BeautifulSoup 和 lxml 等.在网上玩爬虫的文章通常都是 ...
- BootStrapBlazor 安装教程--Server模式
使用模板 使用模板是最简单的办法.因为项目模板里已经包含了BootStrapBlazor的所有需要配置的内容. 首先我们安装项目模板: dotnet new -i Bootstrap.Blazor.T ...
- .net6与英雄联盟邂逅之——根据官方LCU API制作游戏助手
看了网上很多自己开发的英雄联盟的小助手工具,当时苦于没有api,自己也想做一个.后来发现了其实拳头本身就提供了LCU API在客户端运行的时候会暴露出来. 现在我们就来了解下工具的实现. 查询数据:h ...
- @DS("slave") 多数据源兼容事务问题解决方案
SpringBoot项目中用到多数据源,在方法上又必须加事务处理,此时可以对使用了@DS的方法或类添加@Transactional并添加事务隔离级别 举例: 1.这是一个方法,方法内需要实现多数据源查 ...
- React报错之组件不能作为JSX组件使用
正文从这开始~ 总览 组件不能作为JSX组件使用,出现该错误有多个原因: 返回JSX元素数组,而不是单个元素. 从组件中返回JSX元素或者null以外的任何值. 使用过时的React类型声明. 返回单 ...
- linux rz上传失败
最近rz上传文件时出现了一次文件上传失败的情况,故搜集了以下资料加强学习 rz -ary --o-sync -a 表示使用ascii码格式传输文件,如果是Dos格式的文件,会转换为unix格式 -r ...