• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

什么是 Kubernetes

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 面临的挑战的全部内容了,希望对你有所帮助。

相关文章