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将立即回滚这些更改。
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。