文件网址: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通信的更多相关文章

  1. kubernetes(k8s)容器编排工具基础概念

    Kubernetes (K8s): 中文社区:https://www.kubernetes.org.cn/replication-controller-kubernetes 官网:https://ku ...

  2. K8s容器编排

    K8s容器编排 Kubernetes(k8s)具有完备的集群管理能力: 包括多层次的安全防护和准入机制 多租户应用支撑能力 透明的服务注册和服务发现机制 内建智能负载均衡器 强大的故障发现和自我修复能 ...

  3. 实体ip 虚拟ip 固定ip 动态ip

    实体 IP:在网络的世界里,为了要辨识每一部计算机的位置,因此有了计算机 IP 位址的定义.一个 IP 就好似一个门牌!例如,你要去微软的网站的话,就要去『 207.46.197.101 』这个 IP ...

  4. 使用Boost asio实现同步的TCP/IP通信

    可以先了解一下Boost asio基本概念,以下是Boost asio实现的同步TCP/IP通信: 服务器程序部分,如果想保留套接字之后继续通信,可以动态申请socket_type,保存指针,因为so ...

  5. 穿透内网,连接动态ip,内网ip打洞-----p2p实现原理

    转:http://blog.csdn.net/suhuaiqiang_janlay/article/details/60466333 本人找几篇讲得好的来整理一下. (1)问题的由来: (2)动态ip ...

  6. IP通信中音频编解码技术与抗丢包技术概要

    此文较长,建议收藏起来看. 一.一个典型的IP通信模型 二.Server2Server技术分类 Server2Server这块也是一个专门的领域,这里只简单分个类. 1.同一国家相同运营商之间: 同一 ...

  7. 2014-10-2 bug更新5 ecshop和ectouch解决动态ip登录超时和购物车清空问题

    有客户说登陆网站后台操作的时候,会时不时的掉一下,要重新登陆才能继续操作,自动登出的频率快和时间短,针对这个问题是因为: 购物车问题原因的产生是因为动态IP的SESSEION机制导致很多在公司或者其他 ...

  8. Linux 静态IP动态IP设置

    1.设置动态IP ifconfig eth0 192.168.1.12 设置后立即生效,重启机器后就无效了 2.设置静态IP 编辑文件 /etc/sysconfig/network-scripts/i ...

  9. 解决Ecshop因为动态ip问题登录后台自动退出

    解决Ecshop因为动态ip问题登录后台自动退出 PHP  铁匠  2年前 (2013-07-21)  1130℃  0评论 修改lib_base.php文件real_ip()函数,添加以下代码即可解 ...

随机推荐

  1. sudoer文件配置错误修复

    以错误配置权限为例,如果是sudoer文件内容配置错误,替换步骤(4)中相关命令即可 (1)建立两个ssh连接,分别记为A.B (2)A:echo $$获取ID (3)B:pkttyagent --p ...

  2. android studio取消设置代理

    看标题感觉就是一个简单的设置,其实只是个大坑啊 https://www.jianshu.com/p/bb6d2bcdd5b5 android studio内虽然设置了 no proxy,但是没起作用, ...

  3. 论文阅读 A Data-Driven Graph Generative Model for Temporal Interaction Networks

    13 A Data-Driven Graph Generative Model for Temporal Interaction Networks link:https://scholar.googl ...

  4. @ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean

    1. 自定义一个简单 spring-boot 组件 创建 olive-starter 项目 对应的 pom.xml文件如下 <project xmlns="http://maven.a ...

  5. 5-12 Kafka 消息队列

    消息队列(Message Queue) 软件下载 软件下载 MQ_Blog Dubbo远程调用的性能问题 Dubbo调用在微服务项目中普遍存在 这些Dubbo调用都是同步的 "同步" ...

  6. 003 Jwt登录流程图

    用户\角色\权限 用户是一个基本的单位 用户和角色的关系是多对多,所以要有一张保存用户和角色关系的中间表 角色也不能直接决定这个用户能做什么操作,有哪些权限, 需要再关联权限表决定 角色和权限也是多对 ...

  7. 【Python3】列表字典集合元组

    1 列表 1.1 定义与索引 在Python中,第一个列表元素的下标为 0通过将索引指定为 -1 可以让Python返回最后一个列表元素 inventory = ['sword', 'armor', ...

  8. 字符输出流_Writer类&FileWrite类介绍和字符输出流的基本使用_写出单个字符到文件

    字符输出流_Writer类&FileWrite类介绍 java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性抽象方法: void write(int c) ...

  9. 题解 P1999【覆盖墙壁】

    数学题 令 \(A_n\) 为 \(2\times n\) 的墙壁放满块的方案数,考虑递推. 显然 \(A_0=1\),我们令对于 \(k<0\),\(A_k=0\) . 放直线型的块非常好递推 ...

  10. 石火电光追风逐日|前端优化之次时代图片压缩格式WebP的项目级躬身实践(Python3 PIL+Nginx)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_190 我们知道,在前端界有一个共识:速度就是生命,带宽就是金钱.怎样将页面加载速度有效提升是无数前端工程师无时不刻在思考的课题,目 ...