• 文档
  • 控制台
  • 登录
  • 立即注册
    目前不支持用户自主注册,如需注册账号,请联系400-080-1100
多集群容器服务MCS用户指南
最近更新时间:

2 基本概念

多集群容器服务提供 Kubernetes 原生 API,支持使用 kubectl,且提供图形化控制台,让您能够拥有完整的端到端使用体验,使用容器服务前,建议您先了解相关的基本概念。 

集群(Cluster)

集群指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。您可以理解为集群是“同一个子网中一个或多个弹性云服务器(又称节点)”通过相关技术组合而成的计算机群体,为容器运行提供了计算资源池。 

节点(Node)

每一个节点对应一台服务器(可以是虚拟机实例或者物理服务器),容器应用运行在节点上。节点上运行着 Agent 代理程序(kubelet),用于管理节点上运行的容器实例。集群中的节点数量可以伸缩。

节点池(NodePool)

节点池是集群中具有相同配置的一组节点,一个节点池包含一个节点或多个节点。

虚拟私有云(VPC)

虚拟私有云是通过逻辑方式进行网络隔离,提供安全、隔离的网络环境。您可以在 VPC 中定义与传统网络无差别的虚拟网络,同时提供弹性 IP、安全组等高级网络服务。 

安全组

安全组是一个逻辑上的分组,为同一个 VPC 内具有相同安全保护需求并相互信任的弹性云服务器提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当弹性云服务器加入该安全组后,即受到这些访问规则的保护。 

实例(Pod)

实例是 Kubernetes 部署应用或服务的最小的基本单位。一个 Pod 封装多个应用容器(也可以只有一个容器),配合存储资源、独立的网络 IP 等,构建所需的应用运行环境。 

容器(Container)

一个通过 Docker 或 Containerd 镜像创建的运行实例,一个节点可运行多个容器。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。 

工作负载

工作负载是在 Kubernetes 上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件,您都可以在 Kubernetes 上的一组 Pod 中运行它。在 Kubernetes 中,工作负载是对一组Pod 的抽象模型,用于描述业务的运行载体,包括 Deployment、Statefulset、Daemonset、Job、CronJob 等多种类型。

· 无状态工作负载:即 Kubernetes 中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、wordpress 等。

· 有状态工作负载:即 Kubernetes 中的“StatefulSet”,有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如 ETCD、数据库服务等。

· 守护进程集:即 Kubernetes 中的“DaemonSet”,守护进程集,确保全部或某些节点都运行一个 Pod 实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如 ceph、fluentd、Prometheus Node Exporter 等。

· 普通任务:即 Kubernetes 中的“Job”,普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。

· 定时任务:即 Kubernetes 中的“CronJob”,定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。 

镜像(Image)

Docker 镜像是一个模板,是容器应用打包的标准格式,用于创建 Docker 容器。或者说,Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。在部署容器化应用时可以指定镜像,镜像可以来自于 DockerHub、容器镜像服务或者用户的私有 Registry。例如一个 Docker 镜像可以包含一个完整的 Ubuntu操作系统环境,里面仅安装了用户需要的应用程序及其依赖文件。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 

命名空间(Namespace)

命名空间是对一组资源和对象的抽象整合。在同一个集群内可创建不同的命名空间,不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务,也能够互不干扰。例如:

· 可以将开发环境、测试环境的业务分别放在不同的命名空间。

· 常见的 pods,services,replication controllers 和 deployments 等都是属于某一个namespace 的(默认是 default),而 node,persistentVolumes 等则不属于任何namespace。 

服务(Service)

Service 是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。

使用 Kubernetes,您无需修改应用程序即可使用不熟悉的服务发现机制。 Kubernetes 为 Pods 提供自己的 IP 地址和一组 Pod 的单个 DNS 名称,并且可以在它们之间进行负载平衡。

Kubernetes 允许指定一个需要的类型的 Service,类型 的取值以及行为如下:

· ClusterIP:集群内访问。通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的 ServiceType。

· NodePort:节点访问。通过每个 Node 上的 IP 和静态端口(NodePort)暴露服务。

NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求<NodeIP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。

· LoadBalancer:负载均衡。使用云提供商的负载均衡器,可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务。

· DNAT:DNAT 网关。可以为集群节点提供网络地址转换服务,使多个节点可以共享使用弹性 IP。与弹性 IP 方式相比增强了可靠性,弹性 IP 无需与单个节点绑定,任何节点状态的异常不影响其访问。 

网络策略(NetworkPolicy)

NetworkPolicy 提供了基于策略的网络控制,用于隔离应用并减少攻击面。它使用标签选择器模拟传统的分段网络,并通过策略控制它们之间的流量以及来自外部的流量。 

配置项(ConfigMap)

ConfigMap 用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。ConfigMap 跟 secret 很类似,但它可以更方便地处理不包含敏感信息的字符串。 

密钥(Secret)

Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec 中。Secret 可以以 Volume 或者环境变量的方式使用。 

标签(Label)

标签其实就一对 key/value,被关联到对象上,比如 Pod。标签的使用我们倾向于能够标示对象的特殊特点,并且对用户而言是有意义的,但是标签对内核系统是没有直接意义的。 

选择器(LabelSelector)

LabelSelector 是 Kubernetes 核心的分组机制,通过 LabelSelector 客户端/用户能够识别一组有共同特征或属性的资源对象。 

注解(Annotation)

注解与标签类似,也使用 key/value 键值对的形式进行定义。

标签具有严格的命名规则,它定义的是 Kubernetes 对象的元数据(Metadata),并且用于 LabelSelector。

注解则是用户任意定义的“附加”信息,以便于外部工具进行查找。 

存储卷(PersistentVolume)

PersistentVolume(PV)是集群之中的一块网络存储。跟 Node 一样,也是集群的资源。 

存储声明(PersistentVolumeClaim)

PV 是存储资源,而 PersistentVolumeClaim (PVC) 是对 PV 的请求。PVC 跟 Pod 类似:Pod 消费 Node 资源,而 PVC 消费 PV 资源;Pod 能够请求 CPU 和内存资源,而 PVC 请求特定大小和访问模式的数据卷。


意见反馈

文档内容是否对您有帮助?

如您有其他疑问,您也可以通过在线客服来与我们联系探讨 在线客服

联系我们
回到顶部