k8s 基础理论

一、k8s概述

K8S 的全称为 Kubernetes,其作用为用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。

官网:https://kubernetes.io

GitHub:https://github.com/kubernetes/kubernetes

1、k8s主要功能

  • ●跨主机编排容器。
  • ●更充分地利用硬件资源来最大化地满足企业应用的需求。
  • ●控制与自动化应用的部署与升级。
  • ●为有状态的应用程序挂载和添加存储器。
  • ●线上扩展或缩减容器化应用程序与它们的资源。
  • ●声明式的容器管理,保证所部署的应用按照我们部署的方式运作。
  • ●通过自动布局、自动重启、自动复制、自动伸缩实现应用的状态检查与自我修复。
  • ●为多个容器提供服务发现和负载均衡,使得用户无需考虑容器IP问题。

2、k8s特点

  • 弹性伸缩:Kubernetes 可以自动扩展和收缩容器,根据负载进行自动调整。
  • 自动容器部署和管理:Kubernetes可以自动化容器部署和管理,无需手动干预。
  • 容器编排:Kubernetes 支持多层容器编排,使得容器的关系更加复杂和活。
  • 负载均衡:Kubernetes 可以在多个节点上自动分配负载,实现负载均衡。
  • 容器健康检查和自动恢复:kubernetes 可以自动检査容器状态,如果发现出现故障可以自动恢复。
  • 容器存储管理:Kubernetes 可以管理容器的存储,包括存储卷、存储卷模板等功能

二、K8S的架构

K8S有 master 和 worker node 两类节点:

master节点(负责K8S集群的管理和资源调度等运维工作)
apiserver:是所有服务请求的统一访问入口
controller-manager:控制器管理器,负责管理K8S各种资源对象的控制器;并通过apiserver监控整个K8S集群的资源状态,并确保资源始终处于预期的工作状态
scheduler:资源调度器,负责Pod资源的调度,通过调度算法(预选/优选策略)为要部署的Pod选择最合适的node节点
etcd:K8S集群的数据库,是一种键值对存储结构的分布式数据库,负责存储K8S集群所有的重要信息,仅apiserver拥有访问和读写权限

worker node节点(负责运行工作负载,即容器应用)
kubelet:接收apiserver发来的请求,创建管理Pod和容器,跟容器引擎交互实现对容器生命周期的管理;收集node节点的资源信息和Pod的运行状态发送给apiserver
kube-proxy:作为service资源的载体,实现对Pod的网络代理,负责维护Pod集群网络规则和四层代理工作
容器引擎:运行管理容器

三、K8S创建Pod资源的工作流程

1、用户通过客户端发生创建Pod的请求给apiserver
2、apiserver接收到请求后,会先把请求信息写入到etcd中保存,再找controller-manager根据请求信息的资源预设模板创建Pod资源
3、再通过apiserver找scheduler调度新创建的Pod,scheduler根据调度算法的预选策略和优选策略筛选出最合适的node节点进行调度
4、再通过apiserver找对应的node节点上的kubelet去创建和管理Pod,kubelet会跟容器引擎交互来管理Pod及其容器的生命周期
5、用户还可以通过apiserver在kube-proxy上写入iptables或ipvs网络规则,创建service资源,实现对Pod集群网络代理

四、K8S资源对象

Pod:是K8S能够创建和管理的最小单位。一个Pod里可以包含一个或多个应用容器,同一个Pod里的容器之间共享网络、存储等资源

Pod控制器:deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持Pod副本数始终符合预期状态)和Pod(容器化的应用程序)
                     statefulset:部署有状态应用(有实时数据需要存储)
                     daemonset:在所有node节点上都部署同一种的Pod
                     job:一次性的部署短期任务的Pod(执行完任务后会自动退出的容器应用)
                     cronjob:周期性的部署短期任务的Pod(执行完任务后会自动退出的容器应用)

service:在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问入口(clusterIP),只支持四层代理转发。service通过标签选择器关联Pod的标签,从而自动发现相关Pod的端点(PodIP:Port)

ingress:作为K8S集群外部的访问入口,可定义ingress规则根据用于请求的域名或URL请求路径转发给指定的service,支持七层代理转发。ingress通过配置规则将不同的域名或URL路径关联不同的service资源

五、K8S资源配置信息

apiversion:指定资源对象的在K8S中使用的api接口版本
kind:指定资源对象的类型
metadata:指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation指定注释、label指定标签
spec:指定资源对象的资源配置清单(配置属性) ,比如副本数、镜像、网络模式、存储卷、label selector标签选择器
status:资源对象在当前的运行状态信息

label:标签,将一个或多个键值对标识关联到某个资源对象,用于对资源对象进行分组查询和筛选
label selector:标签选择器,用于查询和筛选拥有相关标签的资源对象
annotation:注释,用作于资源对象的注释信息;还可以在一些特殊的资源对象里用作于设置额外的功能特性
name:资源名称
namespace:命名空间,用于隔离资源名称的。在同一个命名空间中,同类型的资源对象的名称是唯一的

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

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

相关文章

基于Python的热点分析预警系统

项目:基于Python的热点分析预警系统 摘 要 基于网络爬虫的数据可视化服务系统是一种能自动从网络上收集信息的工具,可根据用户的需求定向采集特定数据信息的工具,本项目通过研究爬取微博网来实现微博热点分析数据信息可视化系统功能。对于采…

vue 常用库

vue-cropper 一个优雅的图片裁剪插件 dayjs Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样 NutUI-Bingo 基于 NutUI 的抽奖组件库,助力营销活动和小游戏场景。

每日OJ题_二叉树dfs③_力扣814. 二叉树剪枝

目录 力扣814. 二叉树剪枝 解析代码 力扣814. 二叉树剪枝 814. 二叉树剪枝 难度 中等 给你二叉树的根结点 root ,此外树的每个结点的值要么是 0 ,要么是 1 。 返回移除了所有不包含 1 的子树的原二叉树。 节点 node 的子树为 node 本身加上所有 n…

qml的ScrollView如何正确监听滚动条滚动

qt帮助文档,以及网上,以及AI目前都没有这个知识点的介绍,通过九牛二虎之力摸索出来的方法,ScrollBar.horizontal.onPositionChanged事件监听,children[2]获取到水平滚动条,进而获取到position,直…

18. 四数之和 - 力扣(LeetCode)

问题描述 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): …

解决IDEA的Project无法正常显示的问题

一、问题描述 打开IDEA,结果发现项目结构显示有问题: 二、解决办法 File -> Project Structure… -> Project Settings (选Modules),然后导入Module 结果: 补充: IDEA提示“The imported module settings a…

分享:大数据信用查询去什么样的平台查?

在当今社会,大数据信用查询已经成为企业和个人了解自身信用状况的重要途径。然而,面对众多的大数据信用查询平台,如何选择一个可靠的平台进行查询呢?本文将为您介绍一些选择大数据信用查询平台的关键因素。 一、平台信誉度 首先,…

编译运行ORB-SLAM2和ORB-Line-SLAM遇到问题总结

运行ORB-SLAM2 运行教程参考ORB_SLAM2_detailed_comments,但是遇到报错,在文章中有说明,可参照这篇博客操作:ORB_SLAM2–源码编译。 运行ORB_Line_SLAM 资料较少,测试发现其编译步骤与ORB_SLAM2相同,但是…

k8s部署模板

1. 部署前端项目 # 定义 Deployment 对象,用于部署前端应用 apiVersion: apps/v1 kind: Deployment metadata:labels:app: xingtu-ui # 应用标签,用于选择器name: xingtu-ui # 部署的名称namespace: xingtu-cloud # 指定部署的命名…

linux系统消息队列的模式和介绍

消息队列 消息队列的两种模式点对点模式(生产者消费者模型)发布/订阅模式(发布者和订阅者模型) 常用消息队列介绍RabbitMQ主要特性安装需要优点缺点 ActiveMQ主要特性安装需要优点缺点 RocketMQ主要特性安装需要优点缺点 kafka主要…

【Vue】v-for中:key中item.id与Index使用的区别

先说结论&#xff0c;推荐使用【:key"item.id"】而不是将数组下标当做唯一标识&#xff0c;前者能做到全部复用 场景&#xff1a;删除无序列表中的<li>标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

vulfocus靶场搭建

vulfocus靶场搭建 什么是vulfocus搭建教程靶场配置场景靶场编排靶场优化 什么是vulfocus Vulfocus 是一个漏洞集成平台&#xff0c;将漏洞环境 docker 镜像&#xff0c;放入即可使用&#xff0c;开箱即用&#xff0c;我们可以通过搭建该靶场&#xff0c;简单方便地复现一些框架…

mysql删除idb文件,或者idb文件损坏后的修复

由于使用docker磁盘已满&#xff0c;导致建立表过程中&#xff0c;数据的插入存在问题&#xff0c;进而导致后续启动时读取该表的idb存在问题&#xff0c;导致无法启动 现在提供一种思路处理该种情况 innodb_force_recovery 选项可以让你在某些类型的错误发生时仍然启动 MySQL。…

OpenSIPS3.4.3的db_virtual模块

请看下面的配置&#xff1a; loadmodule "db_postgres.so" loadmodule "db_virtual.so" modparam("db_virtual", "db_urls", "define group FAILOVER") modparam("db_virtual", "db_probe_time", 10) …

纯血鸿蒙系统,拿什么与安卓、iOS比?

鸿蒙系统的出现就是来打破这种僵局的&#xff0c;华为鸿蒙是以生态系统为基本而产生的独立系统。如果与Android、iOS系统无异何必浪费时间。生态圈为18N&#xff0c;其中不止是app应用层开发、还有智能家居、家电、数码、车载等等一系列生态闭环。 而华为鸿蒙是全栈自研底座&am…

【明道云】如何实现循环处理

【背景】 发现明道云工作流中并没有直接的循环逻辑模块&#xff0c;那么如何实现循环呢&#xff1f; 【方案】 通过主流程获取多条数据&#xff0c;搭配子流程来实现遍历循环效果。子流程中可以直接感应获取单行数据。 如果直接在主流程中通过直接获取方式获取多条数据&…

向量数据库Milvus字符串查询

因为项目需要&#xff0c;用到了向量数据库Milvus&#xff0c;刚开始都没有遇到问题&#xff0c;直到一个表的主键是字符串&#xff08;VARCHAR&#xff09;&#xff0c;在查询时刚好要以该主键作为查询条件&#xff0c;此时会出现异常&#xff0c;特此记录一下。 记住&#xf…

如何理解CSS的边框宽度?

CSS 边框宽度学习手记 CSS 边框宽度小概念 在CSS的世界里&#xff0c;border-width这个属性真的很实用&#xff0c;它能帮我指定HTML元素四周边框的宽度。这个宽度嘛&#xff0c;可以用像素px、点pt、厘米cm、相对单位em这些来表示&#xff0c;很方便吧&#xff01;还有呢&am…

算法竞赛STL:array的使用方法

算法竞赛STL&#xff1a;array的使用方法 文章目录 算法竞赛STL&#xff1a;array的使用方法array array 容器描述&#xff1a; array是一种固定大小的容器&#xff0c;它包含指定数量的元素。每个元素都有一个非负整数索引&#xff0c;用于访问或修改它。 使用方法&#xff…

Camunda和SpringBoot的兼容版本

官网 https://docs.camunda.org/manual/7.15/user-guide/spring-boot-integration/version-compatibility/ Camunda和SpringBoot的兼容版本