基本概念 本节主要描述在使用云容器引擎前,需理解该产品所涉及的概念,以便于您更好地理解容器产品。 关键词 说明 集群 集群指容器运行所需要的云资源组合,关联了若干服务器节点、负载均衡、专有网络等云资源。 专有版集群:需要创建1个Master(非高可用),或者3/5个Master(高可用)节点,以及若干Worker节点,可对集群基础设施进行更细粒度的控制,需要自行规划、维护、升级服务器集群。 托管版集群:只需创建Worker节点,Master节点由CCSE创建并托管,具备操作简单、低成本无需运维等特点。 节点 一台服务器(可以是虚拟机实例或者物理服务器)已经安装了Docker Engine,可以用于部署和管理容器。容器的Agent程序会被安装到节点上并注册到一个集群上。 专有网络VPC 专有网络VPC是您自己独有的云上私有网络。您可以完全掌控自己的专有网络,例如选择IP地址范围、配置路由表和网关等,您可以在自己定义的专有网络中使用天翼云资源如云服务器、云数据库和负载均衡等。 安全组 安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。安全组是一个逻辑上的分组,由同一地域内具有相同安全保护需求并相互信任的实例组成。 应用目录 应用目录功能集成了Helm,提供了Helm的相关功能,并进行了相关功能扩展,例如提供图形化界面。 编排模板 编排模板是一种保存Kubernetes YAML格式编排文件的方式。 Kubernetes Kubernetes是一个开源平台,具有可移植性和可扩展性,用于管理容器化的工作负载和服务,简化了声明式配置和自动化。 容器(Container) 打包应用及其运行依赖环境的技术,一个节点可运行多个容器。 镜像(Image) 容器镜像是容器应用打包的标准格式,封装了应用程序及其所有软件依赖的二进制数据。 镜像仓库(Image Registry) 容器镜像仓库是一种存储库,用于存储Kubernetes和基于容器应用开发的容器镜像。 管理节点(Master Node) 管理节点是Kubernetes集群的管理者,运行着的服务包括kubeapiserver、kubescheduler、kubecontrollermanager、etcd组件,和容器网络相关的组件。 工作节点(Worker Node) 工作节点是Kubernetes集群中承担工作负载的节点,可以是虚拟机也可以是物理机。工作节点承担实际的Pod调度以及与管理节点的通信等。一个工作节点上的服务包括Docker运行时环境、kubelet、KubeProxy以及其它一些可选的组件。 命名空间(Namespace) 命名空间为Kubernetes集群提供虚拟的隔离作用。Kubernetes集群初始有3个命名空间,分别是默认命名空间default、系统命名空间kubesystem和kubepublic,除此以外,管理员可以创建新的命名空间以满足需求。 容器组(Pod) Pod是Kubernetes部署应用或服务的最小的基本单位。一个Pod封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。 副本控制器(ReplicationController,RC) RC确保任何时候Kubernetes集群中有指定数量的Pod副本在运行。通过监控运行中的Pod来保证集群中运行指定数目的Pod副本。指定的数目可以是多个也可以是1个;少于指定数目,RC就会启动运行新的Pod副本;多于指定数目,RC就会终止多余的Pod副本。 副本集(ReplicaSet,RS) ReplicaSet(RS)是RC的升级版本,唯一区别是对选择器的支持,RS能支持更多种类的匹配模式。副本集对象一般不单独使用,而是作为Deployment的理想状态参数使用。 工作负载(Workload) 工作负载是在Kubernetes上运行的应用程序。 标签(Label) Labels的实质是附着在资源对象上的一系列Key/Value键值对,用于指定对用户有意义的对象的属性,标签对内核系统是没有直接意义的。标签可以在创建一个对象的时候直接赋予,也可以在后期随时修改,每一个对象可以拥有多个标签,但key值必须唯一。 服务(Service) Service是Kubernetes的基本操作单元,是真实应用服务的抽象,每一个服务后面都有很多对应的容器来提供支持,通过KubeProxy的ports和服务selector决定服务请求传递给后端的容器,对外表现为一个单一访问接口。 路由(Ingress) Ingress是授权入站连接到达集群服务的规则集合。您可以通过Ingress配置提供外部可访问的URL、负载均衡、SSL、基于名称的虚拟主机等。通过POST Ingress资源到API Server的方式来请求Ingress。Ingress Controller负责实现Ingress,通常使用负载均衡器,它还可以配置边界路由和其他前端,这有助于以高可用的方式处理流量。 配置项(ConfigMap) 配置项可用于存储细粒度信息如单个属性,或粗粒度信息如整个配置文件或JSON对象。您可以使用配置项保存不需要加密的配置信息和配置文件。 保密字典(Secret) 保密字典用于存储在Kubernetes集群中使用一些敏感的配置,例如密码、证书等信息。 卷(Volume) 和Docker的存储卷有些类似,Docker的存储卷作用范围为一个容器,而Kubernetes的存储卷的生命周期和作用范围是一个Pod。每个Pod中声明的存储卷由Pod中的所有容器共享。 存储卷(Persistent Volume,PV) PV是集群内的存储资源,类似节点是集群资源一样。PV独立于Pod的生命周期,可根据不同的StorageClass类型创建不同类型的PV。 存储卷声明(Persistent VolumeClaim,PVC) PVC是资源的使用者。类似Pod消耗节点资源一样,而PVC消耗PV资源。 存储类(StorageClass) 存储类可以实现动态供应存储卷。通过动态存储卷,Kubernetes将能够按照用户的需要,自动创建其所需的存储。 弹性伸缩(Autoscaling) 弹性伸缩是根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。典型的场景包含在线业务弹性、大规模计算训练、深度学习GPU或共享GPU的训练与推理、定时周期性负载变化等。 可观测性(Observability) Kubernetes可观测性体系包含监控和日志两部分,监控可以帮助开发者查看系统的运行状态,而日志可以协助问题的排查和诊断。 Helm Helm是Kubernetes包管理平台。Helm将一个应用的相关资源组织成为Charts,然后通过Charts管理程序包。 节点亲和性(nodeAffinity) 节点亲和性指通过Worker节点的Label标签控制Pod部署在特定的节点上。 污点(Taints) 污点和节点亲和性相反,它使节点能够排斥一类特定的Pod。 容忍(Tolerations) 应用于Pod上,允许(但并不要求)Pod调度到带有与之匹配的污点的节点上。 应用亲和性(podAffinity) 应用亲和性决定应用Pod可以和特定Pod部署在同一拓扑域。例如,对于相互通信的服务,可通过应用亲和性调度,将其部署到同一拓扑域(例如同一个主机)中,以减少它们之间的网络延迟。 应用反亲和性(podAntiAffinity) 应用反亲和性决定应用Pod不与特性Pod部署在同一拓扑域。例如,将一个服务的Pod分散部署到不同的拓扑域(例如不同主机)中,以提高服务本身的稳定性。 服务网格(Istio) Istio是一个提供连接、保护、控制以及观测服务的开放平台,兼容社区Istio开源服务网格,用于简化服务的治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格可观测性能力。