Kubernetes 通常被称为“面向云的操作系统”。它是一个开源平台,专用于管理容器化应用和服务集群,它的关键组件包括集群、节点和控制平面。其中,集群包含节点,节点托管 pod(pod 包含所部署应用的要素),且每个节点包含至少一个工作机。控制平面则负责管理集群中的节点和 pod,通常跨多个计算机,以实现高可用性。
一、什么是 Kubernetes
Kubernetes 通常被称为“面向云的操作系统”。它是一个开源平台,专用于管理容器化应用和服务集群,早在 2014 年由 Google 工程师 Joe Beda、Brendan Burns 和 Craig McLuckie 开发,随后开源并迅速成为了一个欣欣向荣的云原生生态系统。如今,Kubernetes(在古希腊语中意为“舵手”或“飞行员”)由隶属于 Linux 基金会的 云原生计算基金会 (CNCF) 托管。
Kubernetes 不仅是为数不多的从 CNCF 毕业的项目,还是历史上增长非常快的开源项目之一。目前,Kubernetes 拥有超过 2300 位贡献者,已经得到了各种不同规模企业的广泛采用,包括 50% 的财富 100 强企业。
二、Kubernetes 的关键术语
1、集群
集群由一系列称为节点的机器构成,可用于运行由 Kubernetes 管理的容器化应用。
2、节点
节点是一个虚拟机或物理机。一个集群由一个主节点和多个工作节点组成。
3、云容器
云容器包含软件及其依赖关系的映像。
4、Pod
在 Kubernetes 集群上运行的单一容器或一组容器。
5、部署
用于管理由 pod 表示的复制应用的对象。Pod 部署在集群的节点上。
6、副本集
确保同时运行指定数量的 pod 副本。
7、服务
描述如何访问由一组 Pod 表示的应用。描述如何访问由一组 Pod 表示的应用。服务通常描述端口和负载均衡器,并且可用于控制对集群的内部和外部访问。
三、什么是 Kubernetes 容器
随着开发人员越来越多地为各种具有不同的云、测试环境、便携式计算机、设备、操作系统和平台的计算环境部署软件,确保软件可靠运行已成为一项至关重要的任务。而这正是容器的用武之地:将应用与应用的整个运行时环境捆绑在一起。在这一意义上,容器就是一种虚拟化形式,它们可提供一个包含适当的库、依赖关系和操作系统的“气泡”,在“气泡”中运行应用。区别在于,容器仅包含应用所需的资源,比虚拟机小。
四、Kubernetes 与 Docker 对比
Linux 容器早在 2008 年就已存在,但直到 2013 年 Docker 容器推出,才开始引起大范围的关注。而随着越来越多的人开始部署容器化应用(包含运行所需的一切要素),一个新的问题凸显了出来,那就是如何管理数千个容器。对此,Kubernetes 可以自动化编排容器生命周期,将容器分布在整个托管基础设施中;可以按需扩展或收缩资源;可以供应、调度、删除容器,监视容器运行状况。
五、Kubernetes 包含的组件
关键组件包括集群、节点和控制平面。其中,集群包含节点,节点托管 pod(pod 包含所部署应用的要素),且每个节点包含至少一个工作机。控制平面则负责管理集群中的节点和 pod,通常跨多个计算机,以实现高可用性。
控制平面包含以下要素:
- Kubernetes API 服务器:提供用于控制 Kubernetes 的编程接口 (API)
- etcd:面向集群数据的键值存储
- Kubernetes 调度器:将新 pod 匹配至可用节点
- Kubernetes-controller-manager:运行多个进程,从而管理节点故障、控制复制、通过端点加入服务和 pod,以及控制帐户和访问令牌
- Cloud-controller-manager:围绕特定基础设施路由和负载平衡等方面,管理来自特定云提供商的 API
节点包含以下要素:
- kubelet:一个负责检查容器是否在 pod 中运行的代理
- Kubernetes 网络代理:维护网络规则
- Docker、容器或其他类型的容器运行时
六、Kubernetes 的优势
使用容器,您可以确保自己的应用与应用运行所需的一切要素捆绑在一起。而在使用容器(通常包含微服务)时,您可以通过 Kubernetes 来自动管理和分发容器。
借助 Kubernetes,企业可以:
- 自动扩展-按需进行部署扩展或收缩
- 发现服务-通过 DNS 或 IP 地址查找容器化服务
- 平衡负载-通过分配网络流量来稳定部署
- 管理存储-选择本地存储或云存储
- 控制版本-选择待运行的容器类型,以及待通过新映像或容器资源替换哪些容器
- 确保安全-安全更新特定容器映像的相关密码、OAuth 令牌和 SSH 密钥
七、Kubernetes 面临的挑战
尽管 Kubernetes 具有高度的可组合性,支持任意类型的应用,但有时它却很难理解和使用。正如许多 CNCF 成员所说,对于特定负载,Kubernetes 并不始终是优异方案。也正是因为这一原因,在 Kubernetes 生态系统中,很多企业为解决特定负载问题创建了许多云原生工具。
由于 Kubernetes 部署的是容器而不是源代码,也不会构建应用,您需要使用更多其他工具来处理日志、中间件、监视、配置、CI/CD 和许多其他生产活动。换言之,Kubernetes 是可扩展的,事实也证明它适用于从喷气式飞机到机器学习的广泛使用场景。事实上,包括 Google、Amazon Web Services 等在内的云提供商已开始使用 Kubernetes 的可扩展性来构建托管式 Kubernetes 服务,以此来降低复杂性,提高开发人员效率。
以上就是关于什么是 Kubernetes、Kubernetes 的关键术语 、什么是 Kubernetes 容器、Kubernetes 与 Docker 对比、Kubernetes 包含的组件、Kubernetes 的优势、Kubernetes 面临的挑战的全部内容了,希望对你有所帮助。