【读书笔记/深入理解K8S】集群网络

前言

上一章讲了集群控制器的一个大概的原理,这一章讲一下集群网络。网络是集群通信的载体,因为该书是阿里云团队出品的,所以也以阿里云的集群网络方案为例,其他云厂商的网络集群方案一般来说也大同小异。所以通过本章的学习,能对k8s集群网络的搭建有个大概的理解,也算是有所收获。

本章分为两部分:

  1. 网络搭建过程
  2. 基于网络的通信

网络搭建过程

阿里云集群网络方案有2中,一种是flannel方案,一种是基于calico和弹性网卡eni的terway方案。terway方案相较于flannel,支持Pod弹性网卡和NetworkPolicy功能。

概览

我们先看一下一个完整的集群网络的拓扑图的样子:

该图可以划分为3个部分:1. 集群CIDR 2.集群CIDR的子网段(podCIDR) 3. 每个Pod的IP

下面我们来看具体搭建过程:

初始阶段

初始阶段,需要创建VPC和ECS,创建完VPC和ECS后,ECS可以从VPC网段里分配到IP地址

集群阶段

在初始资源基础上,利用集群控制台得到集群CIDR。该值会传给集群节点脚本(provision),然后被脚本传给kubeadm,最后kubeadm将该参数写入集群控制器Pod的yaml文件 kube-controller-manager.yaml

(总结:集群CIDR通过kubeadm写入kube-controller-manager.yaml)

拿到集群CIDR后,kubelet会给节点分配PodCIDR

节点阶段

在上溯节点PodCIDR完成后,集群下发flanneId刀每个阶段上,从而搭建可以给Pod使用的网络框架:

  1. 集群通过Cloud Controller Manager给VPC配置路由表项(路由把目标为PodCIDR的网络包发到对应的ECS上)
  2. 创建虚拟网桥cni0以及相关路由

Pod阶段

在前面三个阶段,集群已经为Pod搭建了网络通信的干道,这时如果集群把一个Pod调度到节点上,kubelet会通过flnnel cni为这个Pod本身创建

  1. 网络命名空间
  2. veth 设备

然后把veth设备假如cni0虚拟网桥里,并为Pod内的veth配置IP地址


基于网络的通信

本地通信

本地通信指同Pod内部不同的容器之间通信。这些容器共享一个网络协议栈,所以通过lookback设备即可。

同节点Pod的通信

同节点Pod之间的通信,是cni0虚拟网桥内部的通信,也就相当于一个二层的局域网内部设备通信

跨节点Pod的通信

跨节点Pod之间通信,则通过cni0网桥的网关,流转到节点上,经过节点的eth0发给VPC路由,这个过程不会封包。VPC路由通过路由表,将数据包发给对应的ECS节点,再到目的Pod

Pod和Pod网络之外的实体通信

Pod与非Pod网络的实体通信,通过节点上的iptables规则做snat,该规则就是flanneId依据命令行——ip-masq选项做的配置

iptables

  • iptables 是 Linux 内核中的一个防火墙工具,用于管理网络数据包的过滤和 NAT(网络地址转换)等功能。它基于规则链来处理数据包,规则链是一系列规则的集合,这些规则定义了如何处理不同类型的网络数据包。
  • 例如,用户可以使用 iptables 规则允许或拒绝来自特定 IP 地址的数据包访问本地服务器,或者将内部网络的私有 IP 地址转换为公有 IP 地址以实现互联网访问。
  • 在 Kubernetes 中,iptables 用于实现集群内部的网络策略和服务的流量转发。Kubernetes 的网络模型依赖于 iptables 来设置复杂的规则,以确保不同容器之间的通信安全和正确的流量路由。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/6314.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】章节 知识点总结

一、计算机网络概述 1. 计算机网络向用户提供的两个最重要的功能:连通性、共享 2. 因特网发展的三个阶段: 第一阶段:从单个网络 ARPANET 向互联网发展的过程。1983 年 TCP/IP 协议成为 ARPANET 上的标准协议。第二阶段:建成三级…

一站式教育网校系统源码开发方案:知识付费小程序搭建详解

本文将从开发的技术要点、功能模块设计、性能优化等角度,详解一站式教育网校系统源码的开发方案,并着重讲解知识付费小程序的搭建方法。 一、教育网校系统源码开发的核心需求 要搭建一套稳定、高效的教育网校系统,首先需要明确其核心需求。一…

Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)

1.微服务入门 (1).单体架构与分布式架构 单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署优点: 架构简单、部署成本低 ; 缺点: 耦合度高项目打包部署到Tomcat,用户直接访问。用户量增加后…

AI直播带货场景切换模块的搭建!

AI直播带货,作为电商领域的新宠,正以其独特的魅力和高效的营销手段,引领着销售模式的新变革。 在AI直播带货中,场景切换模块是不可或缺的一部分,它不仅能够提升观众的观看体验,还能更好地展示商品&#xf…

华为HCIP —— QinQ技术实验配置

一、QinQ的概述 1.1QinQ的概念 QinQ(802.1Q in 802.1Q)技术是一项扩展VLAN空间的技术,通过在原有的802.1Q报文基础上再增加一层802.1Q的Tag来实现。 1.2QinQ封装结构 QinQ封装报文是在无标签的以太网数据帧的源MAC地址字段后面加上两个VL…

Linux grep命令详解(多图、多示例)

文章目录 grep基本说明grep参数简单示例列举参数-v(反选)-r -l -H -i(目录子目录、只打印匹配文件、输出文件名、忽略大小写)-c -n -o(匹配次数、输出行号、只打印匹配)-A -B -C(前后行) 正则表达式基本正则表达式与扩展正则表达式 grep示例附录:正则表达式基本字符特殊字符Per…

Hadoop---MapReduce(3)

MapTask工作机制 (1)Read阶段:MapTask通过InputFormat获得的RecordReader,从输入InputSplit中解析出一个个key/value。 (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理&…

UI界面设计入门:打造卓越用户体验

互联网的迅猛发展催生了众多相关职业,其中UI界面设计师成为互联网行业的关键角色之一。UI界面设计无处不在,影响着网站、应用程序以及其他数字平台上的按钮、菜单布局、色彩搭配和字体排版等。UI设计不仅仅是字体、色彩和导航栏的组合,它的意…

jmeter基础01-3_环境准备-Linux系统安装jdk

Step1. 查看系统类型 打开终端,命令行输入uname -a,显示所有系统信息,包括内核名称、主机名、内核版本等。 如果输出是x86_64,则系统为64位。如果输出是i686 或i386,则系统为32位。 Step2. 官网下载安装包 https://www…

2024年海淀区中小学生信息学竞赛校级预选赛试题与解析(第二部分程序阅读题(1-4))

第一题代码&#xff1a; #include<bits/stdc.h> using namespace std; int n, cnt;int main() {cin >> n; // 读取输入的整数 nfor (int i 1; i < n; i) // 从 1 到 n-1 的整数进行遍历if (n % i 0) // 如果 i 是 n 的约数cnt; …

ELK日志

一&#xff0c;Elastic Stack 在企业的常用架构 1&#xff0c;没有日志收集系统运维工作的日常"痛点"概述 如上图所示&#xff0c;简单画了一下互联网常用的一些技术栈相关架构图&#xff0c;请问如果让你对上图中的各组件日志进行收集&#xff0c;分析&#xff0c;存…

SAP RFC 用户安全授权

一、SAP 通讯用户 对于RFC接口的用户&#xff0c;使用五种用户类型之一的“通讯”类型&#xff0c;这种类型的用户没有登陆SAPGUI的权限。 二、对调用的RFC授权 在通讯用户内部&#xff0c;权限对象&#xff1a;S_RFC中&#xff0c;限制进一步可以调用的RFC函数授权&#xff…

文件操作:Xml转Excel

1 添加依赖 Spire.Xls.jar <dependency><groupId>e-iceblue</groupId><artifactId>spire.xls</artifactId><version>5.3.3</version></dependency>2 代码使用 package cctd.controller;import com.spire.xls.FileFormat; im…

【FL0014】基于SpringBoot和微信小程序的个人健康管理系统

&#x1f9d1;‍&#x1f4bb;博主介绍&#x1f9d1;‍&#x1f4bb; 全网粉丝10W,CSDN全栈领域优质创作者&#xff0c;博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发…

数据库_SQLite3

下载 1、更新软件源&#xff1a; sudo apt-get update 2、下载SQLite3&#xff1a; sudo apt-get install sqlite3 3、验证&#xff1a; sqlite3启动数据库&#xff0c;出现以下界面代表运行正常。输入 .exit 可以退出数据库 4、安装sqlite3的库 sudo apt-get install l…

鸿蒙进阶-List组件

hello大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来讲讲常用的List组件&#xff0c;也就是列表组件。 List组件 List 组件的基本用法&#xff0c;可以用它来展示列表&#xff0c;并且实现列表滚动&#xff0c;日常开发的时候还可以用它来实现更为复杂的效果。 …

EDA技术简介

目录 可编程逻辑器件 CPLD/FPGA 基于查找表结构的FPGA 硬件描述语言 EDA软件 EDA技术的 应用领域 电子系统的设计方法 EDA (Electronic Design Automation,电子设计自动化) 以可编程逻辑器件 (Programmable Logic Device,简称PLD)为实现载体、以硬件描述语言 (Hardwar…

【java】实战-力扣题库:有序数组的平方

问题描述 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 问题分析&#xff1a; 既然给定的是一个 非递减顺序的数组 我们可以使用双指针 &#xff0c; 一个指向左边&#xff0c;一个指向…

Java项目实战II基于Java+Spring Boot+MySQL的智能推荐的卫生健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…

Jupyter Notebook添加kernel的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…