k8s的二进制部署和网络类型

k8s的二进制部署

master01:192.168.233.10 kube-apiserver kube-controller-manager kube-scheduler etcd

master02:192.168.233.20 kube-apiserver kube-controller-manager kube-scheduler

node01:192.168.233.30 kubelet kube-proxy etcd

node02:192.168.233.40 kubelet kube-proxy etcd

负载均衡:nginx+keepalive

master:192.168.233.50

backup:192.168.233.60

[root@10 ~]# systemctl stop firewalld

[root@10 ~]# setenforce 0

[root@10 ~]# iptables -t nat -F

[root@10 ~]# iptables -t mangle -F

[root@10 ~]# iptables -X

[root@10 ~]# swapoff -a

[root@10 ~]# free -h

              total        used        free      shared  buff/cache   available

Mem:           7.6G        302M        7.0G        9.1M        379M        7.0G

Swap:            0B          0B          0B

k8s在设计时,为了提升性能,默认是不使用swap交换分区,kubenetes在初始化时,会检测swap是否关闭

[root@10 ~]# hostnamectl set-hostname master01

[root@10 ~]# su

[root@master01 ~]# vim /etc/hosts

[root@master01 ~]# vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables=1

net.bridge.bridge-nf-call-iptables=1

net.ipv6.conf.all.disable_ipv6=1

net.ipv4.ip_forward=1

[root@master01 ~]# sysctl --system

部署第一个组件

存储k8s的集群信息和用户配置组件etcd

etcd是一个高可用---分布式的键值存储数据库

采用raft算法,保证节点信息一致性。etcd时go语言写的

etcd的端口:2379(提供API服务,api接口。对外为客户端提供通信)   2380(内部服务的通信端口)

etcd一般是集群部署,由于etcd有选举leader的机制,至少要3台或者奇数台

k8s的内部通信依靠证书认证、密钥认证

证书的签发环境:

cfssl:证书签发的命令工具

cfssl-certinfo:查看证书信息的工具

cfssljson: 把证书的格式转化成json格式,变成文件的承载式证书

ca-config.ison 证书颁发机构的配置文件,定义了证书生成的策略,默认的过期时间和模版

ca-csr.ison 签名的请求文件,包括一些组织信息和加密方式

ca.pem 根证书文件,用于给其他组件签发证书

server.csr  etcd的服务器签发证书的请求文件

server-key.pem  etcd服务器的私钥文件

ca.csr  根证书签发请求文件

ca-key.pem  根证书的私钥文件

etcd- cert.sh  用于通过服务器验证客户端

server-csr.ison  用于生成etcd的服务器证书和私钥签名文件

server.pem  etcd服务器的证书文件,用于加密和认证etcd节点之间的通信

kubectl config set-context default \

--cluster=kubernetes \

--user=cluster-admin

-kubeconfig=$KUBE CONFIG)kubect! config use-context default --kubeconfig=$(KUBE CONFIG)

context 上下文:

定义连接到哪个k8s集群,以及使用哪个用户的身份来进行操作,上下文包含了集群、用户和可选命名空间的信息

在k8s的集群中

kubectl create clusterrolebinding kubelet-bootstrap -clusterrole-system:node-bootstrapper --user-kubelet-bootstrap

RBAC授权,生成和赋权用户kubelet-bootstrap,发起node节点的请求认证,通过CSR加密认证实现NODEK节点加入到集群当中。

kubelet获取master的验证信息和获取API-server接口的通信认证。

k8s网络类型

k8s中的通信模式:

1、pod内部之间容器与容器之间的通信

在同一个pod中的容器共享资源和网络,使用同一个网络命名空间。他们可以直接通信

2、同一个node节点之内,不同pod之间的通信

每个pod都有一个全局的真实的IP地址。同一个node之间的不同pod可以直接使用对方pod的ip地址进行通信

pod1和pod2是通过doker0的网桥来进行通信。

3、不同node节点上的pod之间如何进行通信

cni插件:cni是一个标准接口,用于容器运行时调用网络插件,配置容器网络,负责设置容器的网络命名空间,ip地址,路由等等参数

插件①:Flannel

Flannel 的功能是让集群中的不同Docker 容器都具有全集群唯一的虚拟IP地址。

Flannel 是 Overlay 网络的一种,在底层物理网络的基础之上,创建一个逻辑的网络层。二层+三层集合。二层是网络层,三层是逻辑上的网络层。Overlay网络也是一种网络虚拟化的技术

Flannel支持的数据转发方式:①UDP(默认模式。应用转发,配置简单,性能最差。一般不用); ②VXLAN(基于内核转发。也是最常用的网络类型(小集群都用这个),用的最多); ③Host-gw(性能最好,但是配置很麻烦,用的比较少)

UDP的工作模式:基于应用转发,Flannel提供路由表,Fannel封装数据包、解封装

node都会有一个fannel的虚拟网卡

数据流向

VXLAN的工作模式:使用的就是Overlay的虚拟隧道通信技术。二层+三层的模式。

UDP基于应用层用户态,

VXLAN:fannel提供给路由表,内核封装、解封装

flannel1.1接口

数据流向

根据vni+IP地址来寻找目标节点的通信地址

flannel:每个发向容器的数据包进行封装,vxlan通过vtep打包数据,然后由内核封装成数据包,再转发到目标node节点。到了目标节点,还有个解封装过程,再发送目标pod,性能有一定影响

插件②:Calico(直接路由,性能最好)

calico:采用直接路由的方式(BGP动态路由)。不需要修改报文,统一直接通过路由表转发,路由表会很复杂,运行维护的要求比较高

BGP模式的特点:交换路由信息的外部网关协议,可以连接不同的节点。node节点可能不是一个网段,BGP实现可靠的、最佳的、动态的路由选择。自动识别相邻的路由设备。

calico不使用overlay,也不需要交换,直接通过虚拟路由实现,每一台虚拟路由都通过BGP转发

核心组件:

1、felix  也是运行在主机的一个个pod,一个进程,k8s daemonset的方式部署(后台部署)的pod

daemonset会在每个node节点部男相同的pod.后台的运行方式

负责在宿主机上插入路由规则,维护calico需要的网络设备。网络接口管理、监听、路由等等

2、BGP Client(bird)  BGP的客户端,专门负责在集群中分发路由规则的信息。每一个节点都会有一个BGP Client

BGP协议用广播的方式通知其他节点的分发路由的规则,实现网络互通

etcd:保存路由信息;负责整个网络元数据的一致性(保证整个网络状态的一致和准确)

Calico的工作原理:

路由表来维护每个pod之间的通信

创建好pod之后,添加一个设备cali  veth pair设备

虚拟网卡: veth pair是一对设备,虚拟的以太网设备

一头连接在容器的网络命名空间 eth0

另一头连接宿主机的网络命名空间 cali

IP地址分配:veth pair连接容器的部分给容器分配IP地址,这个IP地址是唯一标识,宿主机也会被veth pair分配一个calico网络的内部IP地址。和其他节点上的容器进行通信

veth设备:容器发出的IP地址通过veth pair设备到宿主机,宿主机就根据路由规则的下一跳地址发送到网关(目标宿主机,目标节点),数据包到达目标宿主机,veth pari设备,目标宿主机也是根据路由规则,下一跳地址,转发到目标容器

数据流向

ipip模式:会生成一个tunnel隧道.数据包都是在tunnel内部打包 封装:宿主机IP、容器内部的IP地址

常用的网络插件类型:flannel和calico

flannel特点:配置简单,功能简单,基于overlay叠加网络实现,在物理层的网络上再封装一个虚拟的网络。

vxlan是虚拟三层网络。UDP是默认模式。host-gw模式。

vxlan:最多的模式,vni+IP进行转发,flannel提供路由表,内核封装和解封装

由于封装和解封装的过程,对数据传输的性能会有影响,没有网络策略配置的能力UDP协议

默认网段:10.244.0.0/16

calico特点:功能强大,基于路由表进行转发,没有封装和解封装的过程。具备网络策略的配置能力。但是路由表维护起来复杂

模式:ipip   BGP

BGP:通过为IP路由表的前缀来实现目标主机的可达性

对比ipip模式,BGP模式没有隧道,BGP模式下,pod的数据包直接通过网卡发送到目的地

ipip的隧道:在隧道进行数据包的封装ipv4 --- ipv4

简单的小集群:flannel

扩容、配置网络策略:calico

coredns:可以为集群当中的service资源创建一个域名和IP进行对应解析的关系

service是对外提供访问的地址,现在加入DNS机制之后,可以直接访问服务名

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在idea中使用git(Gitee)

目录 前言 一、常用远程仓库托管服务 二、gitee使用 1 创建远程仓库 2 配置SSH公钥 ​编辑 ​编辑 3 把本地代码推送到远端 4 其他操作远程仓库 1)克隆 2)抓取和拉取 3)解决合并冲突 三、在idea中使用git 四、场景分析 总结 前言 昨天详细学…

【惠友小课堂】“拇外翻”:大脚趾凸出也是病!得治!

大脚趾凸出的痛谁懂? 有一种尴尬叫不敢脱鞋, 鞋一脱,外翻的脚趾就“原形毕露”…… 这都是“拇外翻”惹的祸。 拇外翻,俗称大脚骨,多发于女性,是大脚趾向外明显倾斜,超过正常生理范围的一种足…

keil软件使用和数据区传送

一、实验目的: 1、掌握keil软件下编写、编译、调试C51程序的方法; 2、掌握片内RAM和片外RAM的数据传送操作 二、实验内容 在keil中编写C51程序,在外部数据存储器从地址100H单元开始存入10条字节型随机数据,再传输到内部数据存…

Illustrator脚本 #015 自动角线

这是一个在画板上自动生成辅助线和角线的脚本,只要单击最右边按钮运行脚本即可。 绿色的为参考线及出血线。 #target "Illustrator" var settings {addTrim : true,addBleedGuide : true,addCenterGuide : true,addCover : false,overlapAlert : false,…

Xshell连接ubuntu,从github克隆项目,用Xshell克隆项目

访问不了github:https://blog.csdn.net/liu834189447/article/details/135246914 短暂解决访问问题。 ping不通虚拟机/无法连接虚拟机:https://blog.csdn.net/liu834189447/article/details/135240276 ps: Xshell、ubuntu的粘贴快捷键为 Shift Insert …

51单片机(STC8)-- GPIO输入输出

文章目录 I/O口相关寄存器端口数据寄存器端口模式配置寄存器(PxM0,PxM1)端口上拉电阻控制寄存器(PxPU)关于I/O的注意事项 配置I/O口I/O设置demoI/O端口模式LED控制(I/O输出)按键检测(I/O输入) S…

大数据Doris(四十三):创建物化视图

文章目录 创建物化视图 一、首先你需要有一个Base表

深入浅出Java虚拟机

文章目录 总体图类装载子系统一、类的加载过程一、加载二、链接三、初始化 二、类的加载器 运行时数据区一、程序计数器(ProgramCounter)二、虚拟机栈( Java Stack )三、本地方法栈( Native Method Stack )四、堆内存(Direct Memory&#xff…

mysql 与 支持语言的连接驱动 jdbc connector JAR 包

有位网友问我有没有 mysql jdbc驱动 ,我刚开始一脸懵逼,后来明白过来,在网上找了几篇文章看看了解了解,得出如下解决办法: Mysql jdbc 下载: 网址: MySQL :: Download Connector/J 步骤1 &a…

【信息安全原理】——拒绝服务攻击及防御(学习笔记)

📖 前言:拒绝服务攻击(Denial of Service, DoS)是一种应用广泛、难以防范、严重威胁网络安全(破坏可用性)的攻击方式。本章主要介绍DoS的基本概念、攻击原理及防御措施。 目录 🕒 1. 定义&#…

nginx报错upstream sent invalid header

nginx报错upstream sent invalid header 1.报错背景 最近由于nginx 1.20的某个漏洞需要升级到nginx1.25的版本。在测试环境升级完nginx后,发现应用直接报错502 bad gateway了。 然后查看nginx的errlog,发现: upstream sent invalid head…

echarts 柱状图

记录echarts 柱状图基础案例以及相关配置。 1.基础柱状图 const myChart this.$echarts.init(this.$refs.echartsZx);const option {title: {text: 本周考试记录},//提示框tooltip: {trigger: axis,axisPointer: {type: shadow}},xAxis: {type: category,data: [Mon, Tue, W…

im6ull学习总结(二)Framebuffer 应用编程

1 LCD操作原理 linux中通过framebuffer驱动程序来控制LCD。framebuffer中包含LCD的参数,大小为LCD分辨率xbpp。framebuffer 是一块内存 内存中保存了一帧图像。 关于图像的帧指的是在图像处理中,一帧(Frame)是指图像序列中的单个…

【新版Hi3536AV100性能果真强悍】

Hi3536AV100是针对多路高清/超高清(1080p/4M/5M/4K)智能NVR产品应用开发的新一代专业高端SoC芯片。 Hi3536AV100集成了ARM Cortex-A55八核处理器和性能强大的神经网络处理器,支持多种智能算法应用。 Hi3536AV100支持32路1080p多协议解码及4路…

OpenCV-Python(21):凸缺陷检测及点到多边形最短的距离求解

学习目标 凸缺陷的查找求某一点到一个多边形的最短距离不同形状的匹配 凸缺陷 前面我们已经学习了轮廓的凸包,对象上的任何凹陷都被成为凸缺陷。OpenCV 中有一个函数cv2.convexityDefect() 可以帮助我们找到凸缺。函数使用如下: hull cv2.convexHull…

【量化】蜘蛛网策略复现

文章目录 蜘蛛网策略研报概述持仓数据整理三大商品交易所的数据统一筛选共有会员清洗数据计算研报要求数据全部代码 策略结果分析无参数策略有参数策略正做反做 MSD技术指标化 蜘蛛网策略 策略来自《东方证券-股指期货趋势交易之蜘蛛网策略——从成交持仓表中捕捉知情投资者行为…

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# Windows窗体技术及基础控件(二)

C# 入门基础知识 - C# Windows窗体技术及基础控件 第12节 Windows窗体技术及基础控件12.8 Label 控件12.9 Button 控件12.10 TextBox控件12.11 RichTextBox 控件12.12 Timer控件12.13 CheckBox 控件12.14 RadioButton 控件12.15 ComboBox 控件、ListBox 控件和CheckedListBox 控…

什么是 NLP (自然语言处理)

NLP(自然语言处理)到底是做什么? NLP 的全称是 Natural Language Processing,翻译成中文称作:自然语言处理。它是计算机和人工智能的一个重要领域。顾名思义,该领域研究如何处理自然语言。 自然语言就是我…

构建全场景解决方案,中国移动磐维数据库赋能数字化建设加速向前

【引言】随着数字化转型的加速,数据成为企业的核心资产,数据库作为数据的基础设施,承载着企业的业务发展和创新能力。如何构建一个高效、稳定、安全的数据库平台,满足不同场景的数据需求,是企业面临的重要挑战。本文将…

前端必须的服务端项目,node + express (这篇文章就够用)包含源代码

作为一个前端程序员,刚开始入门的时候,你觉得只要学习前端代码(js css html)就行了,实际上,到后面很多知识都涉及到服务端,在我们学习的过程中难免需要写一些 demo。比如在浏览器的缓存、或者…