k8s集群中有三类IP:

1:宿主机的物理网卡IP,比如192.168.255.*

2:cni创建的网卡的IP,比如172.16.*.*

3:虚拟的IP(即ClusterIP ,无法ping通,通过代理连接),172.19.*.*

如果在任何一台机器上查看网卡name能看到那么多网卡。如下图。

eth0是真实的网卡:IP段192.168.255.*

cni是k8s为了扁平化管理pod而创建的网卡,这里是172.16.1.1 那么其他节点可能就是172.16.2.1,172.16.3.1

其他看到很多veth的网卡实际上是跟cni网卡相连的。一个veth就代表一个pod,所以这个节点的pod ip就是172.16.1.*

不同节点的pod比如172.16.2.5->172.16.1.3是直接可以访问,底层实现的方式(隧道技术)可以不用太关注。

pod本身是没有状态的。也就是pod重启之后他的ip就发生了变化,所以这里引入了一个service作为服务访问的目标,service ip也是虚拟出的一个东西,比如起了一个nginx的pod,它关联了一个叫my-nginx的服务,那么以下是访问的一个流程。

1:任何一个pod访问my-nginx

2:从/etc/resolv.conf中配置的DNS服务器获取cluster ip地址。可以看到172.19.0.10这个作为DNS服务器,在集群安装的时候已经固定好了,在创建应用的时候会自动写入service 和cluster ip这样一个映射关系,那么pod就获得了my-nginx的cluster ip

3:k8s会在每个节点创建一个proxy的服务,由proxy创建iptable规则,当然在nginx创建的时候规则以及创建好了,当pod连接culster ip的时候就会被转发到nginx pod的ip,所以你通过service +port的形式连接有效,但是直接ping service是无法ping通的,iptable只实现的tcp/udp的转发

kubernetes service访问原理的更多相关文章

  1. Docker Kubernetes 服务发现原理详解

    Docker Kubernetes  服务发现原理详解 服务发现支持Service环境变量和DNS两种模式: 一.环境变量 (默认) 当一个Pod运行到Node,kubelet会为每个容器添加一组环境 ...

  2. 浅谈 kubernetes service 那些事(上篇)

    一.问题 首先,我们思考这样一个问题: 访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态.那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知? 二.k8 ...

  3. 【爬坑系列】之解读kubernetes的认证原理&实践

    对于访问kube-apiserver模块的请求来说,如果是使用http协议,则会顺利进入模块内部得到自己想要的:但是如果是用的是https,则能否进入模块内部获得想要的资源,他会首先要进行https自 ...

  4. Kubernetes service 代理模式

    Kubernetes service 代理模式 底层流量转发与负载均衡实现:• Iptables(默认)• IPVS IPVS 了解代理模式之IPVS工作原理LVS 基于 IPVS内核调度模块实现的负 ...

  5. (七)Kubernetes Service资源

    Service概述 为什么要使用Service Kubernetes Pod是平凡的,由Deployment等控制器管理的Pod对象都是有生命周期的,它们会被创建,也会意外挂掉.虽然它们可以由控制器自 ...

  6. kubernetes如何访问pod服务

    一.通过 Service 访问 Pod: 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 control ...

  7. 【解构云原生】初识Kubernetes Service

    编者按:云原生是网易杭州研究院(网易杭研)奉行的核心技术方向之一,开源容器平台Kubernetes作为云原生产业技术标准.云原生生态基石,在设计上不可避免有其复杂性,Kubernetes系列文章基于网 ...

  8. 第14 章 : Kubernetes Service讲解

    Kubernetes Service 本文将主要分享以下四方面的内容: 为什么需要 K8s service: K8s service 用例解读: K8s service 操作演示: K8s servi ...

  9. 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)

    本节开始学习 Service.我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会通 ...

随机推荐

  1. idea搭建简易ssm项目

    按照http://www.cnblogs.com/hackyo/p/6646051.html来搭建ssm框架,一步成功,特此记录一下. 本机环境: idea2017.3 jdk1.8 mysql5.5 ...

  2. Linux下一个简单守护进程的实现 (Daemon)

    在Linux/UNIX系统引导的时候会开启很多服务,这些服务称为守护进程(也叫Daemon进程).守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程 ...

  3. Oracle JDBC配置

    Oracle数据库是收费的,Oracle的JDBC驱动在Maven仓库中虽有其名,却无法下载到jar包. 这就需要手动下载Oracle JDBC驱动并将其安装到本地Maven仓库中. 如果从官网下载, ...

  4. PyCharm 默认运行 unittest

    若文件里面有某个函数名称或模块名称以test为前缀,Pycharm的话,就会自动认为是单元测试: 报错信息:test_file() missing 1 required positional argu ...

  5. automake安装出错

    automake命令出错 configure.ac:64: error: possibly undefined macro: AM_ICONV    If this token and others ...

  6. WordPress网站搬家全过程 亲身体验WordPress搬家,总结几点

    需要移动的文件主要是网站文件和数据库文件,如果是简单的wordpress   操作就是:备份网站文件,导出数据库文件,上传网站文件,导入数据库文件,移动网站文件,修改wordpress的wp-conf ...

  7. CodeForces 550A Two Substrings(模拟)

    [题目链接]click here~~  [题目大意]:  You are given string s. Your task is to determine if the given string s ...

  8. 服务商域名DNS大全

    服务商域名DNS:  服务商 DNS服务器   常用DNS: 英文域名DNS 主DNS名称:ns11.xincache.com 辅DNS名称:ns12.xincache.com 说明:新网共有5组DN ...

  9. unity5 Orthographic模式相机视截体尺寸计算

    一,通过编辑器中数值计算. 如图,相机为Orthographic模式,其camera size为5.57,是什么含义呢,经过测量,发现视图中视截体的高度是5.57x2. 那么视截体的宽度怎么决定呢? ...

  10. ubuntu 12.04下如何编译hadoop2.4

    问题导读: 1.如果获取hadoop src  maven包?2.编译hadoop需要装哪些软件?3.如何编译hadoop2.4?扩展:编译hadoop为何安装这些软件? 一.首先下载hadoop源码 ...