进来学习Kubernetes知识点

Kubernetes集群部署

文章目录

  • Kubernetes集群部署
    • 一、Kubernetes概述
      • 1.1、什么是Kubernetes
      • 1.2、为什么要用Kubernetes
    • 二、Kubernetes组件
      • 2.1、Master组件
      • 2.2、Node组件
    • 三、Kubernetes资源对象
      • 3.1、Pod
      • 3.2、Label
      • 3.3、Replication Controller
      • 3.4、Deployment
      • 3.5、Service
      • 3.6、Job计划任务
      • 3.7、DaemonSet
    • 四、什么是kubadm

一、Kubernetes概述

1.1、什么是Kubernetes

  • kubernetes是一个可移植、可扩展的开源容器编排系统,主要用于自动化部署、扩展和管理容器应用,提供资源调度、部署管理、服务发现、扩容缩容、监控等功能。对于负载军均衡、服务发现、高可用、滚动升级、自动伸缩等容器云平台的功能要求有原生支持。由于kubernetes在K和s间有8个字母,因此常简称为K8S。2015年7月,kubernetes V1.0正式发布,截至到目前最新稳定版本是V1.18.
  • 实际上,随着对K8S系统架构与设计理念的深入了解,可以发现K8S系统正在处处为运行云原生应用而设计考虑的。随着对K8S系统使用的加深和推广,也会有越来越多有关云原生应用的设计模式产生,使得K8S系统架构和开发生产级的复杂云原生应用,变得像启动一个单击版容器服务那样简单易用
  • kubernetes可以调度计算集群节点、动态管理节点上作业,并保证它们按用户期望状态运行。通过使用[Labels (标签)] 和 [Pods (荚)]的概念,kubernetes将应用按逻辑单元进行分组,方便管理和服务发现

1.2、为什么要用Kubernetes

使用kubernetes具有以下好处

  • 具备微服务架构

微服务架构的核心是将一个巨大的单元应用分解为很多小的相互连接的微服务。一个微服务背后可能有多个实例副本支撑,副本的数量可能会根据系统负荷而进行调整,而K8S平台中内嵌的负载均衡器发挥着重要作用。微服务器使得每个服务都可以由专门的开发团队来开发,开发者可以自由选择开发技术,这对于大规模团队来说很有价值。另外,每个微服务独立开发、升级、扩展,使得系统具备很高的稳定性和快速迭代进化能力

  • 具备超强的横向扩容能力

kubernetes系统架构具备超强的横向扩容能力。对于互联网公司来说,用户规模等价于资产,谁拥有更多的用户,谁就能在竞争中胜出,因此超强的横向扩容能力是互联网业务系统的关键指标之一。一个kubernetes集群从只包含几个Node的小集群,平滑扩展到拥有成百上千个Node的大规模集群,利用kubernetes提供的工具,甚至可以在线完成集群的扩容。只要为服务器设计的合理,结合硬件或者公有云资源的线性增加,系统就能够承受大量用户并发访问所带来的压力

二、Kubernetes组件

  • 为了理解Kubernetes工作原理,先来分析一下Kubernetes的结构。kubernetes主要包括以下组件

2.1、Master组件

  • master组件提供集群的管理控制中心,对于集群进行全局决策(如调度),并检测和相应集群的事件,例如当复制控制器的“副本”字段不满足时启动新的Pod。基本上kubernetes所有的控制命令都是发给master,master负责具体的执行过程。master组件可以在集群中的任何计算机上运行,但建议master节点独占一台独立的服务器。因为master是整个集群的大脑。如果master所在的节点宕机或不可用,那么所有的控制命令都将失效

Master组件运行的节点一般称之为Master节点,在Master节点上运行着以下关键进程。

  • kube-apiserver:用于暴露kubernetes API,任何资源请求/调度操作都是通过kube-apiserver提供的接口进行。提供了HTTP Rest接口的关键服务进程,是kubernetes中所有资源的增、删、改、查等操作的唯一入口,也是季芹控制入口的进程
  • Etcd:是kubernetes提供的默认存储,所有集群数据都保存在Etcd中,使用时建议为Ectd数据提供备份计划
  • kube-scheduler:是负责资源调度的进程,监视新创建且没有分配到Node的Pod,为Pod选择一个Node
  • kube-controller-manager:运行管理控制器,是集群中处理常规任何的后台进程,是kubenetes里所有资源对象的自动化控制中心。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。这些控制器主要包括:

节点控制器(Node controller):负责在节点出现故障时发现和响应;

复制控制器(Replication Controller):负责为系统中的每个复制控制器对象维护正确数量的Pod;

端点控制器(Endpoints Controller):填充端点对象(即连接Services和Pods);

服务账户和令牌控制器(Service Account & Token Controllers):为新的命令空间创建默认账户和API访问令牌

2.2、Node组件

  • 除了master,kubernetes集群中的其他机器被称为Node节点。与master节点一样,Node节点可以是一台物理主机,也可以是一台虚拟机。Node节点是kubernetes集群中的工作负载节点,每个Node都会被Master分配一些工作负载。当某个Node宕机时,其上的工作负载会被master自动转移到其他节点上

每个Node节点上都运行着以下关键进程:

  • kubelet:负载Pod对用容器的创建、启停等任务,同时与master节点密切协作,实现集群管理的基本功能

  • kube-proxy:用于实现kubernetes Service之间的通信与负载均衡机制

  • Docker Engine(docker):Docker引擎,负责本机的容器创建和管理工作。

Node节点可以在运行期间动态增加到kubernetes集群中,提前是这个节点上已经正确安装、配置和启动了上述关键进程。在默认情况下,kubelet会向master注册自己,这也是kubernetes推荐的Node管理方式。一旦Node被纳入集群管理范围,kubelet进程会定时向master汇报自身的情况,例如操作系统、Docker版本、机器的CPU和内存情况,以及之前有哪些Pod在运行等。这样master可以获知每个Node的资源使用情况,并实现高效负载均衡资源调度策略。而某一个Node超过指定事件不上报信息时,会被master判定为失聪(坏的状态,大白话就是不能用了)的状态,被标记为不可用,随后master会触发节点转移进程

三、Kubernetes资源对象

  • kubernetes包含多种类型的资源对象:Pod、Replication Controller、Service、Deployment、Job、DaemonSet等。所有的资源对象都可以通过kubernetes提供的kubectl工具进行增、删、改、查等操作,并将其保存在Etcd中持久化存储。从这个角度来看,kubernets其实是一个高度自动化的资源控制系统,通过跟踪对比Ectd存储里保存的资源期望状态与当前环境中的实际资源状态的差异,来实现自动控制和自动纠错等高级功能,下面对常用的资源对象分别进行介绍

3.1、Pod

  • Pod(豆荚)是kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。一个Pod由一个或多个容器组成,Pod中容器共享存储和网络,在同一台Docker主机上运行。每个Pod都有一个特俗的被称为“根容器”的Pause容器,Pause容器对象的镜像属于kubernetes平台的一部分,除了Pause容器,每个Pod还包含一个或多个紧密相关的用户业务容器

3.2、Label

  • Label(标签)是kubernetes系统中另一个核心概念。一个Label是一个key-value的键值对,其中key与value由用户自己指定。Label可以附加到各种资源对象上,例如Node、Pod、Service、RC(命名空间)等,一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象中,也可以在对象创建后动态添加或者删除
  • 另外可以通过给指定的资源对象捆绑一个或多个不同Label,来实现多维度的资源分组管理功能,以便于灵活、方便地进行资源分配、调度、配置、部署等管理工作。给某个资源对象定义一个Label,就相当于给他打了一个标签;随后可以通过Label selector标签选择器查询和筛选拥有某些Label的资源对象,kubernetes通过这种方式实现了类似SQL的简单又通用的对象查询机制

3.3、Replication Controller

  • Replication Controller(复制控制器,RC)是kubernetes集群中最早的保证Pod高可用的API对象。通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是1个或多个;如果少于指定数目,RC就会运行新的Pod副本。如果多余指定数目,RC就会杀死多余的Pod副本。即使在数目为1的情况下,通过RC运行Pod也比直接运行Pod更明智,因为RC可以发挥它高可用的能力,保证永远有1个Pod在运行。RC是K8S较早期的技术概念,只适用于长期的业务类型,比如控制小机器人提供高可用的Web服务

3.4、Deployment

  • Deployment(部署)表示用户对K8S集群的一次更新操作。部署是一个比RS应用模式更广的API对象,可以是创建或更新一个新的服务,也可以是滚动升级一个服务。滚动升级一个服务,实际上创建一个新的RS,然后逐渐将新的RS中副本数量增加到理想状态,将旧RS中的副本数减小到0的复合操作;这样一个复合操作用一个RS是不太好描述的,需要用一个更通用的Deployment来描述。未来对所有长期服务型业务的管理,都会通过Deployment来管理

3.5、Service

  • RC和Deployment只是保证了支撑Service(服务)的微服务Pod的数量,但是没有解决如果访问这些服务的问题。一个Pod是一个运行服务的实例,随时可能在一个节点上停止、在另一个节点以新的IP地址启动一个新的Pod,因此不能固定的IP地址和端口号提供服务。要稳定地提供服务,需要服务发信啊和负载均衡能力。服务发现完成的工作,针对客户端访问的服务,找到对应的后端服务实例
  • 在K8S集群中,客户端需要访问的服务就是Service对象。每个Service会对用一个集群内部有效的虚拟IP,集群内部通过虚拟IP访问一个服务。在K8S集群中微服务的负载均衡是由kube-proxy实现的。kube-proxy是K8S集群内部的负载均衡器。它是一个分布式代理服务器,在K8S的每个节点上都会运行一个kube-proxy组件;这一设计体现了他的伸缩性优势,需要访问服务的节点越多,提供负载据呢胡歌你能力的kube-proxy就越多,高可用节点也会随之增多。与之相比,通过在服务器端部署反向代理做负载均衡,还需要进一步解决反向代理的负载均衡和高可用问题

3.6、Job计划任务

  • Job是kubernetes用来控制批量处理型任务的API对象。批处理业务于长期服务业务的主要区别是批处理业务的运行有头有尾,而长期业务在用户不停止的情况下永远运行。根据用户的设置,job管理的Pod吧任务成功完成后就自动退出了。成功完成的标志根据不同的spec.completins策略而不同:单Pod型任务有一个Pod成功就标志完成;定数成功型任务保证有N个任务全部成功;工作队列任务根据应用确认的全局成功而标识成功

3.7、DaemonSet

  • 后台支撑型服务的核心关注点在kubernetes集群中的节点(物理机或虚拟机),DamemonSet(守护程序集)确保所有或某些节点运行同一个Pod,要保证每个节点上都有一个此类Pod运行。节点可能是所有集群节点也可能是通过nodeSelector选定的一些特定节点。典型的后台支撑服务包括,存储,日志和监控等在每个节点上支持K8S集群运行的服务
  • 上述组件于资源对象是kubernetes系统的核心,它们共同构成了kubernetes系统的框架和计算模型。通过对它们进行灵活的配置,用户就可以快速、方便地对容器集群进行配置和管理。除了刚刚所介绍的核心组件与资源对象之外,在kubernetes系统中还有很多辅助的资源对象,例如LimitRange、ResourceQuota。另外,一些系统内部使用的对象参考kubernetes的API文档
    在这里插入图片描述

四、什么是kubadm

  • kubeadm是谷歌推出的一个专门快速不舒服kubernetes集群的工具。在集群部署的过程中,可以通过kubeadm init来初始化master节点,然后使用kubeadm join将其他的节点加入到集群中
  • kubeadm通过简答配置可以快速将一个最小可用的集群运行起来。它在设计之初关注点是快速部署安装并将集群运行起来,而不是一步一步关于各节点环境的准备工作。同样的,kubernetes集群在使用过程中的各种插件也不是kubeadm关注的重点,比如kubernetes集群Web Dashboard、prometheus监控集群业务等。kubeadm应用的目的是作为所有部署的基础,并通过kubeadm使得部署kubernetes集群更加容器

kubeadm的简单快捷的部署可以应用到如下三方面:

  • 新用户可以从kubeadm开始快速搭建kubernetes并了解
  • 熟悉kubernetes的用户可以使用kubeadm快速搭建集群并测试他们的应用
  • 大型的项目可以将kubeadm配合其他的安装工具一起使用,形成一个比较复杂的系统

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

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

相关文章

AI金融投资:批量下载深交所公募REITs公开说明书

打开深交所公募REITs公开说明书页面,F12查看网络,找到真实地址:https://reits.szse.cn/api/disc/announcement/annList?random0.3555675437003616 { "announceCount": 39, "data": [ { "id": "80bc9…

学习笔记——网络管理与运维——SNMP(概述)

一、SNMP概述 1、SNMP背景 SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。 通过网络,管理员可以管理…

6个免费自动写文章软件,简直好用到爆

对于创作者而言,创作一篇高质量的文章并非易事,它需要耗费大量的时间与精力去构思、组织语言、斟酌字句。灵感并非总是源源不断,有时我们可能会陷入思维的僵局,不知从何下手。而此时,免费自动写文章软件就如同黑暗中的…

RabbitMQ无法删除unsynchronized队列及解决办法

一、故障环境 操作系统:CentOS7 RabbitMQ:3 nodes Cluster RabbitMQ version: 3.8.12 Erlang Version:22.3 Queue Type:Mirror,with polices 二、故障表现: 2.1 管理界面队列列表中存在部分队列镜像同步状态标红: 2.2 TPS为0,无消费者,其他节点镜像未同步且无法手动…

C# Web控件与数据感应之模板循环输出

目录 关于模板循环输出 准备数据源 ​范例运行环境 RepeatHtml 方法 设计与实现 如何获取模板内容 getOuterHtml 方法 getInnerHtml 方法 调用示例 小结 关于模板循环输出 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互&…

Qt C++ TCP服务端响应多客户端通讯

本示例使用的设备&#xff1a;WIFI无线4G网络RFID云读卡器远程网络开关物流网阅读器TTS语音-淘宝网 (taobao.com) #include "mainwindow.h" #include "ui_mainwindow.h" #include "QMessageBox" #include <QDebug> #include <exceptio…

Lexar NM620 512GB SSD PCIE3.0 X4测评

Lexar NM620 512GB SSD PCIE3.0 X4测评 官方可选容量256GB~2TB PCIE 3.0X4 支持NVME 1.4协议 CDM顺序Read速度3448MB\s CDM顺序Write速度2626MB\s CDM 4K随机Read速度465MB\s CDM 4K随机Write速度602MB\s AS SSD顺序Read速度为2855MB\s AS SSD顺序Write速度为2331MB\s AS SSD…

几款让你怦然心动的神奇工具——搜嗖工具箱

alteredqualia AlteredQualia 脑洞爆炸器网站&#xff0c;不得不说这是一个神奇的网站&#xff0c;在这个网站上你可以实现不可思议的各种操作&#xff0c;让我们对网站有了新的认知&#xff0c;因为它告诉你不是所有有趣的网站都那么花哨&#xff0c;有些网站看着外形平淡无奇…

LabVIEW结构体内部缺陷振动检测

结构体内部缺陷会改变其振动特性&#xff0c;通过振动分析可以检测并定位这些缺陷。本文详细分析内部缺陷对振动的影响&#xff0c;从频谱分析、时域分析和模态分析等多角度探讨基于LabVIEW的检测方法&#xff0c;提供实施步骤和注意事项&#xff0c;帮助工程师有效利用LabVIEW…

如何解决跨境传输常见的安全及效率问题?

在当今全球化的商业版图中&#xff0c;企业为了拓展国际市场和增强竞争力&#xff0c;跨境传输数据已成为一项不可或缺的业务活动。合格的数据跨境传输方案&#xff0c;应考虑以下要素&#xff1a; 法律合规性&#xff1a;确保方案符合所有相关国家的数据保护法律和国际法规&am…

ATF是如何完成双系统切换的?

ATF&#xff08;Arm Trusted Firmware&#xff09;是一个用于ARM架构处理器的可信固件&#xff0c;它最初提供的最主要的功能就是&#xff1a;双系统切换和电源管理。 那么如何进行双系统切换呢&#xff0c;在双系统切换的示例中&#xff0c;除了CPU的跳转&#xff0c;例如CPU…

动态功能连接评估方法的变异性

摘要 背景&#xff1a;动态功能连接(dFC)已成为理解大脑功能的一种重要测量指标。虽然已经开发了各种各样的方法来评估dFC&#xff0c;但目前尚不清楚方法的选择会如何影响结果。在这里&#xff0c;本研究旨在考察常用dFC方法的结果变异性。 方法&#xff1a;本研究在Python中…

阻塞IO、非阻塞IO、IO复用的区别 ?(非常详细)零基础入门到精通,收藏这一篇就够了

前言 在《Unix网络编程》一书中提到了五种IO模型&#xff0c;分别是&#xff1a;阻塞IO、非阻塞IO、IO复用、信号驱动IO以及异步IO。本篇文章主要介绍IO的基本概念以及阻塞IO、非阻塞IO、IO复用三种模型&#xff0c;供大家参考学习。 一、什么是IO 计算机视角理解IO: 对于计…

VD1011 单节锂离子充电电池保护 2.8V过放保护 SOT-23小封装芯片

VD1011&#xff0c;内置高精度电压检测电路和延迟电路以及内置MOSFET&#xff0c;是用于单节锂离子/锂聚合物可再充电 电池的保护IC。 本IC适合干对1节锂离子/锂聚合物可再充电电池的过充电、过放电和过电流进行保护。 VD1011具备如下特点 高精度电压检测电路 过充电检测电压 …

JDK8-17新特性

一、JDK8新特性:Lambda表达式 1.Lambda表达式及其使用举例 Lambda是一个匿名函数&#xff0c;我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格&#xff0c;使Java的语言表达能力…

nc网络收发测试-tcp客户端\TCP服务器\UDP\UDP广播

netcat&#xff08;nc&#xff09;&#xff1a; 作用&#xff1a;一个功能强大的网络工具&#xff0c;提供了简单的网络测试和网络编程功能。工作原理&#xff1a;可以用于建立TCP或UDP连接&#xff0c;并发送和接收数据。示例用法&#xff1a; 监听TCP端口&#xff1a;nc -l 1…

django学习入门系列之第二点《浏览器能识别的标签4》

文章目录 input类型下拉框多行文本往期回顾 input类型 1&#xff1a;打出后可以在里面编写内容 <!-- 自闭合标签 --> <!-- 默认行内标签 --> <input type"text">placeholder 显示背景 <input type"text" id"txtUser" p…

如何在Spring Boot中实现图片上传至本地和阿里云OSS

在开发Web应用时&#xff0c;处理文件上传是常见的需求之一&#xff0c;尤其是在涉及到图片、视频等多媒体数据时。本文将详细介绍如何使用Spring Boot实现图片上传至本地服务器以及阿里云OSS存储服务&#xff0c;并提供完整的代码示例。 一、上传图片至本地 首先&#xff0c…

逻辑这回事(五)---- 资源优化

基础篇 Memory 避免细碎的RAM。将大的RAM拆分成多个小RAM&#xff0c;并根据地址关断可以优化功耗&#xff0c;但把多个小RAM合成大RAM可以优化面积。Block RAM和分布式RAM合理选择。根据存储容量&#xff0c;对Block RAM和分布式RAM的实现面积和功耗进行评估&#xff0c;选择…

文章MSM_metagenomics(三):Alpha多样性分析

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 介绍 本教程使用基于R的函数来估计微生物群落的香农指数和丰富度&#xff0c;使用MetaPhlAn prof…