Kubernetes介绍(一)

2023-09-20 09:59:59

kubernetes 官网:Kubernetes

1、Kubernetes是什么

      Kubernetes 也称为 K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,k8s是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

Kubernetes可以实现以下功能:

  • 自动化容器的部署和复制
  • 扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 节省资源,优化硬件资源的使用
  • 提供容器弹性,如果容器失效就替换它等

2、Kubernetes特点

  • 便携性:支持公有云、私有云、混合云、多重云(multi-cloud)
  • 可扩展:模块化、插件化、可组合、可挂载
  • 自修复:自动部署,自动重启,自动复制,自动伸缩扩展

3、Kubernetes特性

       Kubernetes是一种用于在一组主机上运行和协同容器化应用程序的系统,旨在提供可预测性、可扩展性与高可用的性的方法来完全管理容器化应用程序和服务的生命周期的平台。

k8s具有以下几个重要的特性:

  • 自动装箱:构建于容器之上,基于资源依赖及其他约束自动完成容器部署且不影响其可用性,并通过调度机制混合关键型应用和非关键型应用的工作负载于同一节点以提升资源利用率。
  • 自我修复:支持容器故障后自动重启、节点故障候重行调度容器,以及其他可用节点、健康状态检查失败后关闭容器并重新创建等自我修复机制。
  • 水平扩展:支持通过简单命令或UI手动水平扩展,以及基于CPU等资源负载率的自动水平扩展机制。
  • 服务器发现和负载均衡:Kubernetes通过其附加组件之一的KubeDNS(或CoreDNS)为系统内置了服务发现功能,它会为每个Service配置DNS名称,并允许集群内的客户端直接使用此名称发出访问请求,而Service则通过iptables或ipvs内建了负载均衡机制。
  • 自动发布和回滚:Kubernetes支持“灰度”更新应用程序或其配置信息,它会监控更新过程中应用程序的健康状态,以确保它不会在同一时刻杀掉所有的实例,而此过程中一旦有故障发生,就会立即自动执行回滚操作。
  • 秘钥和配置管理:Kubernetes允许存储和管理敏感信息,例如密码,Oauth令牌和ssh秘钥。可以部署和更新密码和应用程序配置,而无需重建容器,也不会再堆栈配置中暴露机密。
  • 存储编排:Kubernetes支持Pod对象按需自动挂载不同类型的存储系统,这包括节点本地存储、公有云服务商的云存储(如AWS和GCP等),以及网络存储系统(例如,NFS、ISCSI、GlusterFS、Ceph、Cinder和Flocker等)
  • 批量处理执行:除了服务型应用,Kubernetes还支持批处理作业及CI(持续集成),如果需要,一样可以实现容器故障后修复。

4、Kubernetes概述和术语

Master:

        Master是集群的网关和中枢,负责诸如为用户和客户端暴露API、跟踪其它服务器的健康状态、以最优方式调度工作负载,以及编排其他组件之间的通信等任务,它是用户或客户端与集群之间的核心联络点,并负责Kubernetes系统的大多数集中式管控逻辑。单个Master节点即可完成其所有的功能,但出于冗余及负载均衡等目的,生产环境中通常需要协同部署多个此类主机。Master节点类似于蜂群中的蜂王。

Node

        Node是Kubernetes集群的工作节点,负责接收来自Master的工作指令并根据指令相应的创建或删除Pod对象,以及调整网络规则以合理地路由和转发流量等。理论上讲,Node可以是任何形式的计算设备,不过Master会统一将其抽象为Node对象进行管理。Node类似于蜂群中的工蜂,生产环境中,它们通常数量众多。

        Kubernetes将所有Node的资源集结于一处形成一台更强大的“服务器”,如下图,在用户将应用部署于其上时,Master会使用调度算法将其自动指派某个特定的Node运行,在Node加入集群或从集群中移除时,Master也会按需重行编排影响到的Pod(容器)。于是,用户无需关心其应用究竟运行于何处。

       从抽象的角度来讲,Kubernetes还有着众多的组件来支撑其内部的业务逻辑,包括运行应用、应用编排、服务暴露、应用恢复等,它们在Kubernetes中被抽象为Pod、Service、Controller等资源类型。

5、常用的资源对象

5.1、Pod

        Pod 是k8s 的最小调度单元。Kubernetes并不直接运行容器,而是使用一个抽象的资源对象来封装一个或者多个容器,这个抽象即为Pod,它是Kubernetes的最小调度单元。同一Pod中的容器共享网络名称空间和存储资源,这些容器可经由本地回环接口lo直接通信,但彼此之间又在Mount、User及PID等名称空间上保持了隔离。尽管Pod中可以包含多个容器,但是作为最小调度单元,它应该尽可能地保持“小”,即通常只应该包含一个主容器。

5.2、资源标签

       标签(Label)是将资源进行分类的标识符,资源标签其实就是一个键值型(key/values)数据。标签旨在指定对象(如Pod等)辨识性的属性,这些属性仅对用户存在特定的意义,对Kubernetes集群来说并不直接表达核心系统语意。标签可以在对象创建时附加其上,并能够在创建后的任意时间进行添加和修改。一个对象可以拥有多个标签,一个标签也可以附加于多个对象(通常是同一类对象)之上。

5.3、标签选择器

     标签选择器(Selector)全称为”Label Selector“,它是一种根据Label来过滤符合条件的资源对象的机制。例如,将附有标签”role:backend“的所有Pod对象挑选出来归为一组就是标签选择器的一种应用,如下图所示,通常使用标签对资源对象进行分类,而后使用标签选择器挑选出它们,例如将其创建未某Service的端点。

5.4、Pod控制器

        尽管Pod是kubernetes的最小调度单元,但用户通常并不会直接部署及管理Pod对象,而是要借助于另一类抽象——控制器(Controller)对其进行管理。用于工作负载的控制器是一种管理Pod生命周期的资源抽象,它们是kubernetes上的一类对象,而非单个资源对象,包括ReplicationController,ReplicaSet、Deployment、StatefulSet、Job等。以Deployment控制器为例,它负责确保指定的Pod对象的副本数量精确符合定义,否则“多退少补”。使用控制器之后就不再需要手动管理Pod对象了,只需要声明应用的期望状态,控制器就会自动对其进行进程管理。

5.5、服务资源(Service)

        Service是建立在一组Pod对象之上的资源抽象,它通过标签选择器选定一组Pod对象,并为这组Pod对象定义一个统一的固定访问入口(通常是一个IP地址),若Kubernetes集群存在DNS附件,它就会在Service创建时为其自动配置一个DNS名称以便客户端进行服务发现。到达Service IP的请求将被负载均衡至其后的端点——各个Pod对象之上,因此Service从本质上来讲是一个四层代理服务。另外,service还可以将集群外部流量引入到集群中来。

更多推荐

【数据结构】结构实现:顺序存储模式实现堆的相关操作

🚩纸上得来终觉浅,绝知此事要躬行。🌟主页:June-Frost🚀专栏:数据结构🔥该文章着重讲解了使用顺序结构实现堆的插入和删除等操作。目录:🌍二叉树的顺序结构🔭堆🌏代码实现✉️堆的插入✉️堆的删除✉️其他部分❤️结语🌍二叉树的顺序结构二叉树的顺序存储是指将二叉树中的所有节点按照一定的顺序(一层一层)存储

作为公司测开岗的面试官,我是怎么选人的....

最近一段时间面试了不少人,主要是一些测试开发岗,中高级的初级的也都有;也有一些偏业务测试岗的候选人。总结出了一些方法论,或者说更多的是个人作为面试官所遵守的一套面试准则。1.什么是面试?面试不仅仅是你问我答,更多的是一场信息交流,也是一个双方学习的过程。你作为面试官,应聘者的简历要仔细对待,这也是对人家的尊重。从TA的

怒刷LeetCode的第4天(Java版)

#【中秋征文】程序人生,中秋共享#目录第一题题目来源题目内容解决方法方法一:遍历字符串方法二:有限状态机(FiniteStateMachine)方法三:正则表达式第二题题目来源题目内容解决方法方法一:反转数字比较第三题题目来源题目内容解决方法方法一:动态规划方法二:递归回溯第一题题目来源8.字符串转换整数(atoi)-

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录云原生架构:重新定义应用开发和部署什么是云原生架构?为什么云原生架构重要?1.弹性和伸缩性2.故障隔离3.更快的交付4.资源利用率5.多云支持云原生架构的实践步骤1:容器化步骤2:微服务步骤3:自动化运维自动化运维:云计算的关键驱动力什么是自动化运维?为什么自动化运维重要?1.复杂性管理2.资源利用率3.错误率

【汇编】微处理器

【汇编】微处理器文章目录【汇编】微处理器1、微处理器概念1.1关键词1.2分类2、微处理器结构2.1寄存器2.2寄存器&汇编助记符2.3寄存器组成结构3、地址空间3.1存储空间3.1.1虚拟空间(编程空间)3.1.2线性空间3.2I/O空间4、工作模式4.1实地址模式4.2保护虚拟地址模式4.3虚拟86模式1、微处理器

中秋特辑:Java事件监听实现一个猜灯谜小游戏

众所周知,JavaSwing是Java中关于窗口开发的一个工具包,可以开发一些窗口程序,然后由于工具包的一些限制,导致Java在窗口开发商并没有太多优势(当然也有一些第三方的工具包也很好用),不过,在JavaSwing中关于事件的监听机制是我们需要重点掌握的内容。何为事件监听在Java中,事件监听(EventListe

Spring之微服务架构与Spring Cloud

微服务架构与SpringCloud微服务架构与SpringCloud摘要引言词汇解释详细介绍微服务架构SpringCloud核心组件示例代码:注释:注意事项理解微服务架构的优势详细介绍什么是微服务架构?微服务架构的优势1.可扩展性(Scalability)2.灵活性和快速开发(FlexibilityandRapidDe

Spring高手之路11——BeanDefinition解密:构建和管理Spring Beans的基石

文章目录1.探索BeanDefinition1.1官方文档对BeanDefinition的解读1.2BeanDefinition关键方法剖析1.3BeanDefinition部分方法的实际运用1.4BeanDefinition深层信息结构梳理2.BeanDefinition构造体系解析2.1BeanDefinition

Java开发 - 探寻Spring的秘密

前言Spring是企业级J2EE一站式解决方案,提供了整个项目的表现层、业务层、持久层,而且,它的生态特别完善,可以和其他框架无缝对接,现在做Java的哪个项目里没有Spring的说出不去都不信。但往往我们开发者只重视项目是不是run起来了,而忽略了去了解Spring本身,所以很多开发者仅仅是停留在了使用的层次。博主也

JDK8新特性

Lembda表达式lembda表达式是一个简洁、可传递的匿名函数,实现了把代码块赋值给一个变量的功能是我认为jdk1.8中最让人眼前一亮的特性(我没用过其他函数式的语言)在了解表达式之前,我们先看两个概念函数式接口含有且仅含有一个抽象方法,Lembda表达式需要借助函数式接口实现。通常来说我们在这个接口定义上加上@Fu

Spring复杂对象的3中创建方法

复杂对象是相对于简单对象可以直接new出的对象。这种对象在Spring中不可以通过简单对象的创建方式来创建。下面我们将通过实现FactoryBean接口、实例工厂、静态工厂三种方法来创建。FactoryBean接口Spring提供FactoryBean接口并且提供了getObject方法是为了支持自定义工厂。通过实现这

热文推荐