【云原生】容器编排工具Kubernetes

news2024/12/23 13:48:45

目录

一、 K8S介绍

官网地址:

1.1docker编排与k8s编排相比

1.2特性

1.3功能

二、K8S重要组件

2.1核心组件

(1)Kube-apiserver

(2)Kube-controller-manager

(3)Kube-scheduler

(4)Node

①kubelet

②kube-proxy

③docker

(5)etcd

2.2Kubernetes工作原理

三、Pod

3.1 Pod控制器

(1)Deployment

(2)ReplicaSet

(3)StatefulSet

(4)DaemonSe

(5)Job 和 CronJob

四、五大标签选择器

4.1Label(标签)

4.2Service

(1)三个流量调度模式

4.3Ingress

4.4Name

(1)资源

4.5Namespace(命名空间选择器)


一、 K8S介绍

Kubernetes 发布于 2014年6月, 源于希腊语,意为 “舵手” 或 “领航员”,由于 kubernetes从k 到s中间有8个字母,所以简称k8s。

Google 在十年前就已经将容器化作为基础架构,borg 就是 Google 内部的大型集群管理系统,borg 系统并不开源。在docker 大规模容器化后,Google 为了迅速占领 docker 容器化管理, Google 基于 borg 的设计理念使用 Go 语言开发新的组件系统 Kubernetes,并且开源给了CNCF。

官网地址:

k8s官网地址:Kubernetes Documentation | Kubernetes

中文版:https://kubernetes.io/zh/docs/concepts/overview/what-is-kubernetes/

1.1docker编排与k8s编排相比

  • 单机使用,无法有效集群
  • 随着容器数量的上升,管理成本攀升
  • 没有有效的容灾、自愈机制
  • 没有预设编排模版,无法实现快速、大规模容器调度
  • 没有统一的配置管理中心工具
  • 没有容器生命周期的管理工具
  • 没有图形化运维管理工具

1.2特性

 弹性伸缩  以最小的成本运行服务

 自我修复 
 自动发布(默认回滚发布模式)
 集中化配置管理和密钥管理(密钥是加密的)
 存储编排,支持外挂存储并对外挂存储资源进行编排
 任务批量处理运行
 提供一次性任务,定时任务;满足批量数据处理和分析的场景。

1.3功能

以集群的方式运行、管理跨机器的容器
解决docker跨机器容器之间的通讯问题
K8S的自我修复机制使得容器集群总在运行在用户期望的状态

二、K8S重要组件

2.1核心组件

(1)Kube-apiserver

(2)Kube-controller-manager

负责管理各种控制器,监控集群状态并自动执行相应操作。

 

(3)Kube-scheduler

根据资源需求和调度策略,将 Pod 调度到合适的节点上运行。

预选策略(predicate)

优选策略(priorities)

(4)Node

①kubelet

运行在每个节点上,负责管理容器和 Pod 生命周期,并与 API Server 通信。

②kube-proxy

负责为 Pod 提供网络代理和负载均衡功能。

③docker

容器引擎,运行容器,负责本机容器的创建删除

(5)etcd

分布式键值存储系统,用于存储集群的配置数据和状态。

这些核心组件共同协作,实现了 k8s 的主要功能,如容器编排、自动扩展、服务发现和负载均衡等。此外,还有其他辅助性的组件如 DNS 服务(CoreDNS)、日志收集(Fluentd)、监控(Prometheus)等,它们可以根据具体需求来选择是否部署。

2.2Kubernetes工作原理

用户通过kubectl工具发送请求通过认证给kube apiserver来创建pod请求,apiserver会将相关信息写入etcd当中,随后apiserver会找kube controller-manager创建相应pod,controller-manager会通过apiserver会在etcd读取数据寻找相应pod信息,之后apiserver找到scheduler去调度pod,关于pod调到哪里还是通过apiserver读取etcd里的数据获得相关node节点信息,并找到最适合运行pod的节点,最后scheduler通过算法调度出预选策略优选策略,算出应该把pod调度到哪个node节点上运行,之后scheduler通过apiserver找到对应node节点上的kubelet组件,通过这个组件创建并维护pod,相关容器则是通过docker创建。然后这些pod通过kube proxy关联起来成为集群,kube proxy使用service资源使用统一IP地址暴露出去,外部用户就可以通过这个ip地址轮巡到pod里面所运行的业务了。kubelet会监事这个node上面啊运行了多少资源,以及pod相关的状态和信息,发送给apiserver,apiserver会将信息写入etcd并保存起来。pod的维护由controller-manager来做,当pod的数量不满足预设的数量时,它就会再去创建到相应的预设数量来保证pod的总量。

三、Pod

一个Pid可以放多个容器,一个Pid中的容器可以共享资源,不同Pid中的容器不能相互访问(默认情况)。

 

3.1 Pod控制器

(1)Deployment

建立在 ReplicaSet 之上,提供了更高级别的应用程序部署功能。可以方便地进行滚动更新、版本回滚等操作。

(2)ReplicaSet

用于管理 Pod 的副本数量,确保指定数量的 Pod 始终处于运行状态。支持滚动更新应用程序。

(3)StatefulSet

用于管理有状态的应用程序,每个 Pod 都有唯一标识和稳定的网络标识。适用于需要持久化存储和有序部署的应用程序。

(4)DaemonSe

确保每个节点上都运行一个 Pod 的控制器。适用于在每个节点上运行系统级别的守护进程。

(5)Job 和 CronJob

用于批处理任务或定时任务的控制器。执行完任务后会自动停止 Pod。

这些控制器根据用户定义的规则和策略,自动管理 Pod 的生命周期,确保集群中的应用程序正常运行和扩展。通过这些控制器,可以实现灵活的应用程序管理和自动化操作。

四、五大标签选择器

4.1Label(标签)

Label Selector 基于标签对资源进行选择和过滤。标签是键值对的形式,可以附加在各种 Kubernetes 资源上,如 Pod、Service、Deployment 等。通过 Label Selector,可以根据标签的匹配规则来选择特定的资源。

4.2Service

Service 是 Kubernetes 资源,用于暴露应用程序内部的 Pod。它定义了一组逻辑上相关的 Pod,并为它们创建了一个稳定的网络终结点(Endpoint)。通过 Service,可以为应用程序提供一个统一的入口,使得客户端能够访问后端 Pod 的服务。Service 可以是 ClusterIP、NodePort、LoadBalancer 或 ExternalName 类型,用于不同的网络访问方式。

(1)三个流量调度模式

userspace(废弃)

ipvs(推荐,性能最好)

通过ip地址直接转发

IP tables(濒临废弃)(默认)

从上到下转发

4.3Ingress

Ingress 是一种 Kubernetes 资源,用于将外部流量引导到集群内部的服务。它充当了流量入口的角色,通过定义规则和路由来决定如何将请求转发到后端的 Service 中的 Pod。Ingress 可以实现负载均衡、HTTPS/TLS 加密、URL 路由等功能,提供了更高级别的流量控制和管理。

4.4Name

Name 是 Kubernetes 资源的一个属性,用于标识该资源的名称。每个资源都必须具有唯一的名称。例如,Pod、Deployment、Service 等所有资源都需要指定一个名称以便在集群中进行引用和操作。

(1)资源

    api     版本
    kind       类别
    metadata     元数据信息
    spec清单
    status    状态

4.5Namespace(命名空间选择器)

Namespace Selector 用于选择特定的命名空间(Namespace)。命名空间是 Kubernetes 中用于组织和隔离资源的一种机制,通过命名空间选择器可以选择所需的命名空间中的资源。

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

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

相关文章

前端自动化部署,Devops,CI/CD

DevOps 提到 Jenkins,想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合,是一种方法论,并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…

打造高效外卖外送商城系统:代码示例和关键功能介绍

随着外卖外送服务的普及,开发一款高效的外卖外送商城系统对于餐馆和食品供应商来说至关重要。这篇文章将为您提供一个简单的外卖外送商城系统的示例代码,并介绍关键功能,以帮助您了解这类系统的工作原理和关键部分。 1. 准备工作 首先&…

搭建harbor

1.安装docker curl -sfL https://get.rainbond.com/install_docker | bash2.安装docker-compose yum install -y docker-compose3.安装harbor 在线离线包下载 选一个喜欢的右击复制链接下载地址 wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/dow…

opencv-4.5.2-android-sdk.zip安装教程

opencv-4.5.2-android-sdk.zip: 下载链接:百度网盘 请输入提取码 提取码:s0p2 导入模块的方法: ①、导入模块 ②、定位到sdk目录 点击ok就行,就导入成功了。导入成功后会多出一个可展开的opencv文件夹(自己命名的),一定要能展…

MyBatis中至关重要的关系映射----全方面介绍

目录 一 对于映射的概念 1.1 三种关系映射 1.2 resultType与resultMap的区别 resultType: resultMap: 二,一对一关联查询 2.1 嵌套结果集编写 2.2 案例演示 三,一对多关联查询 3.1 嵌套结果集编写 3.3 案例演示 四&…

使用命令行创建仓库

如果你还没有任何代码,可以通过命令行工具创建一个全新的Git仓库并初始化到本项目仓库中。 git clone https://e.coding.net/***/neurosens.git cd neurosens echo "# neurosens" >> README.md git add README.md git commit -m "first commi…

Springboot使用hikari连接池进行Kerberos认证访问Impala

springboot-kerberos-hikari-impala Springboot使用hikari连接池并进行Kerberos认证访问Impala的演示项目 Springboot使用hikari连接池并进行Kerberos认证访问Impala的demo地址:https://github.com/Raray-chuan/springboot-kerberos-hikari-impala 修改后的Hikari源码地址:h…

详解4种类型的爬虫技术

聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序,而通用网络爬虫则是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分,主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 增量抓取意…

sqli-labs闯关

less-01: less-08: less-11: less-18: less-19: less-20: Sqli-labs项目地址—Github 使用HackBar插件 less-01: Sqli-labs前20关均为数字型注入 Sqli-labs前四关较为类似以less-01为模板 将网址导入HackBar中: 1.根据提示,输入http://127.0.0.…

laragon 为 php 安装 Xdebug 扩展

众所周知,php 自带的 var_dump() 输出格式很不直观 而 laragon 作为很好的 windos 下开发环境很受欢迎,本文就介绍如何快速为 laragon 的 php 安装 Xdebug,方便开发调试 一:启动开发环境,在任意可访问 php 页面中输出 …

Matlab中fdatool结合STM32F4设计滤波器

数字滤波器的原理 1.从功能上分;低通、带通、高通、带阻。滤波器口诀:低通滤高频;高通滤低频;带通滤两边;带阻阻中间; 2.从实现方法上分:FIR、IIR 3.从设计方法上来分:Chebyshev(切比雪夫&…

哪家证券公司能做股票的量化交易?

一般证券公司都是能做股票的量化交易的,证券公司主流使用的量化软件一般是P-trade或QMT。其中P-trade普通版更适合没有太多编程经验的投资者使用,可以直接应用软件中现成的程序进行交易,QMT适合专业的投资者,有一定学编程语言基础…

34k*16 薪,3年自动化测试历经3轮面试成功拿下字节Offer....

前言 转眼过去,距离读书的时候已经这么久了吗?,从18年5月本科毕业入职了一家小公司,到现在快4年了,前段时间社招想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了字节…

国产信创替代迫在眉睫,如何选择合适的信创文件传输系统?

当今世界正经历着百年未有之大变局,随着时代发展进步,党的二十大也对于加快建设数字中国做出了重要部署。只有牵制住自主创新这么一个关键点,以关键核心技术突破推动实现高水平科技自立自强,才能牢牢掌握数字经济发展的主动权。自…

手写Mybatis:第11章-流程解耦,封装结果集处理器

文章目录 一、目标:结果集处理器二、设计:结果集处理器三、实现:结果集处理器3.1 工程结构3.2 结果集处理器关系图3.3 出参参数处理3.3.1 结果映射Map3.3.2 结果映射封装3.3.3 修改映射器语句类3.3.4 映射构建器助手3.3.5 语句构建器调用助手…

Java“牵手”京东商品评论数据接口方法,京东商品评论接口,京东商品评价接口,行业数据监测,京东API实现批量商品评论内容数据抓取示例

京东平台商品评论数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、评论内容、评论日期、评论图片、追评内容等详细信息 。 获取商品评论接口API是一种用于获取…

无涯教程-JavaScript - DCOUNTA函数

描述 DCOUNTA函数返回列表或数据库中符合您指定条件的列中非空白单元格的计数。 此函数与DCOUNT函数相似,不同之处在于DCOUNTA函数对所有非空白单元进行计数。 DCOUNT函数仅计算包含数值的单元格。 语法 DCOUNTA (database, field, criteria)争论 Argument描述Required/Op…

参编三大金融国标,奇富科技以技术促行业规范化演进

近期,由中国互联网金融协会领导制定的《互联网金融智能风险防控技术要求》《互联网金融个人网络消费信贷信息披露》《互联网金融个人身份识别技术要求》三项国家标准颁布,由国家市场监督管理总局、国家标准化管理委员会发布,奇富科技作为核心…

sqli-labs例题复现

less-1.1 在源码中$id$_GET[id];之后加入如下代码: if(preg_match(/select\b[\s\S]*\bfrom/is,$id)){die(SQL Injection); }; 1.分析正则 第一个\b匹配select单词边界,\s\S匹配到所有字符,最后一个\b匹配到from单词边界。 select...from…

超详细!80个Python入门实例,代码清晰拿来即用,学习提升必备

对于大部分Python学习者来说,核心知识基本已经掌握了,但"纸上得来终觉浅,绝知此事要躬行",要想完全掌握Python,还得靠实践应用。 今天给大家分享80个Python入门实例,都是基础实例,经典实用&…