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

news2025/1/19 17:12:05

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.coloradmin.cn/o/1340000.html

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

相关文章

java并发编程六 ReentrantLock,锁的活跃性

多把锁 一间大屋子有两个功能:睡觉、学习,互不相干。 现在小南要学习,小女要睡觉,但如果只用一间屋子(一个对象锁)的话,那么并发度很低 解决方法是准备多个房间(多个对象锁&#xf…

echart地图的小demo12.27

图形&#xff1a; DataV.GeoAtlas地理小工具系列 点击以上链接进入--》 再点击箭头---》复制坐标到文件&#xff1a; 取名为 china.json中 &#xff08;文件名自定义&#xff09; <template><div class"map" ref"chartMap">地图</div>…

【Pytorch】学习记录分享9——PyTorch新闻数据集文本分类任务实战

【Pytorch】学习记录分享9——PyTorch新闻数据集文本分类任务 1. 认为主流程code2. NLP 对话和预测基本均属于分类任务详细见3. Tensorborad 1. 认为主流程code import time import torch import numpy as np from train_eval import train, init_network from importlib impo…

Neural Networks 期刊投稿指南

一 简介 这是国际神经网络学会、欧洲神经网络学会和日本神经网络学会的官方期刊。 论文类型 文章&#xff1a; 原创的、全文长度的文章将被考虑&#xff0c;前提是它们除了摘要形式外尚未发表&#xff0c;并且没有同时在其他地方进行审查。作者可以自愿但不是必须建议一位编辑…

<JavaEE> TCP 的通信机制(二) -- 连接管理(三次握手和四次挥手)

目录 TCP的通信机制的核心特性 三、连接管理 1&#xff09;什么是连接管理&#xff1f; 2&#xff09;“三次握手”建立连接 1> 什么是“三次握手”&#xff1f; 2> “三次握手”的核心作用是什么&#xff1f; 3&#xff09;“四次挥手”断开连接 1> 什么是“…

NineData产品功能重点发布(11月下+12月上)

12 月上半月 1.1 SQL 任务支持 MongoDB 介绍&#xff1a;SQL 任务功能已支持 MongoDB 数据源&#xff0c;可以通过 SQL 任务发起对 MongoDB 的变更申请&#xff0c;支持立即执行或定时执行。 场景&#xff1a; 安全变更&#xff1a;需要对企业成员提交的数据变更进行预审的场…

「Kafka」入门篇

「Kafka」入门篇 基础架构 Kafka 快速入门 集群规划 集群部署 官方下载地址&#xff1a;http://kafka.apache.org/downloads.html 解压安装包&#xff1a; [atguiguhadoop102 software]$ tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/修改解压后的文件名称&#xff1a; [a…

哪个品牌的运动耳机比较好?蓝牙无线运动耳机推荐

​在运动时&#xff0c;一副合适的耳机能够让你的运动体验提升到一个新的层次。运动耳机需要具备耐用性、稳定性和优秀的音质&#xff0c;以适应各种运动场景。考虑到这些要求&#xff0c;我将为大家推荐几款在运动场景中表现优异的耳机&#xff0c;它们将是你运动时的理想伴侣…

PowerShell对象——数据的另一个名称

PowerShell对象—数据的另一个名称 实验 要求&#xff1a;需要运行PowerShell v3 或更新版本PowerShell的计算机 任务&#xff1a; 找出生成随机数字的Cmdlet 找出显示当前时间和日期的Cmdlet 任务#2的Cmdlet产生的对象类型是什么&#xff1f;&#xff08;由Cmdlet产生的对…

【Linux基础开发工具】Linux调试器-gdb

目录 前言 1. 背景 2. 基本使用 总结 前言 GDB&#xff08;GNU Debugger&#xff09;是一个功能强大的开源调试器&#xff0c;它用于调试C、C等程序&#xff0c;在Linux环境下软件开发的过程中&#xff0c;调试是一个至关重要的环节。无论是在开发新的软件还是维护现有的代…

linux cuda环境搭建

1&#xff0c;检查驱动是否安装 运行nvidia-smi&#xff0c;如果出现如下界面&#xff0c;说明驱动已经安装 记住cuda版本号 2&#xff0c;安装cudatoolkit 上官网CUDA Toolkit Archive | NVIDIA Developer 根据操作系统选择对应的toolkit 如果已经安装了驱动&#xff0c;选…

Visual Studio 2013 中创建一个基于 Qt 的动态链接库:并在MFC DLL程序中使用

在本地已经安装好 Qt 的情况下&#xff0c;按照以下步骤在 Visual Studio 2013 中创建一个基于 Qt 的动态链接库&#xff1a; 一、新建 Qt 项目&#xff1a; 在 Visual Studio 中&#xff0c;选择 “文件” -> “新建” -> “项目…”。在 “新建项目” 对话框中&#…

性能手机新标杆,一加 Ace 3 发布会定档 1 月 4 日

12 月 27 日&#xff0c;一加宣布将于 1 月 4 日发布新品一加 Ace 3。一加 Ace 系列秉持「产品力优先」理念&#xff0c;从一加 Ace 2、一加 Ace 2V 到一加 Ace 2 Pro&#xff0c;款款都是现象级爆品&#xff0c;得到了广大用户的认可与支持。作为一加 2024 开年之作&#xff0…

立体匹配算法(Stereo correspondence)SGM

SGM(Semi-Global Matching)原理&#xff1a; SGM的原理在wiki百科和matlab官网上有比较详细的解释&#xff1a; wiki matlab 如果想完全了解原理还是建议看原论文 paper&#xff08;我就不看了&#xff0c;懒癌犯了。&#xff09; 优质论文解读和代码实现 一位大神自己用c实现…

关于“Python”的核心知识点整理大全44

目录 ​编辑 15.3.4 模拟多次随机漫步 rw_visual.py 注意 15.3.5 设置随机漫步图的样式 15.3.6 给点着色 rw_visual.py 15.3.7 重新绘制起点和终点 rw_visual.py 15.3.8 隐藏坐标轴 rw_visual.py 15.3.9 增加点数 rw_visual.py 15.3.10 调整尺寸以适合屏幕 rw_vi…

介绍几种mfc140u.dll丢失的解决方法,找不到msvcp140.dll要怎么处理

如果你在使用电脑时遇到mfc140u.dll丢失错误时&#xff0c;这可能会导致程序无法正常运行&#xff0c;但是大家不必过于担心。今天的这篇文章本将为你介绍几种mfc140u.dll丢失的解决方法&#xff0c;找不到msvcp140.dll要怎么处理的一些解决方法。 一.mfc140u.dll文件缺失会有什…

Docker自建私人云盘系统

Docker自建私人云盘系统。 有个人云盘需求的人&#xff0c;主要需求有这几类&#xff1a; 文件同步、分享需要。 照片、视频同步需要&#xff0c;尤其是全家人都是用的同步。 影视观看需要&#xff08;分为家庭内部、家庭外部&#xff09; 搭建个人网站/博客 云端OFFICE需…

【超图】SuperMap iClient3D for WebGL/WebGPU —— 数据集合并缓存如何控制对象样式

作者&#xff1a;taco 最近在支持的过程中&#xff0c;遇到了一个新问题&#xff01;之前研究功能的时候竟然没有想到。通常我们控制单个对象的显隐、颜色、偏移的参数都是根据对象所在的图层以及对象单独的id来算的。那么问题来了&#xff0c;合并后的图层。他怎么控制单个对象…

PointNet人工智能深度学习简明图解

PointNet 是一种深度网络架构&#xff0c;它使用点云来实现从对象分类、零件分割到场景语义解析等应用。 它于 2017 年实现&#xff0c;是第一个直接将点云作为 3D 识别任务输入的架构。 本文的想法是使用 Pytorch 实现 PointNet 的分类模型&#xff0c;并可视化其转换以了解模…

【开源】基于JAVA的智能教学资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…