【K8S 基本概念】Kubernets的架构和核心概念及集群搭建

news2024/9/24 11:22:03

一、Kubernets

1.作用:用于自动部署扩展以及管理容器化部署的应用程序,半开源,k8s的底层是基于谷歌go语言开发的,负责自动化运维管理多个容器化的应用的集群,容器编排框架的工具。现在使用的版本1.18-1.24,最主流的版本为1.20

2.k8s的使用场景,为什么要有k8s:可以满足多节点部署,不再是单机部署;可以自动完成更新和部署;跨节点容器之间的通信问题;有自我修复机制,使得整个容器集群可以在用户的期望状态下运行。

3.k8s特点:

自我修复:在节点故障时或者容器启动失败,节点故障时会自动把该节点上的容器重新部署到其它节点;容器启动失败时:k8s会自动的启动容器,一般会启动3次,如果3次启动失败就会认为服务不可用;在容器启动时,也会有检测机制,检测容器启动是否正常,确保集群内部的服务能够正常工作。

弹性伸缩:在一个容器占用机器的资源比较高时,k8s会自动的增加容器数量,在资源占用下降的时候会自动释放容器的数量;以最小的成本运行服务。

自动发布:也叫滚动发布模式、默认模式;k8s在更新时不是一次性更新所有,而是更新一部分,然后再更新剩余的部分,如果有问题可以随时回滚。

服务发现和负载均衡:多个容器有一个统一的访问入口,内部地址和统一的对外地址,自动负载均衡所有管理的容器,无需考虑容器的IP地址。

存储编排:支持外挂存储,内部挂载就是内部存储卷;外部挂载,本地存储,也是可以公有云,NFS、ceph都可以支持。

集中化配置和密钥管理:k8s的所有配置可以加密的形式保存在集群信息中,提高集群的安全性。

任务的批量处理

二、k8s架构和核心组件:

1.架构:主从架构,mater-slave模式就是我们所有的操作、管理、运维都是在主节点完成;从节点在k8s架构中叫node节点,也叫工作节点也就是负载工作的节点

2.组件:主节点

1》kube-apiserver:这是整个集群的大脑,每个组件之间的资源请求和调用操作都是通过apiserver完成的,通过api接口发送到各个组件。所有的资源对象的增删改查和监听也都是由apiserver来完成的,处理之后交给etcd进行存储。

api接口和端口的区别:

api接口:内部的组件和组件之间通信的接口,也就是程序和程序之间,内部调用方法的接口

端口:应用和应用之间,客户端和客户端之间的通信。

2》etcd:k8s内部的存储服务,也是分布式的键值存储系统,存储了k8s集群的配置和用户配置,以及集群内部服务的信息;只有apiserver可以和etcd通信,只有它有读写权限,其它组件要想往etcd存储信息或者读取信息必须通过APIserver;etcd分布式必须是奇数台,要么是一台,要么是三台;etcd说白了就是k8s的数据库。

3》kube-controller-manager:运行管理控制器;k8s集群当中常规任务的后台的线程,是k8s集群当中所有资源对象自动化控制的中心;在k8s集群当中,一个资源对应一个控制器,controller-manager就是管理这些控制器的。

node controller节点控制器,节点出现故障时发现和响应

replication controller副本控制器,我们创建资源对象时可以选择创建的个数(容器数量),保证资源对象声明的副本个创建的数量保持一致;

endpoints controller:端点控制器,指的就是service对应的容器,service来匹配对应的容器,监听容器的变化,端点就是暴露出来对外访问的。

resourcequota controller:资源配额控制器,确保创建的资源对象不会超过设定系统资源量。

namespace controller:项目上进行区分,每一个命名空间都是独立的,namespace是用来管理命名空间的生命周期。

4》kube-scheduler:根据调度算法,为容器选择一个合适的node节点。node节点的资源越富裕,负载越小的node节点部署容器的排名就越高。

3.node节点组件:

1》kubelet:主节点在node节点的监控器与master节点通信,定时向apiserver报告服务在node节点上的运行情况,接受来自master的调整措施。kubelet负载节点上容器的生命周期。也就是master指令传给kubelet,kubelet完成之后传给apiserver,apiserver把node节点更新的信息保存到etcd当中。

2》kube-proxy:在每个node节点上实现容器的网络代理,是service的具体载体,负责网络规划和四层负载均衡工作原理ip+端口,通过iptables和ipvs实现服务的映射访问;apiserver通过监控kube-proxy来完成对容器的更新和端点的维护,把变化的结果保存到etcd。内部服务的负载均衡是四层代理,实现内部容器的负载均衡,k8s的每个节点都有kube-proxy。内部的IP地址:由flanner及calico这两个插件提供内部容器的IP地址。

3》docker:整个集群的最底层。

三、k8s的核心概念:

pod:k8s里面的最小单位,一个pod就是一个正在运行的进程,pod的里面包含着容器,可以是一个容器,也可以是多个容器,探针、调度算法、标签也在pod内;部署在同一pod当中的容器,共享网络、存储和计算资源。不同pod之间只能通过集群分配的IP地址进行通信。

Lable:标签,是k8s的特色管理方式,对资源对象进行分类,通过标签把pod--service---资源对象-控制器组件进行管理。

service:在集群当中每个pod都会设定一个IP地址,pod的消失会导致IP地址也消失,service就是来解决这个问题的核心概念,service----网关。service用于集群的内部访问,service是四层负载均衡,只能是IP+端口

ingress:是整个k8s集群的外部通信,ingress是七层转发,IP+域名

namespace:是一种资源隔离上的方式,逻辑上的隔离,项目越来越多,集群越来越大,通过命名空间把资源分配到各个命名空间,每个命名空间之间资源不共享,使用的是分配的资源,命名空间在集群当中是唯一的,名字不能重复;default默认命名空间,不做任何特殊声明,所有的资源都在默认空间;kube-system系统应用的命名空间;查询特定的资源,一定要加上命名空间。

四、k8s部署:三台    

master:192.168.127.44  etcd 

node 1:192.168.127.55  docker  kubeadm kubelet flannel

node 2: 192.168.127.66

1.关闭防火墙及安全机制

清空iptables策略

关闭swap交换分区

加载ipvs模块

查看时间是否同步:不一致必须做时间同步

三台主机改名

同步操作 su刷新主机名

打开/etc/hosts进行ip和主机名进行映射 

调整内核参数:

安装docker 

 导入阿里云yum源地址

安装docker 

安装docker节点 

拉镜像 

安装kubelet 

设置开机自启

kubelet初始化当中需要的镜像

pause镜像:特殊容器,整个容器的作用就是保持pod当中其它的容器的运行;我们pod首先是拉取镜像,pod当中会有一个pause,pause会在每个pod中创建一个网络命名空间;pod的生命周期结束,pause容器也会退出,释放该pod的网络命名空间。

取消同步:master对adim初始化

在node1、2节点上添加密钥token验证 加入集群

设置节点的kubelet

编辑yum文件、查看node节点状态 

更改yaml文件的IP地址,检查集群的状态(kubectl get cs)

五、pod

1.pod内部的网络通信:

pod内部容器通信:pod创建完之后集群会分配pod一个全局的唯一ip地址,所有pod内的容器共享这个IP地址;pod内部容器可以用本地通信+端口形式互相通信。

2.同一个node节点上的pod通信:

同一个节点上的pod和docker的通信是一样的,都是由doker0的网桥进行通信。

3.不同节点上pod之间通信

想办法通过主机的物理网卡IP地址进行通信,前提podIP地址是不能重复的,pod的IP和node节点的IP进行关联,所以有了CNI网络插件。pod的IP地址进行封装,通过node节点做为路由,转发到其它的node节点,其它的node节点收到数据包之后解包,把数据包转发到指定的pod

六、k8s的网络类型:

1.CNI网络插件: 分为Flannel 和calico

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

2.Flannel插件:让集群内不同节点创建的pod都有一个集群内部唯一的IP地址

flannel:是一种overlay网络,overlay是一种网络虚拟化技术,在底层的物理网络基础之上在创建一个逻辑虚拟的网络层,通过虚拟的网络层实现跨节点的pod之间的通信。

flannel数据转发的方式:udp、host-gw、vxlan

udp:基于应用层转发,配置简单,性能最差,

host-gw:性能最好,但是配置繁琐,一般不用

vxlan:主流模式,基于内核转发

(vlan:通过标识来实现广播域的划分,不同的vlan之间可以通信2--4095)

vxlan:通过vni标识数据中进行广域网的划分,通过flannel虚拟的三层网络层再搭建一个虚拟的二层的数据链路层网络,类似于三层交换机。

vxlan工作模式:flannel.1是ens33虚拟出来的虚拟网卡

mac地址是由arp广播进行确认

3.calico网络:路由维护,路由转发

flanner和calico的区别: 

flanner插件:默认的地址是10.244.0.0/16

flanner三种模式:UDP\VXLAN\HOST-GW

flanner的功能简单,不具备复杂的网络策略的配置能力,小集群或者简单的网络首选

calico:BGP直接路由、路由维护、路由转发

默认网段:192.168.0.0/16

calico是一个可以对网络进行管理的插件,具备配置复杂网络配置的能力,本身的配置比较复杂,对开发人员,运维人员要求比较高。需要复杂配置的需要calico。

基于Flannel 插件创建虚拟网卡主节点

 从节点:先拉包再解包

主节点:

附加自动补全命令:source <(kubectl completion bash)

附加k8s证书签发10年方法:利用update-kubeadm-cert.sh脚本编辑

七、面试题: 

flanner网络你们用的是啥:vxlan,其中flanner.1是由ens33虚拟出来的虚拟网卡,虚拟网卡解决了两个问题,首先是给集群中的pod分配一个全局唯一的IP地址,使其与不同节点上的pod进行通信及与宿主机也可以通信。

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

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

相关文章

开放式耳机怎么戴?佩戴舒适在线的几款开放式耳机分享

开放式耳机的佩戴方式与传统的入耳式耳机有所不同&#xff0c;它采用了一种挂耳式的设计&#xff0c;提供了一种新颖的佩戴体验&#xff0c;以下是开放式耳机的佩戴方式。 1. 开箱及外观&#xff1a;首先&#xff0c;从包装盒中取出耳机及其配件&#xff0c;包括耳机本体、充电…

java-Mybatis框架02

1.#{} 和${}区别 #{} 是占位符&#xff0c;是采用编译方式向sql中传值&#xff0c;可以防止sql注入&#xff0c;如果往sql中传值&#xff0c;使用#{}${} 是将内容直接拼接到sql语句中&#xff0c;一般不用于向sql中传值&#xff0c;一般用于向sql中动态传递列名。区别&#xff…

电控专业课程已开放

凌鸥学园旨在为电机控制爱好者提供学习交流成长平台&#xff0c;缓解电控行业人才缺口扩大趋势&#xff0c;共同打造繁荣行业生态。我们将全面整合LKS MCU相关资料&#xff0c;包括开发环境、应用笔记、教学视频、学习指导等&#xff0c;并设有专业课程。 通过凌鸥学园的专业体…

【RabbitMQ】快速上手

目 录 一. RabbitMQ 安装二. RabbitMQ 核心概念2.1 Producer 和 Consumer2.2 Connection 和 Channel2.3 Virtual host2.4 Queue2.5 Exchange2.6 RabbitMQ 工作流程 三. AMQP四. web界面操作4.1 用户相关操作4.2 虚拟主机相关操作 五. RabbitMQ 快速入门5.1 引入依赖5.2 编写生产…

简单的jar包解压class文件修改再编译成jar包

简单的jar包解压class文件修改再编译成jar包 1. 需求 我们公司有一个项目演示的环境&#xff0c;这个环境是我们公司其他组的项目&#xff0c;我们组只有这个项目的前端&#xff0c;jar&#xff0c;以及部分数据库结构表信息&#xff0c;现在我们已经启动服务可以正常访问&am…

Python中PDF文件的编辑与创建

目录 安装必要的库 编辑现有PDF文件 合并PDF文件 拆分PDF文件 添加水印 注意 创建新的PDF文件 使用reportlab创建PDF 使用Spire.PDF for Python创建PDF 结论 在数字化办公和学习环境中&#xff0c;PDF&#xff08;Portable Document Format&#xff09;文件因其跨平台…

【免费分享】1982-2015华北平原农田蒸散发数据集

华北平原是中国最重要的产粮基地之一&#xff0c;然而该地区水资源缺乏、供需矛盾突出。 在全球气候变化及用水需求日益增加的背景下&#xff0c; 该地区水循环过程变得愈加脆弱。 因此如何准确估算蒸散发、 掌握蒸散发的时空变化规律&#xff0c; 进而合理配置水资源、提高农业…

Lua收集请求日志

Kafka搭建 单机版的kafka搭建非常简单&#xff0c;不过我们今天采用Docker搭建kafka。Kafka使用Zookeeper存储Consumer、Broker信息&#xff0c;安装kafak的时候&#xff0c;需要先安装Zookeeper。 Zookeeper安装&#xff1a; docker run -d --name zookeeper -p 3181:3181 …

《网络安全自学指南》

《网络安全自学教程》 《网络安全自学》 1、网络协议安全1.1、OSI七层模型1.2、TCP/IP协议栈1.3、Wireshark使用1.4、802.1x协议1.5、ARP协议1.6、ARP欺骗1.7、IP协议1.8、ICMP协议1.9、TCP协议1.10、SYN Flood1.11、SSL协议1.12、HTTP协议1.13、DHCP协议 2、操作系统安全2.1、…

<数据集>TACO垃圾识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;6004张 标注数量(xml文件个数)&#xff1a;6004 标注数量(txt文件个数)&#xff1a;6004 标注类别数&#xff1a;18 标注类别名称&#xff1a;[Crankshaft, Centrifugal_body, Washer_container, Circlip_containe…

保存和加载工作区变量

目录 保存工作区变量 加载工作区变量 查看 MAT 文件的内容 在 MATLAB 会话之间并不保留工作区。退出 MATLAB 时&#xff0c;工作区清除。但是&#xff0c;您可以将当前工作区中的任何或所有变量保存到 MAT 文件(.mat)中。之后&#xff0c;只需加载保存的 MAT 文件&#xff0…

工业设备定位激光器在工业领域的应用

在日新月异的工业制造领域&#xff0c;技术的每一次飞跃都深刻影响着生产效率和产品质量的双重提升。其中&#xff0c;工业设备定位激光器作为现代工业自动化的核心元件之一&#xff0c;正以其高精度、高效率和广泛的应用范围&#xff0c;引领着制造业的智能化转型。接下来给大…

<PLC><算法>使用汇川eazy521系列PLC,如何使用LiteST语言对乱序数组进行排序?(冒泡法)

前言 本系列是关于PLC相关的博文&#xff0c;包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌&#xff0c;汇川、信捷等国内品牌。 除了PLC为主要内容外&#xff0c;PLC相关元器件如触摸屏…

NS4054H 40V 高耐压线性锂离子电池充电管理 IC

1 特性  最大输入电压&#xff1a; 40V  输入过压保护电压&#xff1a; 6V  内置输入过流保护&#xff1a; 1A  支持 0V 电池电压充电  充电电流可编程  4.2V 充电浮充阈值电压  电池待机电流&#xff1c; 1uA  内置 C/10 充满截止功能 …

数据结构-manacher算法

第一种情况: 以t为中心&#xff0c;他的回文串为abedeks, 同时i’的回文为ede&#xff0c;那么i的回文也是ede。 第二种情况:以s为中心的回文串为 tabkdedk,而以i’为中心的回文串为abkde&#xff0c;已不再L和R之间。此时以i为中心的回文串就为kdedk. 第三种情况: 以t为中心…

书生大模型实战营第三期基础岛第六课——OpenCompass 评测 InternLM-1.8B 实践

OpenCompass 评测 InternLM-1.8B 实践 基础作业:创建虚拟环境下载并安装opencompass安装相关依赖复制测评数据集到当前目录下并解压测评前环境变量配置使用命令行配置参数法进行评测 基础作业: 使用 OpenCompass 评测 internlm2-chat-1.8b 模型在 ceval 数据集上的性能&#x…

强化学习,第 4 部分:蒙特卡洛控制

目录 一、介绍 1.1 强化学习 2.1 关于此文章 三、ε贪婪策略 四、蒙特卡洛控制 4.1 基本原理 4.2 举个例子 五、On-policy & off-policy 方法 六、重要性采样 6.1 赋予动机 6.2 想法 6.3 应用 七、增量实施 7.1 增量的理论 7.2 常α MC 八、结论 一、介绍 …

Livekit本地部署Egress录制服务

Livekit本地部署Egress录制服务 Egress官方推荐使用Docker方式部署。官方文档 创建Egress配置文件 新建config文件 vim config.yamlconfig.yaml文件内容 log_level: debug# api_key 参考livekit 部署 配置的 api_key: 2yJimTMFeF9h15PHEv api_secret: Mvi9ZgqGJ3LqwEAcTV…

项目管理的七大核心要素

项目管理不仅涉及一系列复杂的活动&#xff0c;还涵盖了多个关键要素&#xff0c;这些要素相互交织&#xff0c;共同构成了项目成功的基石。 项目管理七大要素&#xff1a; 1、明确的项目目标&#xff1a; 项目管理的起点是确立清晰、具体、可衡量的项目目标。这些目标不仅为…

新手网络爬虫利器介绍 之 移动蜂窝网络代理

移动蜂窝代理对接说明 在爬虫与反爬虫斗争愈演愈烈的情况下&#xff0c;各大网站和 App 的风控检测越来越强&#xff0c;其中一项就是 IP 封禁。 为了解决 IP 封禁的困扰&#xff0c;一个有效的方式就是设置代理&#xff0c;设置代理之后&#xff0c;爬虫可以借助代理的 IP 来…