打开/关闭菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

检测到您可能正在使用存疑的代理服务器访问寻星知识库。为了避免匿名用户使用代理服务器恶意破坏,我们已经限制了您在寻星的部分权限(例如编辑和创建账户)。

您可以关闭代理使用国内真实IP或联系寻星团队为您的IP添加白名单,从而使用寻星知识库的全部功能。如果您曾经正常注册过寻星知识库账户,则您在当前情况下登录将解除部分限制。

如果您已经使用正常的IP访问寻星知识库,但仍然出现此消息,请您尝试刷新缓存或联系寻星团队。

Kubernetes

✨寻星知识库——携手与您,寻觅群星。
Jexjws留言 | 贡献2024年8月11日 (日) 15:44的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
❕ 此内容由 AI 生成
此内容被标记为使用人工智能技术(AI)生成,请留意内容是否具有真实性或客观性。
如果您有能力贡献更优质的知识,您可以考虑协助更改此内容。

“可以把k8s理解成docker群聊版。“

Kubernetes (简称 K8s:取自单词“Kubernetes”首尾各去除一个字母,并且中间有 8 个字母)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它能够促进声明式配置和自动化,且具有高可用性和扩展性。

Kubernetes 意在提高开发者发布应用程序、以及操作团队部署、监控和维护应用程序的能力。

而 Kubernetes 的诞生,则是为了克服早期容器部署时存在的一些核心问题,如容器编排和管理。

它是由Google设计并捐赠给云原生计算基金会(CNCF)的项目,目前是CNCF最活跃的项目之一。

Kubernetes 不仅支持云端的部署,同样亦适用于本地环境,由此它成为了跨行业和业务规模的公司所广泛采用的解决方案。通过 Kubernetes,组织可以实现更敏捷的软件开发周期,更快速地响应市场变化,同时提高资源利用率,减少不必要的开支。

核心组件

Kubernetes 集群由多个工作节点和至少一个控制平面组成,这些构成了其核心组件。

控制平面

Kubernetes 的控制平面负责集群的全局决策,比如工作负载调度以及检测和响应集群事件(如节点失效)。控制平面包括了以下几个核心组件:

  • API服务器(kube-apiserver): 作为集群的接口,处理REST请求和更新对象的状态,它允许用户和内部集群服务之间的交互。
  • 调度器(kube-scheduler): 负责决定将新创建的Pods置于哪些节点上。
  • 控制器管理器(kube-controller-manager): 运行集群级别的控制循环,例如节点控制器、作业控制器、端点控制器等。
  • 云控制器管理器(cloud-controller-manager): 链接到云服务商的控制器,确保集群在云提供商平台上的资源得以正确管理。

这些组件持续监视集群状态,并作出必要的变更,以达到用户声明的期望状态。

工作节点

工作节点(Worker Nodes)是 Kubernetes 集群中的服务器,它们承载着运行应用程序的容器。每个工作节点包含了必要的服务来管理这些容器,例如:

  • kubelet: 在每个节点上运行的代理,确保容器运行在 Pods 中。
  • 容器运行时(container runtime):实际运行容器的软件,比如 Docker 、 containerd 、CRI-O。
  • kube-proxy: 管理节点内的网络通信,比如负载均衡和服务发现。

工作节点接受来自控制平面的指令,比如启动或停止容器,管理网络规则等任务。

这些组件协同工作,提供一个统一的视图,使得分布在各个节点上的容器化应用能够作为一个单一系统运行。

对象

Kubernetes 中的对象是持久化的实体,代表了集群的状态。对象可以描述什么容器在运行(或者在何时何地运行),或者它们可以使用的资源、可用策略等等。以下是一些 Kubernetes 中的主要对象:

  • Pods:Pod 是 Kubernetes 最基本的部署单位,它是一个或多个容器的组合,这些容器共享存储和网络资源,并且彼此之间以及与其他Pod之间有紧密的协作关系。
  • Services:Service 是一种抽象层,代表了一组提供相同功能的 Pod,可以通过服务来实现 Pods 之间的负载均衡和服务发现。
  • Deployments:Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力。您可以描述一个期望的状态,并且 Deployment 控制器可以逐步改变实际状态,以达到期望状态。这个过程称为声明式编排。

此外,Kubernetes 还有其他种类的对象,如 DaemonSets、StatefulSets、ReplicaSets 等,它们各自承载了不同的功能和用例。

Pods

Pod 是 Kubernetes 中的基本单元,每个 Pod 由一个或多个容器组成,共享存储、网络、以及运行配置。Pods 在 Kubernetes 中的设计初衷是支持协同定位的服务组合——多个需要共同工作的容器,可以被封装在一个 Pod 之中。

每个 Pod 都被设计为包含紧密关联的应用容器集合,它们运行在同一个环境中,并拥有一致的配置。Pods 共享 IP 地址和端口空间,并且可以通过 `localhost` 通信找到彼此。它们也可能会共享存储,即 Pod 中的容器可以访问相同的持久化存储卷。

由于每个 Pod 都有其独特的 IP 地址,因此允许你使用队列和分片等策略来应对横向扩展。Pod 在竖直上扩展十分容易,例如可以通过创建 ReplicaSets 来扩展。Pods 的这些特性使得 Kubernetes 可以满足各种各样的应用需求。

架构

Kubernetes 的架构被设计成分布式的、模块化的,由多个互相协调的组件组成。 主要组成部分包括:

  • 控制平面,负责全局决策,比如调度和检测及响应集群事件(如节点失效)。
  • 工作节点,运行应用程序实例。
  • etcd,用作 Kubernetes 的后备存储,保存了整个集群的状态。

这些组件协同工作,提供一个统一的视图,使得分布在各个节点上的容器化应用能够作为一个单一系统运行。

服务(Services)

在Kubernetes中,服务(Services)是一种抽象概念,它定义了一种访问和使用一组微服务的方式。服务使得外部访问一个运行在一组Pods上的应用成为可能,并且可以对这些Pods进行负载均衡。

服务的关键特性包括:

  • 服务发现:可以通过Kubernetes的DNS支持或环境变量来实现服务发现。
  • 负载均衡:服务可以对到来的流量进行负载均衡,它允许从单个服务端点访问运行在多个Pods中的应用。
  • 持久化端点:即使后端Pods被替换,服务也能保持一个持久的IP地址和端口。

Kubernetes支持多种服务类型,包括:

  • ClusterIP:为服务在集群内部创建一个内部的IP地址。
  • NodePort:为服务在每个节点的特定端口上创建一个端点,从而可以被外部访问。
  • LoadBalancer:通过云提供商的负载均衡器,为服务提供一个外部访问的入口。
  • ExternalName:通过返回一个名字,使服务可以作为外部服务的代理。

使用服务,开发者可以很容易地管理访问应用的策略,而不用担心Pods的生命周期和IP地址的变化。

kubectl

kubectl 是 Kubernetes 的一款遥控器,能拿它管理 K8s 集群。

通过 Docker 了解 kubectl

寻星知识库使用 Cookie 技术提升您的浏览体验,这需要在您的浏览器存储部分信息。禁用 Cookie 将导致部分功能无法正常使用。 寻星团队将严格遵守隐私政策,并尽可能保护您的信息安全。 继续浏览寻星知识库,视为您同意启用 Cookie 并生成、存储相关数据。