Kubernetes学习01

news/2025/2/22 4:47:18/

一、Kubernetes是什么

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。Kubernetes是谷歌开源的容器管理集群管理系统,是Google多年大规模容器管理技术Borg的开源版本。
在这里插入图片描述
它可以在物理或虚拟机的Kubernetes集群上运行容器化应用,Kubernetes能提供一个以“容器为中心的基础架构”,满足在生产环境中运行应用的一些常见需求,如:

  • 多个进程(作为容器运行)协同工作。(Pod)

  • 存储系统挂载

  • Distributing secrets

  • 应用健康检测

  • 应用实例的复制

  • Pod自动伸缩/扩展

  • Naming and discovering

  • 负载均衡

  • 滚动更新

  • 资源监控

  • 日志访问

  • 调试应用程序

  • 提供认证和授权

    Kuberbetes发展非常迅速,已经成为容器编排领域的领导者。通过Kubernetes你可以快速部署应用、快速扩展应用、无缝对接新的应用功能、节省资源、优化硬件的使用。

二、Kubernetes不是什么?

Kubernetes并不是传统的PaaS(平台即服务)系统。

  • Kubernetes不限制支持应用的类型,不限制应用框架。不限制受支持的语言runtimes (例如, Java, Python, Ruby),满足12-factor applications 。不区分 “apps” 或者“services”。Kubernetes支持不同负载应用,包括有状态、无状态、数据处理类型的应用。只要这个应用可以在容器里运行,那么就能很好的运行在Kubernetes上。

  • Kubernetes不提供中间件(如message buses)、数据处理框架(如Spark)、数据库(如Mysql)或者集群存储系统(如Ceph)作为内置服务。但这些应用都可以运行在Kubernetes上面。

  • Kubernetes不部署源码不编译应用。持续集成的 (CI)工作流方面,不同的用户有不同的需求和偏好的区域,因此,我们提供分层的 CI工作流,但并不定义它应该如何工作。

  • Kubernetes允许用户选择自己的日志、监控和报警系统。

  • Kubernetes不提供或授权一个全面的应用程序配置 语言/系统(例如,jsonnet)。

  • Kubernetes不提供任何机器配置、维护、管理或者自修复系统。

    另一方面,大量的Paas系统都可以运行在Kubernetes上,比如Openshift、Deis、Gondor。可以构建自己的Paas平台,与自己选择的CI系统集成。

    由于Kubernetes运行在应用级别而不是硬件级,因此提供了普通的Paas平台提供的一些通用功能,比如部署,扩展,负载均衡,日志,监控等。这些默认功能是可选的。

    另外,Kubernetes不仅仅是一个“编排系统”;它消除了编排的需要。“编排”的定义是指执行一个预定的工作流:先执行A,再B,然C。相反,Kubernetes由一组独立的可组合控制进程组成。怎么样从A到C并不重要,达到目的就好。当然集中控制也是必不可少,方法更像排舞的过程。这使得系统更加易用、强大、弹性和可扩展。

三、深入浅出地了解Kubernetes

Kubernetes是一个软件系统,它允许你在其上很容易的部署和管理容器化的应用。它依赖于Linux容器的特性来运行异构应用,而且无需知道这些应用的内部详情,也不需要手动将这些应用部署到每台服务器。Kubernetes使你在数以千计的电脑节点上运行软件时,就像所有这些节点是单个运行的节点一样。
在这里插入图片描述
上图为一个简单的Kubernetes系统图,整个系统由一个主节点和若干个工作节点组成。开发者把一个应用列表提交到主节点,Kubernetes会将他们部署到集群的工作节点(声明式)。组件被部署在哪个节点对于开发者和系统管理员来说都不关心。

四、 Kubernetes集群架构

一个Kubernetes集群由很多个结点组成,这些结点可以分为主节点和工作节点。其中主节点,承载着Kubernetes控制和管理整个集群系统的控制面板。工作节点运行着用户实际部署的应用。如下图所示:
在这里插入图片描述
主结点和工作结点均包含了多个组件,本文先不对各个组件的功能、工作原理等进行展开,在后续文章中再进行详细的介绍。

五、在Kubernetes中运行应用

在Kubernetes进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。

为了在Kubernetes中运行应用,首先需要将应用打包进一个或多个容器镜像,再将这些镜像推送到镜像仓库,然后将应用的描述发布到Kubernetes API服务器。

应用的描述包括诸如组件的版本、类型、元数据、容器镜像或者包含应用程序组件的容器镜像、这些组件如何相互关联,以及哪些组件需要同时运行在同一个节点上和哪些组件不需要同时运行等信息。此外。该描述还包括哪些组件可以作为内部或者外部客户提供服务且应用通过单个IP地址暴露,并且其他组件可以发现。

描述如何成为一个运行的容器?
在这里插入图片描述
如上图所示,当API服务器接收到创建Pod的描述时,会将接受到的描述信息写入到分布式存储etcd中。调度器(Scheduler)监听API服务器,当检测到未绑定Node的Pod时,开始调度并更新Pod的Node绑定。当Node结点的组件Kubelet检测到有新的Pod调度,通过容器(Docker)运行该Pod,并更新到API服务器中。API服务器再到分布式存储etcd中更新该创建Pod的描述信息。

如果不好理解,还可参考下图,应用描述符列出了四个容器,并将它分为三组(Pod)。前两个Pod包含一个容器,最后一个Pod包含两个容器(该Pod内的两个容器需要协作运行,不应该相互隔离)。在每个Pod旁边的数字表示需要并行运行的Pod的副本数量。在向Kubernetes提交了描述符之后,它将每个Pod的指定副本数量调度到可用的工作结点上。节点上的Kubelets将告知Docker从镜像仓库中拉取容器镜像并运行容器。

在这里插入图片描述
今天的总结就先到这里啦,上个周末,偷懒休息了两天,见了大学的老朋友还和合肥的同事们聚了餐。需要坚持呀,努力保持一周一总结,不过今天的文章很少有自己的描述,大部分抄的书,见谅!

参考说明:
1.本文结合了书集《Kubernetes 入门指南》、《Kubernetes in Action》
2.部分图片来源于网络,侵删。

搬运自自己的陈年公众号,欢迎关注一起学习呀~
微信搜索:班码文章
在这里插入图片描述


http://www.ppmy.cn/news/1179810.html

相关文章

【详细】Java网络通信 TCP、UDP、InetAddress

一、网络程序设计基础 1.局域网与因特网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机&#xff08;服务器<-->网络<-->客户机&#xff09;。 服务器是指提供信息的计算机或程序&#xff0c;客户机是指请求信息的计算机或程序。网络用…

LUCEDA IPKISS------Definition Properties 表格查询

LUCEDA IPKISS------Definition Properties 表格查询

AI口语APP的实现方法

开发AI口语应用程序涉及多个技术领域&#xff0c;包括语音识别、自然语言处理、机器学习和应用程序开发。下面是开发AI口语应用程序的一般步骤和实现方法&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作…

MySQL安全基线检查

目录 安全基线检查基础知识MySQL 的安全基线检查MySQL 更严格的一些基线检查内容一、安全基线检查基础知识 1、安全基线的定义: 安全基线是一个信息系统的最小安全保证,即该信息系统最基本需要满足的安全要求。它是在安全付出成本与所能够承受的安全风险之间进行平衡的合理…

基于springboot实现网上图书商城管理系统项目【项目源码+论文说明】

基于springboot实现网上图书商城管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上图书商城的网络应用&#xff0c;在外国网上图书商城已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步…

ReentranLock超详细讲解

目录 ReentranLockAQS底层AQS的变量、常量与内部类Node内部类 FairSync&#xff1a;公平锁lock方法AbstractQueuedSynchronizer的acquire方法tryAcquire方法getState方法setExclusiveOwnerThread方法总结tryAcquire方法 返回AbstractQueuedSynchronized的acquire方法acquireQue…

JS的事件委托(Event Delegation)

✨ 事件委托&#xff08;Event Delegation&#xff09;及其优势和缺点 &#x1f383; 什么是事件委托 事件委托是一种在JavaScript中处理事件的技术。它利用了事件的冒泡机制&#xff0c;将事件处理程序绑定到它们的共同祖先元素上&#xff0c;而不是直接绑定到每个子元素上。…

ES性能优化最佳实践- 检索性能提升30倍!

Elasticsearch是被广泛使用的搜索引擎技术&#xff0c;它的应用领域远不止搜索引擎&#xff0c;还包括日志分析、实时数据监控、内容推荐、电子商务平台、企业级搜索解决方案以及许多其他领域。其强大的全文搜索、实时索引、分布式性能和丰富的插件生态系统使其成为了许多不同行…