进来学习Kubernetes知识点

news2024/11/30 6:54:23

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.coloradmin.cn/o/1824730.html

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

相关文章

Mac M3 Pro 安装 Zookeeper-3.4.6

1、下载安装包 官方下载地址:https://archive.apache.org/dist/zookeeper/ 网盘下载地址:https://pan.baidu.com/s/1j6iy5bZkrY-GKGItenRB2w?pwdirrx 提取码: irrx 2、解压并添加环境变量 # 将安装包移动到目标目录 mv ~/Download/zookeeper-3.4.6.…

Django配置连接池:使用django-db-connection-pool配置连接池

一、该三方库文档使用 github地址: https://github.com/altairbow/django-db-connection-pool/blob/1.2.5/README_CN.mdhttps://github.com/altairbow/django-db-connection-pool/blob/1.2.5/README_CN.md1、选择指定版本,查看指定版本的文档和配置&am…

层出不穷的大模型产品:使用体验、倾向选择及未来展望

✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…

Makefile-快速掌握

引用 本文完全参照大佬的文档写的,写这篇文章只是为了梳理一下知识 https://github.com/marmotedu/geekbang-go/blob/master/makefile/Makefile%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md 介绍 Makefile是一个工程文件的编译规则,描述了整个工程的编译…

Vue I18n国际化插件

Vue I18n国际化插件 安装目录结构及文件内容./locales/lang/zh.js./locales/lang/en.js./locales/index.js main.js引入页面具体使用及语言切换(Vue3)刷新保存原语言,App.vue添加路由守卫注意点 中文文档: https://kazupon.githu…

源代码防泄密的方法有哪些?

在当今发展潮流中,网络信息安全隐患变得越来越突出,信息泄漏事件时有发生。我们都知道,电子文件非常容易复制,可以通过各种途径如邮件、光盘、U盘、网络存储等进行传播。企事业单位的机密文件、研发源代码、图纸等核心技术机密资料…

vxe-table表格新增节点

做前端的朋友可以参考下&#xff1a;也可结合实际需求查看相应的官方文档 效果图 附上完整代码 <template><div><vxe-toolbar ref"toolbarRef" :refresh"{queryMethod: searchMethod}" export print custom><template #buttons>&…

「计算机网络」初识http协议

前言 HTTP协议——互联网发展的基石&#xff0c;从一个最简单的“helloworld”网页&#xff0c;到现在博客平台、视频网站都离不开HTTP协议的存在。随着互联网的发展&#xff0c;Web网页的设计也越发复杂&#xff0c;前后端开发的分工也越发明确&#xff0c;HTTP作为连接前后端…

扣子arixv论文检索工作流开源(Sam老师作品)

因为在扣子上找不到好用的AI论文检索Bot&#xff0c;之前借助工作流和arxiv.org API开发了一个工具&#xff0c;当时写了一篇介绍。 核心流程比较简单&#xff0c;但有很多同学咨询了解&#xff0c;今天抽了点时间把工作流完全开源了。为了方便对比&#xff0c;在公共Team中通过…

pytest + yaml 框架 - 65.Pycharm 设置 yaml 格式用例模板,高效写用例

前言 初学者对yaml 格式不太熟悉,自己写yaml用例的时候,总是格式对不齐,或者有些关键字会忘记。 于是我们可以在pycharm上设置用例模块,通过快捷方式调用出对应的模块,达到高效写用例的目的。 pycharm设置用例模板 File - Settings Live Templates - python 点 + 号…

RabbitMQ实践——交换器(Exchange)绑定交换器

在《RabbitMQ实践——交换器&#xff08;Exchange&#xff09;和绑定&#xff08;Banding&#xff09;》一文中&#xff0c;我们实验了各种交换器。我们可以把交换器看成消息发布的入口&#xff0c;而消息路由规则则是由“绑定关系”&#xff08;Banding&#xff09;来定义&…

中国姓名学十大权威专家颜廷利:全国排名第一的起名大师

颜廷利教授,是济南市历城区唐王镇的名人,位居2023年中国当代十大国学大师排行榜之首。全国排名第一的起名大师颜廷利教授以其深厚的学术造诣和卓越的贡献赢得了名誉和尊重,成为当代国学界的翘楚。他从事国学研究已有数十年,对经史子集的研究融会贯通,展现出了非凡的学术造诣。中…

springboot宠物医院信息管理系统-计算机毕业设计源码04164

摘 要 现如今在中国&#xff0c;随着人民生活质量的逐渐提高&#xff0c;以及人民群众消费能力的日渐增长&#xff0c;各种各样的家养小动物&#xff0c;已经逐渐成为人类越来越亲密的生活伴侣。并且&#xff0c;现如今社会竞争及其激烈&#xff0c;人们的生活节奏越发急促、紧…

FreeRTOS:4.内存管理

FreeRTOS内存管理 目录 FreeRTOS内存管理1. 为什么不直接使用C库函数的malloc和free函数2. FreeRTOS的五种内存管理方式3. heap4源码分析3.1 堆内存池3.2 内存块的链表数据结构3.3 堆的初始化3.4 堆的内存分配3.5 堆的内存释放 4. 总结 1. 为什么不直接使用C库函数的malloc和fr…

【已解决】引用官网的 Element-Message 消息框居然报错为什么呢?

vue 版本 &#xff1a; vue3 编程语言&#xff1a;JavaScript os: macos13 组件 &#xff1a;element-plus 问题组件&#xff1a; Message 信息框 问题&#xff1a;想学习使用 element 官网里的组件&#xff0c;我找到了message 消息提示&#xff0c;然后我就把代码复制下来放到…

日历选择组件(打卡,日期计划,日期选择,特别日期标志)-VUE3

自己封装的目的&#xff1a; 使用场景&#xff1a;打卡&#xff0c;日期计划&#xff0c;日期选择&#xff0c;特别日期标志 根据自己的需求可以定制化何样式 不依赖任何第三方插件或者组件&#xff0c; 效果图&#xff1a; 1、日历组件封装 <template><div clas…

把Vue项目从Window系统迁移到Mac系统的方案

不能启动vue ui 直接运行&#xff0c;会报错如下&#xff1a; failed to load config from /Users/xiaochen/IdeaProjects/ChatViewer-frontend/vite.config.tserror when starting dev server: Error: You installed esbuild for another platform than the one youre curre…

关于LLM:揭秘token与embedding的机制

「GPT4 Turbo 的上下文长度为 128K token」 「Claude 2.1 的上下文长度为 200K token」 听起来像是一些重要的细节&#xff0c;那么token到底是什么&#xff1f; 请看一句话——It’s over 9000&#xff01; 我们可以将其表示为 [“It’s”, “over”, “9000!”] 每个数组…

救命!接手了一个老项目,见到了从业10年以来最烂的代码!

后台回复“书籍”&#xff0c;免费领取《程序员书籍资料一份》 后台回复“5000”&#xff0c;免费领取面试技术学习资料一份 在程序员这个行业从业快10年了&#xff0c;每过几个月回头看看自己写的代码&#xff0c;都会觉得写的也太烂了&#xff0c;不敢想象是自己之前写的。…

CorelDRAW2024破解版看这里!免费分享

亲爱的设计爱好者们&#xff0c;你们好呀&#xff01;今天我要给大家种草一款神奇的软件——CorelDRAW 2024&#xff01;&#x1f929;&#x1f389; 作为一位软件技术爱好者&#xff0c;我一直在寻找那些能让我们事半功倍的工具。最近&#xff0c;我在数字设计领域发现了一个…