初学者的Kubernetes圣经

简介: 在开始撰写本文之前,我想问你几个问题。 你或你的团队是否需要使用Kubernetes进行容器编排?你想学习Kubernetes是否很困惑从哪里开始? 你愿意改变你的组织吗?你想简化容器软件编排吗?然后我想告诉你,这篇文章是所有这些问题的答案。
在开始撰写本文之前,我想问你几个问题。 你或你的团队是否需要使用Kubernetes进行容器编排?你想学习Kubernetes是否很困惑从哪里开始? 你愿意改变你的组织吗?你想简化容器软件编排吗?然后我想告诉你,这篇文章是所有这些问题的答案。

Kubernetes旨在简化事情,本文旨在为您简化Kubernetes!Kubernetes是一个由Google开发的强大的开源系统。它是为在集群环境中管理容器化应用程序而开发的。Kubernetes已经获得了普及,并且正在成为在云上部署软件的新标准。

学习Kubernetes并不困难(如果导师很好),它提供了强大的能力。学习曲线有点陡峭。因此,让我们以简化的方式学习Kubernetes。本文介绍了Kubernetes的基本概念,架构,它是如何解决问题的等。

Kubernetes是什么?

实际上Kubernetes本身就是一个用于在多台机器上运行和协调应用程序的系统。该系统管理容器化应用程序和服务的生命周期。为了管理生命周期,它使用不同的方法来提高可预测性,可伸缩性和高可用性。

Kubernetes用户可以自由决定应用程序的运行和通信方式。还允许用户扩展/缩减服务,执行滚动更新,在不同应用程序版本之间切换流量等。Kubernetes还提供用于定义/管理应用程序的不同接口和平台原语。

Kubernetes硬件

Kubernetes需要不同类型的硬件。我们需要了解的是Kubernetes本身是不需要硬件的,但功能系统需要硬件。

Nodes


Kubernetes中的节点是什么?Kubernetes中最小的计算单位之一被称为节点。它是一台机器,位于一个集群中。节点不一定需要是物理机器或硬件的一部分。它可以是物理机器或虚拟机。对于数据中心,节点是物理机器。对于Google Cloud Platform,节点是虚拟机。目前,我们正在讨论Kubernetes的硬件,所以让我们相应地考虑一下。但是不要将节点限制为“硬件”。
02.png

任何机器中总是有一个抽象层。但在这里,没有必要担心机器的特性。实际上,我们可以简单地将每台机器视为一组CPU和RAM资源。这些计算机位于群集中,可以根据需要使用其资源。当我们谈到Kubernetes,你自然地这样想!在你自由地利用任何机器资源的那一刻,系统变得无比灵活。现在任何机器都可以成为Kubernetes集群中的一个节点。

Cluster

我们已经讨论了节点,对吗?他们似乎是小而可爱的处理单位。他们在自己的小房子里工作。所有这些听起来都很完美,但它还不是Kubernetes的方式!所以集群来了。您无需担心单个节点的状态,因为它们是集群的一部分。例如,如果单个节点表现不佳,则应该有人来管理所有这些。此外,集群是多个节点的集合。将所有节点的资源集中在一起,共同构成一个强大的机器。
03.png

集群是很智能的。你知道为什么吗?当程序部署到集群上时,它会动态处理分发。简而言之,它将任务分配给各个节点。在该过程之间,如果添加或删除任何节点,则集群会根据需要移动任务。程序员不需要专注于诸如单个机器运行的代码之类的东西等等。哦,我还记得一些非常有趣的东西。你还记得星际迷航中的“Borg”吗?这个名字来自哪里?Google内部的Kubernetes项目的名字就是这个。

Persistent Volumes

如上所述,程序在集群上运行并由节点提供支持。但它们不在特定节点上运行。程序动态地运行。因此,需要存储信息,并且不能将其随机存储在任何文件系统中。为什么?例如,程序将数据保存到文件中。但是后来,该程序被重新定位到另一个节点。下次程序需要该文件时,它不会在预期的位置。位置地址已经改变。为了解决这个问题,与每个节点相关的传统本地存储被认为是用于保存程序的临时缓存。但是,任何本地保存的数据都不会持续存在。
04.png

那么谁来永久存储数据呢?是的,持久性卷来永久存储它。集群管理所有节点的CPU和RAM资源。但是,集群不负责将数据永久存储在持久卷中。本地驱动器和云驱动器可以像持久卷一样附加到集群。这很类似于将外部驱动器插入集群。持久卷提供文件系统。它可以挂载到集群,而不与任何特定节点进行关联。

这是Kubernetes的硬件部分。 现在让我们转到软件部分。

Kubernetes软件

Kubernetes的整体概念基于软件。所以这是Kubernetes的主要部分。

Containers

在Kubernetes中,程序运行在Linux容器。这些容器基于预编译的镜像。镜像可以部署在Kubernetes上。你知道什么是容器化吗?它允许你创建Linux执行环境。

程序及其依赖项打包在单个镜像中,并在网上共享。因此,任何人都可以按照需求下载镜像并将其部署在基础设施上。只需一点设置即可轻松部署。可以在程序的帮助下创建容器。这使得能够形成有效的CI/CD管道。

容器能够处理多个程序。但建议每个容器限制一个进程,因为这有助于排除故障。更新容器很容易,如果它很小,部署也很容易。最好有许多小容器,而不是大容器。

Pod

Kubernetes有一些独特的特性,其中之一是它不直接运行容器。它将一个或多个容器包装成一个Pod。 Pod的理念是同一Pod中的任何容器使用相同的资源和相同的本地网络。

好处是容器可以容易地相互通信。它们是孤立的,但随时可以通信。

Pod可以在Kubernetes中复制。例如,应用程序变得流行并且单个Pod无法承受负载。此时,可以根据需要配置Kubernetes以部署Pod的新副本。

但是,只有在重负载期间才需要进行复制。Pod也可以在正常条件下复制。这有助于统一负载平衡和抵抗故障。
05.jpg

Pod能够容纳多个容器,但如果可能的话,应该限制为一个或两个容器。原因是Pod作为一个单元向上和向下扩展。Pod内的容器也必须与Pod一起缩放。在这个阶段,单个容器的需求并不重要。另一方面,这会导致资源浪费和昂贵的账单。

为避免这些,请将Pod限制为少数几个容器。如果你遇到过“sidecar”这个词,那就意味着辅助容器。所以有主进程容器,可能有一些辅助容器。

Depoloyment

06.png

你已经注意到,Pod是Kubernetes的基本单位。但它们不是直接在群集上启动的。它们由多个抽象层进行管理,这就是Deployment存在的原因。主要目的是声明一次运行的副本数。

添加Deployment之后,它会监控Pod的数量。同样,如果Pod不存在,则Deployment会重新创建它。

有趣的是,通过Deployment,可以无需处理Pod。 同时,通过声明系统状态,可以自动管理所有内容。

通过Ingress向成功进军

我们已经讨论了Kubernetes的所有基本概念。使用它们,你可以创建节点、集群。创建集群后,就可以在集群上启动Pod的部署。但是,你如何允许外部流量到你的应用程序?我们还没有讨论过这个问题。
07.jpg

根据Kubernetes的概念,它提供了Pod和外部世界之间的隔离。要与在Pod中运行的服务进行通信,需要打开一个通道。通道是沟通的媒介。它被称为“Ingress”。

有许多方法可以向集群添加Ingress。最常见的是通过Ingress Controller或负载均衡器。我们可以讨论这两种方法之间的区别,但目前不需要,因为它太具技术性。

现在,您应该了解Ingress对于尝试Kubernetes非常重要。虽然你其他都做得很对,但是如果你不考虑Ingress,你将无法到达任何地方!

Kubernetes如何解决问题?

在讨论了Kubernetes的部署部分之后,有必要了解Kubernetes的重要性。

容器编排和Kubernetes

容器是虚拟机。它们轻巧,可扩展且独立。容器放在一起需要设置安全策略,限制资源利用率等。如果您的应用程序基础结构类似于下面共享的镜像,则容器编排是必要的。

它可能是在几个容器上运行的Nginx/Apache + PHP/Python/Ruby/Node.js应用程序,通过数据库副本通讯。容器编排(Container orchestration)将帮助您自己管理所有内容。
08.png

请考虑你的应用程序不断增长。例如,你继续添加更多特性/功能,并且在某个时间点,你意识到它突然变成了巨大的单体应用。

现在,管理庞大的应用程序是不可能的,因为它会占用太多CPU和RAM。所以你最终决定将应用程序分成更小的块。他们每个人都有一个特定的任务。现在,你的基础架构如下所示:
09.png

因此,你需要一个带有队列系统的缓存层,以获得更好的异步性能。现在你会发现,存在服务发现,负载平衡,运行状况检查,存储管理,自动扩展等挑战。

在所有这些情况下,谁会来帮助你?是的,容器编排将成为你的救星!原因是容器编排功能非常强大,可以解决大部分挑战。

那有什么选择呢?

主要候选者是Kubernetes,AWS ECS和Docker Swarm。在所有这些中,Kubernetes是最受欢迎的!Kubernetes提供最大的社区。Kubernetes解决了所描述的所有主要问题。它是可移植的,可运行在大多数云提供商,裸机,混合环境以及所有这些的组合上。此外,它也是可配置和模块化的。它提供自动放置,自动重启,自动复制和容器自动修复等功能。

要点

最重要的是,Kubernetes拥有一个活跃的在线社区。这个社区的成员在网上以及在世界主要城市线下聚会。国际会议“KubeCon”已经证明是一个巨大的成功。Kubernetes还有一个官方的Slack小组。Google云平台,AWS,Azure,DigitalOcean等主要云提供商也提供其支持渠道。 你还在等什么?

本文转自DockOne-初学者的Kubernetes圣经

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统apt添加第三方PPA源教程】
现在,你已经成功在Ubuntu系统中添加了第三方PPA源。系统将会从该源获取更新和软件包。请注意,添加第三方PPA源时要确保其来源可信,以免引入不安全的软件包。
767 5
|
11月前
|
数据采集 人工智能 运维
Dataphin功能Tips系列(85)告别“人肉排障”:AI驱动数据质量根因诊断,让治理效率跃升
传统数据治理中,数据质量问题依赖人工排查,效率低且难定位根因。Dataphin 5.4推出X-数据质量根因诊断功能,基于AI大模型分析数据血缘与采样,智能定位问题源头,自动生成整改建议与影响评估,实现从发现问题到闭环治理的自动化,大幅提升治理效率与准确性。
536 0
|
12月前
|
人工智能 定位技术 知识图谱
【两大核心+四轮驱动】Geo优化方案规划:避开17个AI时代获客陷阱的实战指南
于磊老师首创“两大核心+四轮驱动”Geo优化方法论,倡导人性化Geo与内容可信度,助力企业避开17大陷阱,在AI时代构建权威信源,实现获客提效与品牌升级。
533 12
|
11月前
Wireshark_win32_2.2.1.0安装步骤详解
下载Wireshark安装包并双击运行,按提示选择语言、同意协议,确保勾选WinPcap驱动。可自定义安装路径和快捷方式,安装完成后建议重启电脑。启动时以管理员身份运行,即可开始抓包分析网络流量。(239字)
|
11月前
|
存储 关系型数据库 分布式数据库
|
弹性计算 Kubernetes API
Kubernetes 驱动的 IaC,Crossplane 快速入门
Crossplane 是一个开源的 Kubernetes 扩展工具,允许用户通过声明式配置直接在 Kubernetes 中管理云资源。对于阿里云开发者,借助 Crossplane 和官方提供的 provider-upjet-alibabacloud,可以像管理 Pod 一样轻松操作 ECS 实例、VPC 和 OSS Bucket 等资源。本文介绍了 Crossplane 的核心概念,并通过快速入门指南演示了如何安装 Crossplane、配置阿里云认证并创建第一个 VPC 资源。
1622 37
|
前端开发 开发者 异构计算
鸿蒙5开发宝藏案例分享---应用性能优化指南
本文介绍了鸿蒙应用性能优化的8大策略,涵盖状态刷新、渲染范围、组件绘制等方面。核心思想包括精准刷新(避免全局重绘)、控制渲染(减少不必要的组件更新)、优化绘制(降低布局计算开销)、使用并发(主线程轻量化)、减少节点(扁平化布局)、延时操作(提升启动速度)、优化动画(确保60fps流畅度)以及感知优化(用户优先)。通过具体代码示例,如懒加载、分帧渲染、异步处理等,帮助开发者实现高效优化。结尾强调性能优化是持续迭代的过程,需遵循“精准刷新、轻量化主线程、精简节点”三大原则,共同打造流畅体验。
|
监控 安全 网络协议
收藏!这7种工具可以监控AD(Active Directory)的健康状况
Active Directory (AD) 是微软为服务器操作系统设计的目录服务,用于存储和管理用户、设备等对象。72%的企业使用Windows服务器,AD成为网络核心。AD框架包括域、树、森林和组织单位。监控AD至关重要,可预防故障和安全威胁。推荐工具如Paessler PRTG、卓豪ADAudit、SolarWinds等,能有效简化管理并提高安全性。选择合适的AD管理工具,可显著提升系统管理员的工作效率和网络稳定性。
932 0
|
分布式计算 DataWorks 数据挖掘
DataWorks操作报错合集之上传数据时报错com.alibaba.datax.common.exception.DataXException: Code:[UnstructuredStorageReader-11],该如何排查
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。