Kubernetes学习内容概述①

我在业务上没有涉足过这方面,但我个人对容器技术很感兴趣,因此学习了Kubernetes,并在本文中进行了总结。所述内容为概要性的(关于Kubernetes的架构和资源将在另一篇文章中详细介绍)。

①Kubernetes概述(详细信息请参见本文)
②了解可以使用Kubernetes实现的功能(详细信息请参见本文)
③了解Kubernetes的基本知识(详细信息请参见本文)
④了解Kubernetes的资源(详细信息将在另一篇文章中提供)
⑤了解Kubernetes的架构(详细信息将在另一篇文章中提供)
⑥Kubernetes总结(详细信息将在另一篇文章中提供)

①Kubernetes的概述.

Kubernetes是什么?

Kubernetes是一种用于自动化容器部署和扩展等管理任务的容器编排工具。除了Kubernetes外,还有OpenShift、DockerSwam、Mesos、Rancher、Amazon ECS等多种容器编排工具。其中最常使用且成为事实标准的是Kubernetes。(摘自sysdig 2019年容器使用报告)使用Kubernetes可以解放您从手动管理容器的束缚。

Kubernetes的历史

Linux Foundation的一个项目,是为了推动容器技术的发展,并与其周边的技术行业保持一致而成立的基金会CNCF(Cloud Native Computing Foundation)进行主办,由社区主导进行开发。在2015年7月之前,该项目由谷歌主办,但在Kubernetes 1.0版本发布时,被移交给了CNCF。Kubernetes是基于谷歌内部使用的容器集群管理器”Borg”的理念而创建的。

在Kubernetes上可以做的事情

扩展/自动扩展

通过在多个Kubernetes节点上部署相同的容器映像,可以实现负载均衡和提高容错能力。此外,还可以根据负载自动增加或减少容器数量。

负载平衡

为了避免负载过度集中在特定容器上,可以进行负载均衡。

安排时间表

这个功能用于管理将容器部署到哪个Kubernetes节点上。通过使用Affinity / Anti Affinity功能,可以根据容器内应用程序的特征和Kubernetes节点的性能,将容器部署到Kubernetes节点。例如,可以控制将具有高磁盘I/O的容器部署到具有SSD磁盘的Kubernetes节点上。

自我疗愈 (zì wǒ yù)

Kubernetes 默认提供容器进程监控功能,例如,如果 Kubernetes 节点宕机,可以检测到容器进程的宕机,并将容器恢复到另一个 Kubernetes 节点,实现自我恢复行为。通过这种自愈功能,可以提高容错性能。

资源管理

根据Kubernetes节点的CPU和内存资源,无需用户意识,自动调整容器的部署位置。此外,根据Kubernetes节点资源的消耗量,还可以通过Kubernetes集群的自动扩展功能自动增减Kubernetes节点。

滚动更新

通过重复执行以下步骤,可以实现在更新容器内的应用程序时无需停机更新:首先添加新容器,然后删除旧容器。

服务发现

Kubernetes 在自动扩展、调度、自愈等方面能够动态地运行容器。因此,很难知道每个容器在哪里存在。Kubernetes 可以了解容器的位置和地址,在动态变化的系统中实现容器之间的互相访问。

管理设定和机密信息

在Kubernetes中,可以集中管理环境变量,命令行参数,密码以及TLS证书等信息。可以通过ConfigMap来管理环境变量和命令行参数,而通过Secrets来管理密码和TLS证书等敏感信息。

③Kubernetes的基础知识

要了解Kubernetes,需要掌握基本知识。

基本常识

宣言

在Kubernetes中,使用YAML或JSON格式编写的容器部署和相关资源的声明性代码称为清单文件(Manifest)。通过使用代码来管理环境,Kubernetes可以实现基础设施即代码(IaC)的能力。

kubectl – 用于管理Kubernetes集群的命令行工具。

使用称为kubectl的CLI工具,向后面提到的Kubernetes Master发送命令。用户可以使用kubectl命令进行各种操作。您还可以使用kubectl命令指定并使用前面提到的清单文件。

Kubernetes 节点

Kubernetes 包含两个节点,即 Kubernetes Master 和 Kubernetes Node(后称为 Node)。Node 在类似于 Docker 主机的角色下,是容器实际运行的地方。

Kubernetes 主节点

Kubernetes主节点(以下简称Master)根据所述清单使用kubectl接收指令,并在其管理的Node上实现这些指令。例如,如果接收到的清单文件指示增加各个Node上的容器数量,Master将负责实现增加各个Node上的容器数量的任务。


本文参考了以下信息进行撰写:
《Kubernetes官方文档》
《Kubernetes完全指南第2版》

广告
将在 10 秒后关闭
bannerAds