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机制之后,可以直接访问服务名

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】C语言实现单链表的基本操作

单链表基本操作的实现 导言一、查找操作1.1 按位查找1.1.1 按位查找的C语言实现1.1.2 按位查找的时间复杂度 1.2 按值查找1.2.1 按值查找的C语言实现1.2.2 按值查找的时间复杂度 二、插入操作2.1 后插操作2.2 前插操作 三、删除操作结语 导言 大家好,很高兴又和大家…

10 分钟了解 nextTick ,并实现简易版的 nextTick

前言 在 Vue.js 中,有一个特殊的方法 nextTick,它在 DOM 更新后执行一段代码,起到等待 DOM 绘制完成的作用。本文会详细介绍 nextTick 的原理和使用方法,并实现一个简易版的 nextTick,加深对它的理解。 一. 什么是 n…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈

深入浅出图解C#堆与栈 C# HeapingVS Stacking第一节 理解堆与栈 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.csdn.n…

Python 小程序之动态二位数组

动态二位数组 文章目录 动态二位数组前言一、基本内容二、代码编写三、效果展示 前言 没想出啥好点子,这次就给大家写个小程序,动态二维数组吧。 一、基本内容 程序画一个二维的方格,然后里面填上1-10的随机数,每隔一秒更新新一…

网工内推 | 网络服务工程师,HCIE认证优先,带薪年假,年终奖

01 高凌信息 招聘岗位:服务工程师(珠海) 职责描述: 1、负责华为数通(交换机、路由器)、IT(服务器、存储)等任一或多个产品领域的项目实施交付; 2、独立完成华为数通&…

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

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

Python面向对象高级与Python的异常、模块以及包管理

Python面向对象高级与Python的异常、模块以及包管理 一、Python中的继承 1、什么是继承 我们接下来来聊聊Python代码中的“继承”:类是用来描述现实世界中同一组事务的共有特性的抽象模型,但是类也有上下级和范围之分,比如:生物 => 动物 => 哺乳动物 => 灵长型…

【精简】解析xml文件 解决多个同名标签问题 hutool

一、测试XML报文用例 <?xml version"1.0" encoding"UTF-8"?> <TEST><PUB><TransSource>ERP</TransSource><TransCode>DsbrRpl</TransCode><TransSeq>202204081043</TransSeq><Version>1.0…

如何使用凹凸贴图和位移贴图制作逼真的模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 本教程将解释如何应用这些效应背后的理论。在以后的教程中&#xff0…

【C语言】初识C语言

本章节主要目的是基本了解C语言的基础知识&#xff0c;对C语言有一个大概的认识。 什么是C语言 在日常生活中&#xff0c;语言就是一种人与人之间沟通的工具&#xff0c;像汉语&#xff0c;英语&#xff0c;法语……等。而人与计算机之间交流沟通的工具则被称为计算机语言&am…

任务调度-hangfire

目录 一、Hangfire是什么&#xff1f; 二、配置服务 1.配置Hangfire服务 2.添加中间件 3.权限控制 三、配置后台任务 1.在后台中调用方法 2.调用延时方法 3.执行周期性任务 四、在客户端上配置任务 1.在AddHangfire添加UseHangfireHttpJob方法 2.创建周期任务 3.创建只读面板 总…

硅像素传感器文献调研(三)

写在前面&#xff1a; 引言&#xff1a;也是先总结前人的研究结果&#xff0c;重点论述其不足之处。 和该方向联系不大&#xff0c;但还是有值得学习的地方。逻辑很清晰&#xff0c;易读性很好。 1991年—场板半阻层 使用场板和半电阻层的高压平面器件 0.摘要 提出了一种…

低代码,前端工程化项目的未来

一、前言 在软工圣经《人月神话》一书中&#xff0c;作者Brooks指出了软件发展的一个僵局&#xff1a;在落后的项目中增加人手&#xff0c;只会使进度更加落后。 为了更快完成项目&#xff0c;开发团队会发展的极其庞大&#xff0c;以致于所有的时间都花费在沟通和变更决策上&a…

软件测试面试中90%会遇到的问题,面试前刷提高百分之60的通过率

面试的时候&#xff0c;遇到这样的提问&#xff0c;很多人的都会感觉脑子一下一片空白&#xff0c;或者星星点点&#xff0c;不知道从何说起。 一方面不知道面试官问这个问题的意图是什么&#xff1f;也不知道他想得到的答案是什么&#xff1f; 更加不知道该从哪些方面来回答…

vue3 根据用户权限控制左侧菜单和路由拦截

目录 前言 整体思路 详细开发 1.左侧菜单的显隐控制 2.控制路由权限 补充权限控制 总结 前言 我这里是vue3开发的一个后台管理系统&#xff0c;所以涉及用户权限管理&#xff0c;以及页面权限等&#xff0c;其他模块部分可以查看专栏&#xff0c;这里只对怎么实现根据用…

异步通知

文章目录 一、异步通知1、应用场景2、执行流程&#xff08;基于读取按键值的情景&#xff09;2.1、应用程序具体做什么&#xff1f;2.2、驱动程序具体做什么&#xff1f; 三、程序1、驱动程序2、测试应用程序 三、总结 一、异步通知 1、应用场景 当应用程序不想休眠时&#x…

记录一下亿级别数据入库clickhouse

需求背景 公司的业务主要是广告数据归因的&#xff0c;每天的pv数据和加粉数据粗粗算一下&#xff0c;一天几千万上亿是有的。由于数据量大&#xff0c;客户在后台查询时间跨度比较大的数据时&#xff0c;查询效率就堪忧。因而将数据聚合后导到clickhouse进行存储&#xff0c;…

数据库系统原理例题之——SQL 与关系数据库基本操作

SQL 与关系数据库基本操作 第四章 SQL 与关系数据库基本操作【例题】一 、单选题二 、填空题三 、简答题四 、设计题 【答案&解析】一、单选题二、填空题三、简答题四、设计题 【延伸知识点】【延伸知识点答案&解析】 第四章 SQL 与关系数据库基本操作 【例题】 一 、…

视频美颜SDK趋势畅想:未来发展方向与应用场景

当下&#xff0c;视频美颜SDK正不断演进&#xff0c;本文将深入探讨视频美颜SDK的发展趋势&#xff0c;探讨未来可能的方向和广泛的应用场景。 1.深度学习与视频美颜的融合 未来&#xff0c;我们可以期待看到更多基于深度学习算法的视频美颜SDK&#xff0c;为用户提供更高质量…

国标标准和行业标准使用介绍

场景 我现在所在行业是交通行业&#xff0c;主要做城市交通信控相关的工作&#xff0c;后续可能会涉及高速、收费站、稽核收费等业务场景在做产品开发时&#xff0c;我们需要有一个标准可以参考&#xff0c;这些标准必须是公认的&#xff0c;这时就用到了 国家标准、行业标准等…