开始使用 Kubernetes 并不容易。本文将帮助您了解 Kubernetes 的一些最重要的概念。
每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。
Kubernetes 是最流行的开源容器编排解决方案。
开始使用 Kubernetes并不容易。
本文将帮助您了解 Kubernetes 的一些最重要的概念。
为什么我们需要容器编排?什么是容器编排?什么是 Kubernetes?Kubernetes 最重要的概念是什么?什么是集群?让我们部署一个微服务什么是 Pod?什么是副本集?什么是部署?快速回顾- 部署与副本集什么是服务?下一步
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.RELEASEscale 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,但它们目前还不是免费层的一部分!)。
暂无评论内容