云计算实训44——K8S及pod相关介绍

news2024/11/13 17:53:49

一、K8S基本概念


1、k8s是什么


K8S是Kubernetes的 缩写,由于k 和 s 之间有⼋个字符,所以因此得名。

Kubernetes 是⼀个可移植的、可扩展的开源平台,⽤于管理容器化 的⼯作负载和服务,可促进声

明式配置和⾃动化。

2、k8s的功能


Kubernetes 的⽬标:

让部署容器化的应⽤简单并且⾼效,提供了应⽤部署,规划,更新,维护的⼀种机制。

Kubernetes 在 Docker 等容器技术的基础上,为容器化的应⽤提供 部署运⾏、资源调度、服务发

现和动态伸缩等⼀系列完整功能,提⾼了⼤规模容器集群管理的便捷性。

主要功能:

容器编排:自动化管理容器的部署、扩展和运行。

负载均衡:自动分配流量到多个容器实例,确保应用的高可用性。

自我修复:监控容器的健康状态,自动重启或替换失败的容器。

服务发现和负载均衡:提供服务发现机制,使得容器能够互相找到并进行通信。

存储编排:自动挂载所需的存储系统,如本地存储、公共云提供的存储等。

自动扩展:根据负载情况自动增加或减少容器实例的数量。

配置管理和密钥管理:管理应用的配置和敏感信息(如密码、API密钥等)。

滚动更新和回滚:支持无停机时间的应用更新,并能够在出现问题时快速回滚到先前的版本。

多集群管理:支持跨多个集群的管理和调度。

3、k8s的架构


K8S 属于主从设备模型(Mater-Slave 架构)

Master 节点:负责 集群的调度、管理和运维(分配活的)

Slave 节点:是运算⼯作负载 节点(⼲活的),被称为 Worker Node 节点。

原理:

Master 需要占据⼀个独⽴服务器运⾏,因为其是整个集群的“⼤ 脑”,⼀旦宕机或不可⽤,那么所

有控制命令都将失效,可对主节点 进⾏⾼可⽤配置。

当 Worker Node 节点宕机时,其上的⼯作负载会被 Master ⾃动转 移到其他节点上。

1)Master 节点组件


API Server

整个集群的控制中枢,提供集群中各个模块之间的数据交换,并将集群状态和信息存储到分布式键-值(key-value)存储系统 Etcd 集群中。

同时它也是集群管理、资源配额、提供完备的集群安全机制的⼊⼝,为集群各类资源对象提供增删改查以及 watch 的 REST API 接⼝。

Controller-manager

集群状态管理器,以保证 Pod 或其他资源达到期望值。当集群中某个 Pod 的副本数或其他资源因故障和错误导致⽆法正常运⾏,没有达到设定的值时,Controller Manager 会尝试⾃动修复并使其达到期望状态。

Scheduler

集群 Pod 的调度中⼼,主要是通过调度算法将 Pod 分配到最佳的 Node 节点,它通过APIServer 监听所有 Pod 的状态,⼀旦发现新的未被调度到任何 Node 节点的Pod(PodSpec.NodeName为空),就会根据⼀系列策略选择最佳节点进⾏调度。

Etcd

⽤于可靠地存储集群的配置数据,是⼀种持久性、轻量型、分布式 的键-值 (key-value) 数据存储组件,作为Kubernetes集群的持久化存储系统。

注:⽣产环境建议存放到单个的SSD硬盘,并且做好冗余。

2)Work Node 节点组件


Kubelet

负责与 Master 通信协作,管理该节点上的 Pod,对容器进⾏健康检查及监控,同时负责上报节点和节点上⾯ Pod 的状态。

Kube-proxy

运⾏在每个 node 节点上,实现 pod 的⽹络代理,维护⽹络规则和 四层负载均衡规则,负责写⼊规则到 iptables 或 ipvs 实现服务映射访问。

Runtime

负责容器的管理 (新版本 K8S 使⽤的是 Containerd)。

CoreDNS

⽤于 Kubernetes 集群内部 Service 的解析,可以让 Pod 把 Service 名称解析成 Service 的 IP 然后通过 Service 的 IP 地址进⾏连接到对应的应⽤上。

Calico

符合 CNI 标准的⼀个⽹络插件,它负责给每个 Pod 分配⼀个不会重复的 IP,并且把每个节点当做⼀各“路由器”,这样⼀个节点的Pod 就可以通过 IP 地址访问到其他节点的 Pod。

Docker

运⾏容器,负责本机的容器创建和管理⼯作。

二、K8S 解决裸跑 Docker 的痛点


1.单机使⽤,⽆法有效集群。

2.随着容器数量的上升,管理成本攀升。

3.没有有效的容灾、⾃愈机制。

4.没有预设编排模板,⽆法实现快速、⼤规模容器调度。

5.没有统⼀的配置管理中⼼⼯具。

6.没有容器⽣命周期的管理⼯具。

7.没有图形化运维管理⼯具。

三、Pod 概念

1、pod是什么

Pod 是 Kubernetes 中的基本构建块,它代表⼀个或⼀组相互关联的容器。Pod 是Kubernetes 的最⼩部署单元,可以包含⼀个或多个容器,这些容器共享存储、⽹络和运⾏配置。

容器之间可以使⽤ localhost:port 相互访问,可以使⽤ volume 等实现数据共享。根据 Docker 的构造,Pod 可被建模为⼀组具有共享命令空间、卷、IP 地址和 Port 端⼝的容器。

2.Pod 的主要特点

1)共享存储:Pod 中的所有容器都可以访问同⼀个存储卷 (Persistent Volume),实现数据共享。

2)共享⽹络:Pod 中的所有容器都共享同⼀个⽹络命名空间,可以相互通信。

3)共享运⾏配置:Pod 中的所有容器都共享相同的运⾏配置,例如容器的启动参数、环境变量等。

3、Pause 容器

Pod 的⽗容器,它主要负责僵⼫进程的回收管理,同时通过 Pause容器可以使同⼀个 Pod ⾥⾯的不同容器进⾏共享存储、⽹络、PID、IPC等。

四、Kubernetes ⼯作流程


1.运维⼈员使⽤ kubectl 命令⼯具向 API Server 发送请求,API Server 接收请求后写⼊到 Etcd 中。

2.API Server 让 Controller-manager 按照预设模板去创建 Pod。

3.Controller-manager 通过 API Server 读取 Etcd 中⽤户的预设信息,再通过 API Server 找到 Scheduler,为新创建的 Pod 选择最合适的 Node ⼯作负载节点。

4.Scheduler 通过 API Server 在 Etcd 找到存储的 Node 节点元信息、剩余资源等,⽤预选和优选策略选择最优的 Node 节点。

5.Scheduler 确定 Node 节点后,通过 API Server 交给这个 Node节点上的 Kubelet 进⾏ Pod 资源的创建。

6.Kubelet 调⽤容器引擎交互创建 Pod,同时将 Pod 监控信息通过 API Server 存储到 Etcd 中。

7.当⽤户访问时,通过 Kube-proxy 负载、转发,访问相应的Pod。

注:决定创建 Pod 清单的是 Controller-manager 控制器,Kubelet 和容器引擎只是⼲活的。

   

               

五、K8S 创建 Pod 流程


1.详细流程


⾸先 Kubectl 创建⼀个 Pod,在提交时转化为 json。

再经过 auth 认证(鉴权),然后传递给 API Server 进⾏处理。

API Server 将请求信息存储到 Etcd 中。

Scheduler 和 Controller-manager 会监听 API Server 的请求。

在 Scheduler 和 Controller-manager 监听到请求后,Scheduler会提交给API Server⼀个list清单 —— 包含的是获取node节点信息。

当 API Server 从 Etcd 获取后端 Node 节点信息后,会同时被Scheduler 监听到,然后 Scheduler 进⾏优选打分制,最后将评估结果传递给 API Server。

⽽后,API Server 会提交清单给对应节点的 Kubelet(代理)。

Kubelet 代理通过 K8S 与容器的接⼝ (例如 containerd) 进⾏交互,假设是 docker 容器,那么此时 kubelet 就会通过dockershim 以及 runc 接⼝与 docker 的守护进程docker-server进⾏交互,来创建对应的容器,再⽣成对应的 Pod。

Kubelet 同时会借助 Metric Server 收集本节点的所有状态信息,然后提交给 API Server。

最后 API Server 将该节点的容器和 Pod 信息存储到 Etcd 中。

2.简化流程


⽤户通过 kubectl 或其他 API 客户端提交 Pod Spec 给 API Server。

API Server 尝试将 Pod 对象的相关信息存⼊ etcd 中,待写⼊操作执⾏完成,API Server 即会返回确认信息⾄客户端。

Controller 通过 API Server 的 Watch 接⼝发现新的 Pod,将 Pod 加⼊到任务队列,并启动 Pod Control 机制创建与之对应的Pod。

所有 Controler 正常后,将结果存⼊ etcd。

Scheduler 通过 API Server 的 Watch 接⼝监测发现新的 Pod,经过给主机打分之后,让 Pod 调度到符合要求的 Node 节点,并将结果存⼊到 etcd 中。

Kubelet 每隔⼀段时间向 API Server 通过 Node name 获取⾃身Node 上要运⾏的 Pod 并通过与⾃身缓存⽐较,来创建新Pod。

Containerd 启动容器。

最后 API Server 将本节点的容器和Pod信息存储到etcd。

    

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

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

相关文章

STM32F1+HAL库+FreeTOTS学习10——任务相关API函数使用

STM32F1HAL库FreeTOTS学习10——任务相关API函数使用 任务相关API函数1. uxTaskPriorityGet()2. vTaskPrioritySet()3. uxTaskGetNumberOfTasks()4. uxTaskGetSystemState()5. vTaskGetInfo()6. xTaskGetCurrentHandle()7. xTaskGetHandle()8. xTaskGetIdleTaskHandle()9. uxTa…

你需要掌握的算法:快慢指针

文章目录 前言龟兔赛跑乌龟能否追上兔子乌龟与兔子在何处相遇龟兔问题的推论 快慢指针基础概念发展历史 快慢指针的应用检测链表是否有环找到链表的中间节点计算链表的环长度找到链表环的入口节点 小结 前言 在处理链表数据结构时,快慢指针是一种非常高效的算法技巧…

鸡尾酒排序算法

目录 引言 一、概念 二、算法思想 三、图例解释 1.采用冒泡排序: 2.采用鸡尾酒排序: 3.对比总结 四、算法实现 1.代码实现 2.运行结果 3.代码解释 五、总结 引言 鸡尾酒排序(Cocktail Sort),也被称为双向冒…

同一天!蚂蚁集团宣布将发布3款AI新产品!腾讯、零一万物、面壁智能推出最新大模型|AI日报

文章推荐 缓解父母焦虑!详细实测!这些免费AI可以成为孩子提高学习能力的得力助手! 附送试听地址!OpenAI ChatGPT被曝将新增8种语音!英特尔酷睿Ultra 200V正式发布|AI日报 今日热点 蚂蚁将发布三款AI新产…

Zynq7020 SDK 初学篇(4)- PL 端 GPIO

1.开发背景 基于 PS 端 GPIO 的基础上,如何调用 PL 端 GPIO 的输入输出 2.开发需求 PL 端按键控制 PL 端 LED 3.开发环境 Zynq7020 Vivado2017.4 4.实现步骤 4.1 设计配置 这里设置 PIO 数量 3 个 由于 PL 端不像 PS 端一样绑定 GPIO,所以需要对上面…

内容营销服务,照亮您的独特优势,助力业务增长

内容营销公司通常会承诺过高但交付不足,而在Digital Commerce Partners,我们走的是相反的方向。我们会调低(然后超越)预期。 由于我们是Copyblogger的SEO和内容营销代理商,我们知道伟大的事情需要时间——这意味着吸引…

【最新华为OD机试E卷-支持在线评测】通过软盘拷贝文件(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试E卷,全、新、准,题目覆盖率达 95% 以上,支持…

人工智能安全治理框架导图

资源链接:《人工智能安全治理框架》1.0版发布_中央网络安全和信息化委员会办公室

【Python机器学习】循环神经网络(RNN)——循环网络的记忆功能

文档中的词很少是完全独立的,它们的出现会影响文档中的其他词或者收到文档中其他词的影响: The stolen car sped into the arena. The clown car sped into the arena. 这两句话可能会产生两种完全不同的情感感受。这两个句子的形容词、名词、动词、介词…

算法入门-深度优先搜索2

第六部分:深度优先搜索 104.二叉树的最大深度(简单) 题目:给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:ro…

Tomcat配置及Servlet相关

目录 Eclipse配置Tomcat 1.配置服务器运行环境 2.新建服务器 3.新建动态Web项目 4.创建类继承HttpServlet 5.启动服务器 6.测试访问 请求转发与重定向 请求转发 重定向 Servlet的作用域 Servlet生命周期 这里以Eclipse为例,IDEA配置参考:IDE…

若依框架使用MyBatis-Plus中的baseMapper的方法报错Invalid bound statement (not found):

Invalid bound statement (not found): com.ruoyi.system.mapper.hc.HcOrderMapper.selectList 解决方法 MybatisSqlSessionFactoryBean sessionFactory new MybatisSqlSessionFactoryBean(); 使用 MybatisSqlSessionFactoryBean 而非 SqlSessionFactoryBean 的原因 MyBatis-…

卷轴模式系统源码开发之功能技术分析

随着互联网经济的蓬勃发展,电商平台之间的竞争日益激烈。为了吸引和保留用户,许多电商平台开始探索和采用创新的商业模式。其中,“卷轴模式”作为一种结合了积分奖励和任务兑换机制的新颖模式,逐渐受到了业界的关注。本文将从技术…

智能提醒助理系列-小程序分享到朋友圈

本系列文章记录“智能提醒助理”wx公众号 建设历程,记录实践经验、巩固知识点、锻炼总结能力。 本篇介绍微信小程序如何分享到朋友圈,以及遇到的登录无权限问题和解决方案。 一、需求出发点 智能提醒小程序的推广是一个难点,朋友圈是一个必要…

柯桥外语学习生活日语之与台风有关的日语表达

与台风有关的日语表达: 台風が近づいている (たいふうがちかづいている) - 台风正在靠近 台風が上陸する (たいふうがじょうりくする) - 台风登陆 台風の進路 (たいふうのしんろ) - 台风的路径 強い台風 (つよいたいふう) - 强烈的台风 台風の目 (たいふうのめ…

深度学习的模型知识点介绍和总结

关注公众号:『AI学习星球』 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号滴滴我 文章目录 1. 神经网络基础1.1 人工神经网络(ANN)1.2 介绍下激活函数 2. 卷积神经网络(CNN)2.1 卷积层2.2 池化层2.3 全连接层…

GoogleTest安装以及使用

文章目录 介绍Ubuntu安装centos7 安装gtest使用方法包含gtest/gtest.h头文件使用TEST()宏定义测试用例使用Google Test断言进行值检查使用RUN_ALL_TESTS()宏运行测试 测试代码 介绍 Google Test(也称为gtest)是Google开发的一个用于C的单元测试库。 它允…

OPenCV结构分析与形状描述符(5)查找图像中的连通组件的函数connectedComponents()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 connectedComponents 函数计算布尔图像的连通组件标签图像。 该函数接受一个具有4或8连通性的二值图像,并返回 N,即标签…

算法入门-深度优先搜索3

第六部分:深度优先搜索 112.路径总和(简单) 题目:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果…

【QT Creator】基本使用

一、常见问题 解答可见以下链接: https://www.cnblogs.com/xia-weiwen/p/10074882.html#title3.1 ** 有关控制台选择构建套件缺失的解决方法可见以下链接 https://blog.csdn.net/xuxu_123_/article/details/131257928 二、如何创建第一个QT项目 第一步&#xf…