Kubernetes是怎样工作的?

电子说

1.3w人已加入

描述

什么是 Kubernetes?

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化,它拥有庞大且快速发展的生态系统,Kubernetes 服务、支持和工具随处可见。

您可以将运行 Linux® 容器的主机组集群在一起,Kubernetes 可帮助您轻松高效地管理这些集群。

Kubernetes 集群 可以跨越本地、公共、 私有或 混合云的主机,因此,Kubernetes 是托管 需要快速扩展的云原生应用程序的理想平台 ,例如通过Apache Kafka的实时数据流 。

Kubernetes 的名字来源于希腊语,意思是舵手或飞行员,K8s 作为缩写的结果来自计算“K”和“s”之间的八个字母,Google 于 2014 年开源了 Kubernetes 项目。Kubernetes 结合了 Google 超过 15 年的大规模运行生产工作负载的经验以及来自社区的最佳创意和实践。

为什么我们需要 Kubernetes?

保持容器化应用程序的启动和运行可能很复杂,因为它们通常涉及部署在不同机器上的许多容器,Kubernetes 提供了一种调度和部署这些容器的方法,并将它们扩展到您想要的状态并管理它们的生命周期,使用 Kubernetes 以可移植、可扩展和可扩展的方式实现基于容器的应用程序。

Kubernetes 的好处?

容器是捆绑和运行应用程序的好方法。在生产环境中,您需要管理运行应用程序的容器并确保没有停机,例如,如果一个容器宕机,另一个容器需要启动,如果这种行为由系统处理会不会更容易?

Kubernetes 提供了一个弹性运行分布式系统的框架,负责应用程序的扩展和故障转移,提供部署模式等等,例如,Kubernetes 可以轻松管理系统的金丝雀部署。

Kubernetes 提供:

  • 服务发现和负载平衡 :Kubernetes 可以使用 DNS 名称或使用自己的 IP 地址公开容器,如果容器的流量很高,Kubernetes 能够负载均衡和分配网络流量,从而使部署稳定。
  • 存储编排 :Kubernetes 允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。
  • 自动推出和回滚 :可以使用 Kubernetes 描述已部署容器的所需状态,它可以以受控速率将实际状态更改为所需状态,例如,您可以自动化 Kubernetes 为您的部署创建新容器、删除现有容器并将其所有资源用于新容器。
  • 自动装箱 :您为 Kubernetes 提供了一组节点,可用于运行容器化任务,您告诉 Kubernetes 每个容器需要多少 CPU 和内存 (RAM),Kubernetes 可以将容器安装到您的节点上,以充分利用您的资源。
  • 自我修复 :Kubernetes 会重启失败的容器、替换容器、杀死不响应用户定义的健康检查的容器,并且在它们准备好提供服务之前不会向客户端通告它们。
  • 秘密和配置管理 :Kubernetes 允许您存储和管理敏感信息,例如密码、OAuth 令牌和 SSH 密钥,可以部署和更新机密和应用程序配置,而无需重建容器映像,也无需在堆栈配置中公开机密。

Kubernetes 如何工作?

随着应用程序扩展到跨多个服务器部署的多个容器,操作它们变得更加复杂,为了管理这种复杂性,Kubernetes 提供了一个开源 API,用于控制这些容器的运行方式和位置。

Kubernetes 编排虚拟机集群并根据它们的可用计算资源和每个容器的资源要求安排容器在这些虚拟机上运行,容器被分组为 pod ,这是 Kubernetes 的基本操作单元,这些 pod 可以扩展到您想要的状态。

开源平台

Kubernetes 还自动管理服务发现、整合负载平衡、跟踪资源分配并根据计算利用率进行扩展,而且,它会检查单个资源的健康状况,并通过自动重启或复制容器使应用程序能够自我修复。

开源平台

  1. 在同一个 Kubernetes 集群中一起快速迭代、测试和调试应用程序的不同部分。
  2. 将代码合并并检查到 GitHub 存储库中以进行持续集成,然后,运行自动化构建和测试作为持续交付的一部分。
  3. 验证容器镜像的来源和完整性,图像被隔离,直到它们通过扫描。
  4. 使用 Terraform 等工具配置 Kubernetes 集群。Terraform 安装的 Helm 图表定义了应用程序资源和配置的所需状态。
  5. 实施策略来管理对 Kubernetes 集群的部署。
  6. 发布管道自动对每个代码执行预定义的部署策略。
  7. 向 CI/CD 管道添加策略审计和自动修复,例如,只有发布管道有权在您的 Kubernetes 环境中创建新的 Pod。
  8. 启用应用遥测、容器运行状况监控和实时日志分析。
  9. 用洞察力解决问题并为下一个冲刺制定计划。

什么是POD?

Kubernetes pod 是一组 容器 ,是 Kubernetes 管理的 最小单元 ,Pod 有一个 IP 地址,应用于 Pod 内的每个容器。Pod 中的容器共享相同的资源,例如内存和存储,这允许将 pod 内的各个 Linux 容器作为一个应用程序共同处理,就好像所有容器化进程在更传统的工作负载中在同一台主机上一起运行一样。

当应用程序或服务是需要运行的单个进程时,只有一个容器的 pod 是很常见的,但是当事情变得更复杂,多个进程需要使用相同的共享数据卷协同工作才能正确运行时,

例如,如果您正在使用创建 GIF 的图像处理服务,一个 pod 可能有多个容器协同工作来调整图像大小,主容器可能正在运行接收请求的非阻塞微服务应用程序,然后一个或多个辅助(side-car)容器运行批处理后台进程或清理存储卷中的数据工件,作为管理整体应用程序性能的一部分。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分