Kubernetes初学者介绍

听说过很多关于Kubernetes的事情,但不确定它们是什么?

什么是Kubernetes?

Kubernetes是一个开源工具,负责容器编排。它自动化容器部署、持续扩展和缩减、容器负载均衡等任务。

Google最初在Go编程语言上开发了Kubernetes。

目前,它是容器编排领域的市场领导者。Kubernetes是托管动态伸缩的微服务应用的理想平台。当您在生产环境中工作时,Kubernetes是最受欢迎且更安全的容器编排平台。

因为在生产环境中,您期望零停机时间,您的集群应始终保持运行。

使用Google Cloud Platform (GCP),您可以轻松启动Kubernetes。它也得到其他云提供商的支持,如AWS和Azure。此外,还有多个managed Kubernetes platform可用。

为什么选择Kubernetes?

以前,开发人员和测试人员之间的争论是常见的。

他们使用的环境是不同的;在开发人员的系统上运行的东西在测试人员的系统上无法运行。

现在,由于大多数组织使用容器,因此由于环境差异引起的问题已不再出现。

但是组织和运行多个容器也不是一件容易的任务。当您处理动态应用、伸缩容器数量时,这是一项常规任务。手动执行这样的任务可能会很复杂且存在风险。因此,需要一个容器编排工具,这就是为什么需要Kubernetes。

Kubernetes特性

有很多特性,以下是一些最好的特性。

# 自动资源调度

Kubernetes对您的应用程序进行打包,并根据其要求和可用资源自动放置容器。

# 服务发现和负载均衡

Kubernetes会自动为容器分配IP地址和DNS名称,用于运行逻辑操作的容器。在一组容器之间也会存在负载均衡特性。

# 存储编排

Kubernetes会自动挂载您选择的存储系统。可以是AWS等提供商。

# 自我修复

当Kubernetes意识到您的一个容器失败时,它会自动重新启动该容器,并在集群中的其他运行节点上创建一个新容器以替代崩溃的容器。如果节点失败,那么在该节点上运行的容器将在集群中的另一个运行节点上启动。

# 水平扩展

您可以使用简单的命令快速扩展和缩减应用程序。该简单命令可通过命令行界面或Kubernetes仪表板运行。还可以根据CPU使用情况进行自动扩展,容器将自动进行伸缩。

# 自动回滚和发布

每当应用程序有更新时,Kubernetes会逐步部署这些更改和更新到应用程序或其配置中。不是同时更新所有实例,从而确保高可用性。如果出现问题,则Kubernetes将立即回滚这些更改。

了解如何install and set up Kubernetes

Kubernetes术语

在开始实际操作之前,您需要了解Kubernetes中经常使用的一些术语。

# Pod

代表在集群中运行的一个或多个容器。

# Service

访问容器/应用程序的抽象方式。

# Namespace

用于在集群内消除名称冲突。它支持在同一物理集群上创建多个虚拟集群。

# Node

Kubernetes工作节点。

# Cluster

由一组节点组成,在Kubernetes上运行容器化应用程序。

# 注释

用于存储资源所需数据的标签。

# 卷

容器在pod中访问的数据目录。

# ReplicaSet

运行中pod的多个副本。

# 标签

为Kubernetes对象提供一个名称,以便在系统中进行识别。

# Kubelet

在每个节点上运行的代理程序,用于检查容器是否在pod中运行。

# Kubectl

与Kubernetes API服务器进行交互的命令行实用程序。

# Kube-proxy

网络代理,包含集群中每个节点上的所有网络规则。

Kubernetes和Docker

现在你可能在想,Kubernetes与Docker有什么不同。短语Kubernetes vs. Docker可能会让人误解。

Docker是一个将操作系统、库和应用程序打包到容器中的平台。让我告诉你,Docker在Kubernetes中也可以做同样的事情。但是当你只使用Docker时,一切都是手动的。你需要手动启动和停止容器。但是在Kubernetes中,一切都是自动化的。

Kubernetes可以调度具有容器的pod,然后Kubelet告诉Docker启动或停止容器。在Kubernetes中,Kubelet负责监视这些容器并在主节点上收集它们的信息。所以,基本的区别是,与管理员告诉Docker该做什么不同,在Kubernetes中,一切都是自动化的。

另一个用于容器编排的工具是Docker Swarm。那么它们之间有什么区别呢?

Kubernetes vs. Docker Swarm

Kubernetes Docker Swarm
安装复杂 安装简单
更大的开源社区 与Kubernetes相比较小的社区
可以轻松编排数百个容器 适用于编排10-20个容器
Kubernetes Dashboard提供GUI 没有GUI
支持自动扩展 不支持自动扩展
支持具有自动回滚的滚动更新 支持滚动更新,但不支持自动回滚
内建日志记录和监控 需要像ELK这样的第三方工具进行日志记录和监控
可以与同一pod中的容器共享卷 可以与集群中任何容器共享卷

结论

希望现在你对Kubernetes有了基本的了解,并知道它如何帮助。如果你从事DevOps或考虑从事该领域,我建议你参加这个fantastic Udemy course to learn Kubernetes

类似文章