从零开始入门 K8s:Kubernetes 网络模型进阶

2020 年 3 月 05 日

从零开始入门 K8s:Kubernetes 网络模型进阶

本文将基于之前介绍的基本网络模型,进行更深入的一些了解,希望给予读者一个更广更深的认知。首先简单回顾一下容器网络的历史沿革,剖析一下 Kubernetes 网络模型的由来;其次会剖析一个实际的实现(Flannel Hostgw),展现了数据包从容器到宿主机的变换过程;最后对于和网络息息相关的 Servcie 做了比较深入的机制和使用介绍,通过一个简单的例子说明了 Service 的工作原理。

Kubernetes 网络模型来龙去脉

容器网络发端于 Docker 的网络。Docker 使用了一个比较简单的网络模型,即内部的网桥加内部的保留 IP。这种设计的好处在于容器的网络和外部世界是解耦的,无需占用宿主机的 IP 或者宿主机的资源,完全是虚拟的。它的设计初衷是:当需要访问外部世界时,会采用 SNAT 这种方法来借用 Node 的 IP 去访问外面的服务。比如容器需要对外提供服务的时候,所用的是 DNAT 技术,也就是在 Node 上开一个端口,然后通过 iptable 或者别的某些机制,把流导入到容器的进程上以达到目的。

该模型的问题在于,外部网络无法区分哪些是容器的网络与流量、哪些是宿主机的网络与流量。比如,如果要做一个高可用的时候,172.16.1.1 和 172.16.1.2 是拥有同样功能的两个容器,此时我们需要将两者绑成一个 Group 对外提供服务,而这个时候我们发现从外部看来两者没有相同之处,它们的 IP 都是借用宿主机的端口,因此很难将两者归拢到一起。

原文链接:【 https://www.infoq.cn/article/QDuQfhrIsblOB7TExTXe 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2020 年 3 月 05 日 10:00 4454

评论

发布
暂无评论
发现更多内容

揭晓{大发正规平台邀请码}12812888

InfoQ_95ab3e73a57e

Docker搭建项目环境实战

书旅

Docker Dockerfile Docker-compose

让理性思维走进我们的生活,帮助我们做出更好的决策。

叶小鍵

心理学 基思. 斯坦诺维奇 超越智商 认知科学

Flink水位线和时间戳理解-7

小知识点

scala 大数据 flink 模块化流程

POI 之 策略游戏

zhoo299

随笔杂谈

Postman生成接口文档

书旅

Postman 接口文档

week 11

Geek_2e7dd7

你可能不知道的计算机基础

书旅

c 常量 计算机 基础

战斗还是逃避,或许可以考虑一下合作?

escray

面试 学习笔记 面试现场

Linux系统监控工具推荐

王坤祥

监控 工具软件

视频码控:CBR、VBR和ABR

潇湘落木

直播 SRS 视频编码 码控

数据库是咋工作的?

简爱W

请不要随便修改基类

架构师修行之路

Redis 之父关于 CRC64 的神秘往事!

yes的练级攻略

redis CRC

SQL查询语句执行顺序详解

书旅

MySQL SQL语法 sql查询

LeetCode题解:26. 删除排序数组中的重复项,双指针,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

图解javascript——基础篇(以思维导图总结js中关键技术点,为面试及工作助力)

执鸢者

JavaScript 前端

大数据技术思想入门(四):分布式文件的元数据是怎么存储的

抖码课堂

Java 大数据 hadoop 分布式

「零代码」搭建简易招聘管理系统

Tony Wu

效率工具 SaaS 招聘管理 HRIS

融云 X- Meetup 技术沙龙广州站:全球通信云技术实践分享

InfoQ_967a83c6d0d7

十一周作业

olderwei

极客大学架构师训练营

前端分页组件实现逻辑

书旅

php 前端 分页

完了,这个硬件成精了,它竟然绕过了 CPU

简爱W

Netty之旅二:口口相传的高性能Netty到底是什么?

一枝花算不算浪漫

一个快捷方便的油煎鸡胸肉,懒人标配香喷喷好吃看得见

小霸王其乐无穷

美食 鸡胸肉 懒人

动态修改logback的日志级别

华宇法律科技

Java springboot logback

week 11学习总结

Geek_2e7dd7

【解Bug之路】——Nginx 502 Bad Gateway

简爱W

你可能需要一个脱机状态

非著名程序员

学习方法 程序员 个人成长 工作方式

Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表

简爱W

介绍一款API敏捷开发工具

棒锤🐮

敏捷开发 Rocket API API敏捷开发

从零开始入门 K8s:Kubernetes 网络模型进阶-InfoQ