非云环境中Kubernetes的配置和运行:网络

2020 年 8 月 21 日

非云环境中Kubernetes的配置和运行:网络

这是非云环境中Kubernetes的配置和运行系列的第三篇文章,本文主要介绍组成网络体系架构中的每个组件,及其它们在整体架构中的作用,重点介绍IP、子网、DHCP、DNS等技术。


想要先睹为快的读者,可直接克隆该项目的 GitHub 代码库。代码库中的文档正在持续改进中,并完全可用。代码库地址为: mvallim/kubernetes-under-the-hood


DNS


网站等Internet资源有两种表示方式,即通过其域名(例如,“ kubernetes.io”),或是通过承载资源的主机IP地址(例如,“45.54.44.102”,即与kubernetes.io域关联的IP)。网络层使用IP地址确定设备的物理位置和虚拟位置,但对于用户和企业而言,域名更易于记忆。因此,我们需要一种将域名解析为IP地址的机制。这就是DNS的主要功能。

DNS时常被假定为仅用于将Internet主机名映射到数据(例如TXT、MX等),并将地址映射到主机名。但事实上,DNS可用于存储几乎用于任何目的的各种数据类型。


出处: https://www.cloudflare.com/learning/dns/what-is-dns/


为了简化概念,我们可设想在一个教室中,老师以学生的名字呼唤学生,然后学生回答说他们在班级中的确切位置,并提供以行和列表示的座位坐标。 例如:


  • 老师说:“小明!”

  • 小明回答:“我在这里,第4行第10列。”

  • 老师说:“好的,我知道你的确切位置了,第4行第10列。”


在上面的例子中,老师知道了小明的具体座位。同样原理,当我们在浏览器中输入地址“ kubernetes.io”时,DNS 响应以地址“45.54.44.102”。



图 DNS 交互图示


NAT


在计算机网络中,网络地址转换(NAT,Network Address Translation),也称为“地址伪装”(masquerading),是一种使用哈希表重写通过路由器或防火墙的源地址网络包,使得内网计算机可以访问外网或者万维网(即公网)


引用自: https://en.wikipedia.org/wiki/Network_address_translation



图 NAT 交互图示


DHCP


动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种为网络中设备(包括虚拟机实例、笔记本、平板电脑、移动设备、IoT传感器等)提供IP地址、子网掩码、默认网关地址、DNS服务器地址、DNS搜索前缀、 WINS服务器地址等动态配置的TCP/IP服务协议。

DHCP是从 BOOTP延续发展而来。尽管BOOTP协议更为简单,但不能满足当前的需求。DHCP在1993年10月成为标准,在 RFC 2131(1997年)中包含了大部分的当前规格说明。最新基于IPv6的DHCP(DHCPv6)规格说明发布在 RFC 3315(2003年)中。


引用自: https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol



图 DHCP 交互图示


如果读者未理解 DHCP,可回顾上一篇技术栈文章。


网关


网关也称为协议转换器,可运作在任一网络层。网关的职责比路由器和交换机更为复杂,因为网关使用多种协议通信。

网络节点是因特网用户的计算机和向用户提供网页的计算机。连接节点间网络的节点就是网关。例如,用于控制企业网络的计算机,或是因特网服务提供商(ISP)用于将用户接入因特网的计算机,就是网关节点。

在企业网络中,充当网关节点的服务器通常作为代理服务器或防火墙服务器。网关通常与路由器有关,路由器知道将网关接收的特定数据包发向何方,并进行交换,这为特定接收方提供了网关的实际输入和输出路径。


引用自: https://en.wikipedia.org/wiki/Gateway_(telecommunications)


简而言之,网关是计算机出入所在网络的访问点。根据所在网络复杂性的不同,网关可能是一台,也可能存在多台。它们提供网络的进出端点,正如房间的门一样。



图 网关交互图示


IP 地址


IP 地址长度是 32 个字节,分成 4 个 8 位字节表示(IPv4)。每个 8 位字节可以表示为用点分隔的数字,如下所示。



网络分段(Network Segmentation)


网络分段就是将一个计算机网络分隔为多个称为分段操作,每个分段称为一个子网。分段操作的最大优点是改进了网络的安全性和性能。


优点


降低网络流量。


  • 网络分段导致网络流量隔离在各个分段子网中,这意味着每个子网分段具有自己的流量,不会影响整个网络。


安全性


  • 广播局限于各个分段子网中,而非整个网络。

  • 分段子网中的资源可与其它网络隔离,或是相互限制。

  • 一般攻击仅局限于当前子网,而非整个网络。考虑这一点,网络可按资源分段,例如数据库、NFS、Web等。


问题隔离


  • 任何一个子网中出现网络问题,将局限于该子网中,不会影响到整个网络。


访问控制


  • 可控制进入子网以及子网间的访问。例如子网A只能访问子网B。


参考资料: https://en.wikipedia.org/wiki/Network_segmentation


网络分类


  • A类地址:IP地址首个8位字节的值位于1–127范围内。

  • B类地址:IP地址首个8位字节的值位于128–191范围内。

  • C类地址:IP地址首个8位字节的值位于192–223范围内。

  • D类地址:IP地址首个8位字节的值位于224–239范围内。

  • E类地址:IP地址首个8位字节的值位于240–255范围内。


无类域间路由(CIDR,Classless Inter-Domain Routing)


CIDR 是一种替代传统子网的技术。


IP 地址使用 2 组字节表示:第一组字节是网络前缀,用于标识整个网络或是子网;第二组字节是主机标识符,指定网络中主机的特定接口。这种分别表示的方法用于路由 IP 网络和地址分配策略间的流量。


CIDR 的基本理念是分组地址最开始处的字节,如下表所示:



参考文献: https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing


localhost


IP 地址范围 127.0.0.0–127.255.255.255(CIDR 表示为 127.0.0.0/8)保留,用于 localhost 间通信。发送到上述地址的网络包,不会离开生成网络包的主机。当然,这些网络包的处理,与从网络接收的包相同。


保留私有地址范围


在可用的 4,294,967,296(即 0.0.0.0/0 - 2³²)个 IPv4 地址中,有三段地址保留用于私有网络。在此地址段中的 IP 地址不能路由出私有网络,即不能在公网上路由。


标准 RFC 1918、3330 和 3927 分别指定了 A、B 和 C 类保留地址,称为私有网络地址,如下表所示。



我们的网络拓扑



网络


下表给出了我们主网络的 IP 地址范围。该范围提供了 65534 个地址,可分隔成个多个更小的专用网段。



子网


我们定义了子网的分隔方式,使得我们可以分隔各个资源类别。主网具有 16 位掩码,子网是 24 和 25 位掩码。


简而言之,设想我们有一栋多层商业建筑,每层楼具有专门的用途。例如,软件开发人员在第一层,厨师在第二层,医生在第三层,诸如此类。


通常而言,我们的工作就是对建筑(即主网)每层分配地址,指定每层支持容纳的专业人员(即主机)上限。



隔离子网可提供 256(24 位掩码)和 126(25 位掩码)个地址,规模足以容纳实例个数、负载均衡器(即 MetalLB)和浮动 IP,用于完全部署我们的 Kubernetes 集群。


读者可能会问,为什么不选择 256(即 2⁸ — (32–24))和 128(即 2⁷ — (32 -25))。原因在于,子网段的首尾地址分别保留用于标识网络和广播使用。


DNS


如上所述,通常将网段首个可用地址被指定为 DNS 服务器。如下表:



DHCP


为确保上面定义各个子网具有足够可用的 IP 地址,分配给需要加载地址的主机,我们定义了如下 IP 地址分布范围。


仔细看来,每个 IP 地址范围支持 252 和 124 个 IP 地址。如果给定子网中的主机数量高于此,就会出现 IP 地址用尽的问题。这意味着,想要加入该子网的主机不能分配 IP 地址,进而无法加入该子网。



注意,首个地址保留给 DNS 服务器,最后一个地址保留给网关。这就是为什么子网可提供 252(即/24)或 124(即/25)个 IP 地址,而非 254 或 126 个。


网关


常见做法是将子网的首个或最后一个 IP 地址保留,用于网关地址。技术上看,我们可以另行指定任意网关地址。谨记,这样做会导致 DHCP 配置复杂化。


例如,一个子网的 CIDR 表示为 192.168.5.0/24,如果我们随意指定 IP 地址 192.168.5.127 为网关,那么 IP 分别范围将必须定义为 192.168.5.1–192.168.5.126,或是 192.168.5.128–192.168.5.254,非常不直观。


简要起见,我们指定子网的最后一个 IP 地址为网关。



浮动 IP


在我们的网络中,浮动 IP 可以是 DMZ 子网 192.168.4.0/25 中的任一地址。这里,指定为 192.168.4.20。



负载均衡器



原文链接:


Kubernetes Journey — Up and running out of the cloud — Network


2020 年 8 月 21 日 09:27606

评论

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

Spring 5 中文解析核心篇-IoC容器之类路径扫描和组件管理

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之IoC容器和Bean概述

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之Spring AOP API

青年IT男

Spring5 Spring Framework

Redis 持久化 --RDB

是老郭啊

redis redis持久化 aof rdb

手把手带你写Node.JS版本小游戏

华为云开发者社区

Java node.js Node 华为云 剪刀石头布

Spring 5 中文解析核心篇-IoC容器之依赖关系

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之Bean作用域

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之基于Java容器配置

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之SpEL表达式

青年IT男

Spring5 Spring Framework

从RainbowBridge看Js与Java交互中的安全漏洞

OPPO安全

安全 安全漏洞

Spring 5 中文解析核心篇-IoC容器之基于注解的容器配置

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之ApplicationContext与BeanFactory

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之AOP编程(上)

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之自定义Bean性质

青年IT男

Spring5 Spring Framework

区块链数字货币交易所开发,数字交易平台搭建

13530558032

为什么企业自主开发软件时,都会使用统一的模块化框架式开发平台?

Philips

敏捷开发 代码优化 框架设计 框架开发 标准框架

话题讨论 | 你的桌面上会放哪些有趣的小摆件?

InfoQ写作平台

工作 话题讨论 办公室

Spring 5 中文解析核心篇-IoC容器之JSR330标准注解

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之Environment抽象

青年IT男

Spring5 Spring Framework

日防夜防,“隐私窃贼“难防? 手把手教你如何使用OPPO手机管理应用权限

OPPO安全

安全 隐私保护 数据隐私 sdk

软件工程开发之道:了解能力和复杂度是前提

华为云开发者社区

软件工程 开发 项目 代码 复杂度

CSS常用样式——绘制各种角度的三角形(1)

程序员学院

CSS css3 CSS小技巧

区块链支付系统开发,数字货币支付承兑商APP模式搭建

13530558032

你真的懂AQS吗?透彻理解AQS源码分析系列之AQS基础一

InfoQ_d2212957090d

AQS

Spring 5 中文解析核心篇-IoC容器之BeanDefinition继承与容器拓展点

青年IT男

Spring5 Spring Framework

敏捷转型谁先动:老总,项目经理or团队

华为云开发者社区

项目管理 敏捷 敏捷开发 团队 华为云

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo

环信

车队管理软件

samhuang

企业表格技术与风险指标补录系统

Geek_Willie

SpreadJS

Spring 5 中文解析核心篇-IoC容器之AOP编程(下)

青年IT男

Spring5 Spring Framework

手把手教程:基于环信4小时开发一个视频会议APP【附源码】

环信

非云环境中Kubernetes的配置和运行:网络-InfoQ