百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

5 个重要的 Kubernetes 概念让学习变得简单

connygpt 2024-08-22 12:49 12 浏览

开始使用 Kubernetes 并不容易。本文将帮助您了解 Kubernetes 的一些最重要的概念。

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。

Kubernetes 是最流行的开源容器编排解决方案。

开始使用 Kubernetes并不容易。

本文将帮助您了解 Kubernetes 的一些最重要的概念。

  1. 为什么我们需要容器编排?
  2. 什么是容器编排?
  3. 什么是 Kubernetes?
  4. Kubernetes 最重要的概念是什么?
    1. 什么是集群?
    2. 让我们部署一个微服务
    3. 什么是 Pod?
    4. 什么是副本集?
    5. 什么是部署?
    6. 快速回顾 - 部署与副本集
    7. 什么是服务?
  5. 下一步

1:为什么我们需要容器编排?

大多数企业都在采用微服务架构。

微服务提供了创新的灵活性

然而,微服务并不是免费的。我们没有部署几个应用程序,而是部署了数百个微服务。这导致复杂性增加。

容器可以帮助简化您的部署和可观察性挑战。但是,在管理基础架构和部署方面仍然存在挑战。示例:我想要 10 个微服务 A 容器实例,15 个微服务 B 容器实例,......等等多个微服务。此外,我的微服务还需要一些其他功能。一些典型特征包括:

  • Auto Scaling - 根据需求扩展容器
  • 服务发现- 帮助微服务找到另一个
  • 负载均衡器- 在微服务的多个实例之间分配负载
  • 自我修复- 进行健康检查并替换失败的实例
  • 零停机部署- 无需停机即可发布新版本

2:什么是容器编排?

容器编排解决方案提供了微服务架构所需的大部分技术特性。您将能够创建一个包含多个 VM 实例的集群并将微服务部署到该集群。容器编排解决方案将管理集群和部署。

3:什么是 Kubernetes?

有许多容器编排平台:Docker Swarm、Mesosphere 和 Kubernetes 等。在过去的几年里,Kubernetes 已经成为容器编排领域的赢家。

4:什么是最重要的 Kubernetes 概念?

假设您想使用 Kubernetes 建立一个微服务架构。以下是工作流程的样子:

  • 第 1 步:创建具有多个节点(或虚拟机)的容器编排的 Kubernetes 集群
  • 第 2 步:部署和配置您的第一个微服务
  • 第 3 步:部署和配置您的第二个微服务

现在让我们深入研究其中的每一个。

4.1:什么是集群?

集群是一组虚拟机。在集群中,有两种类型的节点:

  • 主节点- 管理集群。您将所有部署指令发送到主节点。
  • 工作节点- 所有微服务都在工作节点上运行。

以下是一些重要的主节点(控制平面)组件:

  • API Server - 处理 K8S 集群的所有通信(来自节点和外部)
  • 调度程序- 决定 pod 的位置
  • 控制管理中心- 管理部署和副本集
  • etcd - 存储集群状态的分布式数据库

工作节点的工作是运行您的微服务。此外,一个名为 Kubelet 的 Kubernetes 组件在每个 pod 上运行。Kubelet 使工作节点能够与主节点通信。

4.2:让我们部署一个微服务

假设我要部署微服务 A 的 V1 的 5 个实例。发出创建部署并为其设置多个实例的命令类似于您在下面看到的:

**create deployment** hello-world-rest-api --image=in28min/hello-world-rest-api:0.0.1.RELEASE
scale deployment hello-world-rest-api --replicas=5

这会将具有 5 个实例的微服务 A 的 v1 部署到 Kubernetes 集群。

在内部,Kubernetes 将创建

  • 部署
  • 一个 ReplicaSet 和
  • 5个豆荚

为什么 Kubernetes 会这样做?

让我们深入挖掘。

4.3: 什么是 Pod?

Pod 是 Kubernetes 中最小的可部署单元。一个 pod 代表你的微服务的一个实例。每个 Pod 都分配有一个临时IP 地址

如果我在 Kubernetes 集群中运行 10 个微服务 A 实例和 12 个微服务 B 实例,那么我总共将运行 10 + 12 = 22 个 Pod。

4.4:什么是ReplicaSet?

我们将具有 5 个实例的微服务 A 部署到 Kubernetes 集群。这意味着您有 5 个 pod 正在运行。假设你杀死了一个豆荚。Kubernetes 会自动识别这一点并创建一个替换 pod。Kubernetes 监控您的 pod 的健康状况并替换不健康的 pod。Kubernetes 如何做到这一点?

这是 ReplicaSet 的工作。

ReplicaSet 确保指定数量的 pod 始终在运行。在上面的例子中,一个 ReplicaSet 确保了微服务 A 的 5 个实例始终在运行。

4.5:什么是部署?

如果一个 ReplicaSet 保证了特定数量的 pod,那么 Deployment 的作用是什么?

部署可确保您在发布微服务的新版本时具有灵活性。

部署代表微服务的所有版本。

目前,我们只有一个版本的微服务。但是,您可以部署新版本。比方说,我想在不停机的情况下部署微服务 V2。

这就是部署的工作。

当您部署现有微服务的新版本时,部署将为微服务 A 的 V2 创建一个新的 ReplicaSet。

你将会有:

  • 一个部署代表微服务 A
  • 微服务A V1的一个ReplicaSet
  • 微服务 A V2 的一个 ReplicaSet

部署英国

4.6:快速回顾 - 部署与副本集

kubectl create deployment microservice1 --image=microservice1:v1

为每个微服务创建一个部署。Deployment 代表一个微服务(及其所有版本)。部署管理新版本,确保零停机时间。

副本集确保为特定微服务版本运行特定数量的 pod 。即使其中一个 pod 被杀死,副本集也会启动一个新的。

kubectl set image deployment microservice1 microservice1=microservice1:v2

当你部署一个 V2 的微服务时,会创建一个新的 ReplicaSet(V2 ReplicaSet)。

部署根据配置的发布策略更新 V1 副本集和 V2 副本集。

4.7: 什么是服务?

在 Kubernetes 中,每个 Pod 都有自己的 IP 地址。在以下情况下,您如何确保外部用户不受影响:

  • 吊舱出现故障并被替换或
  • 部署了新版本的微服务,并且旧版本的所有现有 Pod 都被新版本的 Pod 替换

解决方案:创建一个服务

expose deployment name --type=LoadBalancer --port=80

服务使用稳定的 IP 地址将您的部署暴露给外部世界。这可确保您的用户不会在 pod 上下移动时受到影响。

服务分为三类:

  • ClusterIP:在集群内部 IP 上公开服务。用例:您希望您的微服务仅在集群内部可用(集群内通信)。
  • LoadBalancer:使用云提供商的负载均衡器向外部公开服务。用例:您想为每个微服务创建单独的负载均衡器。
  • NodePort:在每个节点的 IP 上的静态端口(NodePort)上公开服务。用例:您不想为每个微服务创建一个外部负载均衡器(您可以创建一个 Ingress 组件来对多个微服务进行负载均衡)。

5:接下来的步骤

  • 尝试 Kubernetes 游乐场
  • 在其中一个云平台中创建一个 Kubernetes 集群并使用它(GKE 有一个免费层。您可以尝试 AKS 和 EKS,但它们目前还不是免费层的一部分!)。

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...