k8s:kubernets

news2025/1/21 15:42:06

自动部署、自动扩展和管理的容器化部署的应用程序的一个开源系统

k8s负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具

可以以分布式和集群化的方式进行容器管理

1.18版本,目前最多的是1.20版本,最新的是1.29版本(没人用)

k8s是google的borg系统作为原型,后期经过go语言编写的开源软件

Kubernetes

GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management

GitHub: Let’s build from here · GitHub

https://hub.docker.com

docker微服务,可以满足微服务使用,为什么还要用k8s?

①传统的部署方式:一般意义上的二进制部署,安装 --- 运行 --- 运行维护,需要专业的人员,如果出了故障,还需要人工重新拉起来,而且如果业务量增大,只能水平进行拓展(再部署一个),浪费时间

②容器化部署,可以用dockerfile编写好自定义的容器,基于镜像,随时都可以运行,数量少还可以管的过来,数量一旦太多,管理起来太复杂,而且docker一般是单机运行,没有高可用

k8s的作用:简单、高效的部署容器化应用

1、解决了docker的单机部署和无法集群化的特点

2、解决了随着容器数量的增加,对应增加的管理成本

3、容器的高可用,提供了一种容器的自愈机制

4、解决了容器没有预设模板,以及无法快速、大规模部署,以及大规模的容器调度

5、k8s提供了集中化配置管理的中心

6、解决容器的生命周期的管理工具

7、提供了图形化工具,可以用图形化工具对容器进行管理

k8s是基于开源的容器集群管理系统,在docker容器技术的基础之上

为容器化的应用提供部署、运行、资源调度、服务发现、动态伸缩等一系列完整的功能

大规模容器管理:

1、对docker等容器技术从应用的包 --- 部署 --- 运行 --- 停止 --- 销毁,全生命周期管理

2、集群方式运行,跨机器的容器管理

3、解决docker的跨机器运行的网络问题

4、k8s可以自动修复,使得整个容器集群可以在用户期待的状态下运行

k8s特性:

1、弹性伸缩。可以基于命令或者图形化界面以及CPU的使用情况自动的对部署的程序进行扩容和缩容。以最小的成本运行服务

2、自我修复。节点故障时,重新启动失败的容器,替换和重新部署

3、自带服务发现和负载均衡。k8s为多个容器提供一个统一的访问入口(内部地址和内部的DNS名称),自动负载均衡关联的所有容器

4、自动发布和回滚。k8s采用滚动的策略更新应用。如果更新过程中出现问题,可以根据回滚点进行回滚

5、集中化配置管理和密钥管理。k8s集群内的各个组件都是要进行密钥对验证的。但是k8s的安全性不够,核心的组件不建议部署,可以部署自定义应用

6、存储编排。①可以自动化的把容器部署在节点上;②也可以通过命令或者yml文件(自定义pod)实现指定节点部署;③也可以通过网络存储,NFS、GFS

7、任务进行批次处理。提供一次性的任务,定时任务,满足需要批量处理和分析的场景

k8s的核心组件

1、kube-apiserver

k8s集群中每个组件都是要靠密钥对进行验证,组件之间的通信apiserver

API是应用接口服务,k8s的所有资源请求和调用操作都是kube-apiserver来完成

所有对象资源的增删改查和监听的操作都是kube-apiserver处理完成之后给etcd来进行

api-server是k8s所有请求的入口服务,api-server接收k8s的所有请求(命令行和图形化界面),然后根据用户的具体请求,通知对应的组件展示或者运行命令

APIserver相当于整个集群的大脑

2、kube-controller-manager 运行管理控制器

是k8s集群中处理常规任务的后台线程。是就群众所有资源对象的自动化控制中心。一个资源对应一个控制器。controller-manager负责管理这些控制器

①node controller(节点控制器)  负责节点的发现以及节点故障时的发现和响应

②replication controller(副本控制器)  控制关联pod的副本数,可以随时扩容/缩容

③endpoints controller(端点控制器)  监听service和对应pod的副本变化。端点就是服务暴露出的访问点。要访问这个服务,必须要知道他的endpoint。就是内部每个服务的IP地址+端口

④service account和token controller(服务账户和令牌控制)  为命名空间创建默认账户和API访问令牌

namespace访问不同的命名空间

⑤resourcequota controller(资源控制器)  可以对命名空间的资源使用进行控制,也可以对pod的资源进行控制

⑥namespace controller(命名空间控制器)  管理命名空间的生命周期

⑦service controller(服务节点控制器)  k8s集群和外部的主机之间一个接口控制器

3、kube-scheduler  资源调度组件

根据调度算法为新创建的pod选择一个合适的node节点。可以理解为k8s的所有node节点的调度器,部署和调度node。

预先策略:人工定制。指定的node节点上部署

优先策略:限制条件

根据调度算法选择一台合适的node,node的节点的资源情况,node的资源控制情况等等,选择一个资源最富裕、负载最小的node来部署

4、ETCD  k8s的存储服务,etcd分布式键值存储(key:value)

k8s的关键配置和用户配置,先通过APIservice调用etcd当中的存储信息,然后再实施(这个集群当中,能对etcd存储进行存储进行读写权限的,只有API-service)

主节点上

node组件

1、kubelet:node节点的监视器,以及MASTER节点的通讯器。也可以理解为MASTER在node节点上的眼线。

kubelet会定时向API server汇报自己的node上的运行服务状态,API-server会把节点状态保存到ETCD存储当中。

①接受来自master节点的调度命令

②如果发现自己的状态和master节点的状态不一致,调用docker的接口,同步数据

③对节点上容器的生命周期进行管理,保证节点上的镜像不会占满磁盘空间,退出的容器的资源,进行回收

2、kube-proxy

实现每个node节点上的pod网络代理。负责节点上的网络规划和四层负载均衡工作。负责写入iptables(快淘汰了)ipvs实现服务映射

pod不是容器

kube-proxy本身不直接给pod提供网络代理,proxy是service资源的载体

kube-proxy实际上代理的是pod的集群网络(虚拟网络)

k8s的每个node节点上都有一个kube-proxy组件

3、docker:容器引擎,运行容器,负责本机的容器创建和管理

k8s要创建pod时,kube-scheduler调度到节点上(node节点),节点上的kubelet只是docker启动特定的容器.

kubelet把容器的信息收集发送给主节点。只需要在主节点发布指令,节点上kubelet就会指示docker拉取镜像、启动、停止容器

4、pod运行在节点上的。是k8s当中创建或者部署的最小/最简单的基本单位,一个pod代表集群上正在运行的一个进程

同一个pod内的每个容器就是一颗豌豆

pod是由一个或者多个容器组成,pod中的容器共享网络、存储和计算资源。可以部署在不同的docker主机上

deployment:无状态应用部署,作用就是管理和控制pod以及replicaset(运行几个容器)。管控他的运行状态

replicaset:保证pod的副本数量。副本数量受控于deployment

在k8s中,部署服务,实际上就是pod,ployment部署的服务就是pod。replicaset就是来定义pod的容器数量

可以保证pod的不可重复性。在当前命名空间不能重复,不同的命名空间名称可以重复

官方推荐使用deployment进行服务部署

daemonset:确保所有节点运行同一类的pod

statefulset:有状态应用部署

job:可以在pod中设置一次性任务,运行完即退出

cronjob:一直在运行的周期性任务

5、service组件

在k8s集群当中,创建一个pod之后,都会其中运行的容器分配一个集群内的ip地址,由于业务的变更,容器可能会发生变化,IP地址也会发生变化,service的作用就是提供整个pod对外统一的IP地址

service就是一个网关(路由器),通过访问service就可以访问pod内部的容器集群。

service能实现负载均衡和代理-----------kube-proxy---------来实现负载均衡

service是k8s微服务的核心,屏蔽了服务的细节,统一的对外暴露的端口,真正实现了“微服务”

service的流量调度:userspace(用户空间,废弃),iptables(即将废弃)。ipvs(目前1.20都用)

6、label标签

k8s的特色管理方式,分类管理资源对象

node pod service namespace等等

label标签可以自定义

label选择器:等于、不等于。相当于使用定义的标签

Q:ingress和service的区别

A:ingress:k8s集群对外暴露提供访问的接口,属于应用层。七层代理,转发的是http请求,http/https

service是四层转发,转发的是流量

namespace:在k8s上可以通过namespace来实现资源隔离、项目隔离

通过namespace可以把集群划分为多个资源不可共享的虚拟集群组

不同命名空间里面的资源名称可以重复

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

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

相关文章

链表总结(2)

theme: fancy 又是链表专题啦,老样子,标题就是leetcode链接,在这里只放我的代码答案和注释 141环形链表 public class Solution {public boolean hasCycle(ListNode head) {if(head null || head.next null) return false;if(head.nex…

视频编辑与制作,视频尺寸修改器

你是否曾因为视频尺寸与平台不匹配无法上传而烦恼?这个时候一款视频尺寸修改工具,就能帮你轻松搞定。不论是为了适应不同的平台要求,还是为了获得不一样的观看体验,【视频剪辑高手】都能为你提供完美的解决方案。 所需工具&#…

Linux之定时任务调度

crond crond是Linux系统中的一个守护进程,主要用于周期性地执行某种任务或等待处理某些事件。而crondtab是配套的工作,用于定时任务的设置。 语法 crontab [选项]常用选项 入门案例 执行crontab -e命令输入任务到调度文件中 */1 * * * * ls -l /et…

竞赛保研 基于卷积神经网络的乳腺癌分类 深度学习 医学图像

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

数据库——创建存储过程、函数和触发器安装phpmyadmin

1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机,在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作: (1)登录 MySQL,在 MySQL 中创建用户,…

基于ssm的二手商品交易平台+vue论文

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

NFC物联网智慧校园解决方案

近场通信(Near Field Communication,NFC)又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输交换数据。这个技术由免接触式射频识别(RFID)发展而来,并兼容 RFID,主要用于…

vue实力挂载的过程中都发生了什么?今天来聊聊Vue实例挂载的过程

一、思考 我们都听过知其然知其所以然这句话 那么不知道大家是否思考过new Vue()这个过程中究竟做了些什么?过程中是如何完成数据的绑定,又是如何将数据渲染到视图的等等 一、分析 首先找到vue的构造函数 源码位置:src\core\instance\in…

SAP CO系统配置-与PS集成相关配置(机器人制造项目实例)

维护分配结构 配置路径 IMG菜单路径:控制>内部订单>实际过帐>结算>维护分配结构 事务代码 OKO6 维护结算参数文件 定义利润分析码

C# 通过SharpCompress.Archives.Rar解压RaR文件

/// <summary>/// 解压一个Rar文件/// </summary>/// <param name"RarFile">需要解压的Rar文件&#xff08;绝对路径&#xff09;</param>/// <param name"TargetDirectory">解压到的目录</param>/// <param name&…

4.26 构建onnx结构模型-Suqeeze

前言 构建onnx方式通常有两种&#xff1a; 1、通过代码转换成onnx结构&#xff0c;比如pytorch —> onnx 2、通过onnx 自定义结点&#xff0c;图&#xff0c;生成onnx结构 本文主要是简单学习和使用两种不同onnx结构&#xff0c; 下面以 Suqeeze 结点进行分析 方式 方法一…

普中STM32-PZ6806L开发板(HAL库函数实现-USART1 printf+scanf/gets)

简介 实现printfscanf/gets通过USART1 的发送接收。 电路原理图 板载USB CH340串口电路原理图主芯片串口引脚图 我的板子板子自带串口坏掉了, 所以使用USB转TTL线, 连接如下 电路原理图 实物图 其他知识 scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符…

antv/x6_2.0学习使用(三、内置节点和自定义节点)

内置节点和自定义节点 一、节点渲染方式 X6 是基于 SVG 的渲染引擎&#xff0c;可以使用不同的 SVG 元素渲染节点和边&#xff0c;非常适合节点内容比较简单的场景。面对复杂的节点&#xff0c; SVG 中有一个特殊的 foreignObject 元素&#xff0c;在该元素中可以内嵌任何 XH…

MybatisPlus关于${ew.customSqlSegment},${ew.sqlSegment},${ew.sqlSelect},${ew.sqlSet}

Wrapper中 ${ew.customSqlSegment} 是where 条件 ${ew.sqlSegment} 只有条件 ${ew.sqlSelect}是指查询的字段,如果需要使用 ${ew.sqlSet}是在更新时候使用,使用方式 了解即可,不建议使用 毕竟${}有sql注入风险

基于ssm的教师办公管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本教师办公管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

算法刷题:最大异或对(Trie树扩展)、食物链(并查集扩展)

目录 引言一、最大异或对&#xff08;Trie树扩展&#xff09;1.题目描述2.解题思路3.代码实现4.测试 二、食物链&#xff08;并查集扩展&#xff09;1.题目描述2.解题思路3.代码实现4.测试 引言 这两个扩展题能够让我们更加的熟悉Trie树和并查集的使用&#xff0c;这两道题可以…

AI人工智能大模型讲师叶梓《基于人工智能的内容生成(AIGC)理论与实践》培训提纲

【课程简介】 本课程介绍了chatGPT相关模型的具体案例实践&#xff0c;通过实操更好的掌握chatGPT的概念与应用场景&#xff0c;可以作为chatGPT领域学习者的入门到进阶级课程。 【课程时长】 1天&#xff08;6小时/天&#xff09; 【课程对象】 理工科本科及以上&#xff0…

用通俗易懂的方式讲解大模型:HugggingFace 推理 API、推理端点和推理空间使用详解

接触 AI 的同学肯定对HuggingFace[1]有所耳闻&#xff0c;它凭借一个开源的 Transformers 库迅速在机器学习社区大火&#xff0c;为研究者和开发者提供了大量的预训练模型&#xff0c;成为机器学习界的 GitHub。 在 HuggingFace 上我们不仅可以托管模型&#xff0c;还可以方便…

C#上位机与欧姆龙PLC的通信08----开发自己的通讯库读写数据

1、介绍 前面已经完成了7项工作&#xff1a; C#上位机与欧姆龙PLC的通信01----项目背景-CSDN博客 C#上位机与欧姆龙PLC的通信02----搭建仿真环境-CSDN博客 C#上位机与欧姆龙PLC的通信03----创建项目工程-CSDN博客 C#上位机与欧姆龙PLC的通信04---- 欧姆龙plc的存储区 C#上…

平台无关性和语言无关性的记录

目录 背景 平台无关性 语言无关性 背景 最近在学习Java虚拟机&#xff08;JVM: Java Virtual Machine&#xff09;,在学习过程中&#xff0c;再一次学习了JVM的平台无关性这一特性&#xff0c;此外也了解到了虚拟机的另外一种中立特性 --- 语言无关性&#xff0c;下面进行简单…