您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

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

时间:2022-10-06 16:35:58  来源:网易号  作者:qaseven

开始使用 Kube.NETes 并不容易。本文将帮助您了解 Kubernetes 的一些最重要的概念。每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。

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

开始使用 Kubernetes并不容易。

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

 

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

 

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

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

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

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

 

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

 

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

3:什么是 Kubernetes?

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

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

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

 

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

 

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

4.1:什么是集群?

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

 

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

 

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

 

  1. API Server - 处理 K8S 集群的所有通信(来自节点和外部)
  2. 调度程序- 决定 pod 的位置
  3. 控制管理中心- 管理部署和副本集
  4. 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 将创建

 

  1. 部署
  2. 一个 ReplicaSet 和
  3. 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。

你将会有:

 

  1. 一个部署代表微服务 A
  2. 微服务A V1的一个ReplicaSet
  3. 微服务 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 地址。在以下情况下,您如何确保外部用户不受影响:

 

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

 

解决方案:创建一个服务

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

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

服务分为三类:

 

  1. ClusterIP:在集群内部 IP 上公开服务。用例:您希望您的微服务仅在集群内部可用(集群内通信)。
  2. LoadBalancer:使用云提供商的负载均衡器向外部公开服务。用例:您想为每个微服务创建单独的负载均衡器。
  3. NodePort:在每个节点的 IP 上的静态端口(NodePort)上公开服务。用例:您不想为每个微服务创建一个外部负载均衡器(您可以创建一个 Ingress 组件来对多个微服务进行负载均衡)。
5:接下来的步骤
  1. 尝试 Kubernetes 游乐场
  2. 在其中一个云平台中创建一个 Kubernetes 集群并使用它(GKE 有一个免费层。您可以尝试 AKS 和 EKS,但它们目前还不是免费层的一部分!)。


Tags:Kubernetes   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  Search: Kubernetes  点击:(6)  评论:(0)  加入收藏
Kubernetes 集群 CPU 使用率只有 13% :这下大家该知道如何省钱了
作者 | THE STACK译者 | 刘雅梦策划 | Tina根据 CAST AI 对 4000 个 Kubernetes 集群的分析,Kubernetes 集群通常只使用 13% 的 CPU 和平均 20% 的内存,这表明存在严重的过度...【详细内容】
2024-03-08  Search: Kubernetes  点击:(19)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  Search: Kubernetes  点击:(39)  评论:(0)  加入收藏
Kubernetes Informer基本原理,你明白了吗?
本文分析 k8s controller 中 informer 启动的基本流程不论是 k8s 自身组件,还是自己编写 controller,都需要通过 apiserver 监听 etcd 事件来完成自己的控制循环逻辑。如何高...【详细内容】
2024-01-30  Search: Kubernetes  点击:(40)  评论:(0)  加入收藏
Kubernetes 100个常用命令!
这篇文章是关于使用 Kubectl 进行 Kubernetes 诊断的指南。列出了 100 个 Kubectl 命令,这些命令对于诊断 Kubernetes 集群中的问题非常有用。这些问题包括但不限于:• 集...【详细内容】
2024-01-03  Search: Kubernetes  点击:(78)  评论:(0)  加入收藏
管理 Kubernetes 集群这3年,我踩过的十个坑
作者 | Herve Khg编译 | 如烟出品 | 51CTO技术栈(微信号:blog51cto) Kubernetes 作为云计算领域的绝对主角,当仁不让地坐上了容器技术领域的“头把交椅”。它的精髓在于,你只要在...【详细内容】
2023-12-15  Search: Kubernetes  点击:(168)  评论:(0)  加入收藏
在 Kubernetes 中无侵入安装 OpenTelemetry 探针,你学会了吗?
OpenTelemetry 探针OpenTelemetry(简称 Otel,最新的版本是 1.27) 是一个用于观察性的开源项目,提供了一套工具、APIs 和 SDKs,用于收集、处理和导出遥测数据(如指标、日志和追踪信...【详细内容】
2023-12-07  Search: Kubernetes  点击:(174)  评论:(0)  加入收藏
Kubernetes 的调试功能 ,别慌:debug 不行,还有superdebug
这篇内容主要探讨了 Kubernetes 的调试功能,介绍了 kubectl debug 和 kubectl superdebug。它们支持容器挂载并且能够调试一些需要排查问题的 Pod。文章指出了在 Kubernetes...【详细内容】
2023-12-06  Search: Kubernetes  点击:(216)  评论:(0)  加入收藏
Kubernetes 中的服务注册与发现原理分析
对k8s有点了解技术人员,应该都只知道k8s是有服务注册发现的,今天就分析下这个原理,看看怎么实现的。什么是服务注册与发现服务注册与发现是一种机制,用于在集群中动态地发现和连...【详细内容】
2023-11-30  Search: Kubernetes  点击:(165)  评论:(0)  加入收藏
普通Kubernetes Secret足矣
众所周知,Kubernetes secret 只是以 base64 编码的字符串,存储在集群的其余状态旁边的 etcd 中。自 2015 年引入 secret 以来,安全专家就一直在嘲笑这一决定,并寻求其他替代方案...【详细内容】
2023-11-30  Search: Kubernetes  点击:(177)  评论:(0)  加入收藏
▌简易百科推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  小白debug  微信公众号  Tags:Docker   点击:(12)  评论:(0)  加入收藏
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22    51CTO  Tags:Docker   点击:(11)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  云原生运维圈  微信公众号  Tags:容器   点击:(13)  评论:(0)  加入收藏
如何基于Docker镜像逆向生成Dockerfile
引言你是否曾经遇到过一个想要使用的 Docker 镜像,但却无法修改以适应你的特定需求?或者你可能发现了一个喜欢的 Docker 镜像,但想要了解它是如何构建的?在这两种情况下,将 Docke...【详细内容】
2024-03-07  云原生运维圈  微信公众号  Tags:Docker   点击:(23)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01    简易百科  Tags:Kubernetes   点击:(162)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  匠心独运维妙维效  微信公众号  Tags:容器   点击:(47)  评论:(0)  加入收藏
Docker与Docker Compose入门:释放你应用部署的威力
今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨...【详细内容】
2024-01-17  waynblog  微信公众号  Tags:Docker   点击:(66)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  编程技术汇  今日头条  Tags:Docker   点击:(79)  评论:(0)  加入收藏
如何在 Ubuntu 上安装 Docker
使用 Docker 意味着开启一个新的计算领域,但如果你刚刚开始使用 Docker,安装可能看起来是一项艰巨的任务。在 Ubuntu 上安装 Docker 有两种推荐的方法: 从 Ubuntu 的仓库安装 D...【详细内容】
2024-01-04    Linux中国  Tags:Docker   点击:(124)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  云云众生s  微信公众号  Tags:Kubernetes   点击:(117)  评论:(0)  加入收藏
站内最新
站内热门
站内头条