一.腾讯云(TKE)
是腾讯云提供的基于 Kubernetes云原生服务平台。
1.集群
集群是指容器运行所需云资源的集合
集群的两种管理模式
- Master托管模式——所有租户的托管集群的管理面全部作为服务由一个 Kubernetes集群维护,稳定性更高、扩展更简单。集群的 Master 和 Etcd 由腾讯云进行管理和维护。适合一般业务或集群规模变化比较频繁的场景
- 独立集群模式——集群的管理面运行在集群本身的 laaS资源上,集群隔离性和独立性更好。集群的 Master 和 Etcd 将会部署在您购置的 CVM 上。适合对集群定制化更高的场景。
CVM是Cloud Virtual Machine,一种云服务器,管理方式比物理机更简单高效,一个云服务器实例等同于一台虚拟机,包含CPU、内存、操作系统、网络、磁盘等最基础的计算组件。
TKE中的node节点指的是运行容器的节点,通常是指虚拟机或物理机。这些节点上运行着Kubernetes的关键组件,如kubelet、kube-proxy和容器运行时。
node节点上的运行过程大致如下: 首先,需要在node节点上安装kubelet和kube-proxy等Kubernetes组件。向Kubernetes的apiserver注册,提供自身的信息,如可用资源、操作系统等。Master节点上的kubelet配置管理器会根据node节点的信息为该节点生成一个配置,包括要运行的Pod(容器组)、容器网络设置等。然后下载镜像、创建容器、 运行容器、 更新状态。整个过程中,kubelet作为node节点的核心组件,负责与Master节点通信,管理容器的生命周期,监控容器状态等。
创建集群过程
步骤一:填写集群信息
在操作系统的镜像选择:
TencentOS Server 作为腾讯云研发的 Linux 操作系统,适用于绝大多数标准机型,包括标准型、计算型、内存性、高 IO 型等。同时支持裸金属云服务器及高性能计算集群等。
步骤二:选择机型
在“选择机型”步骤中,确认计费模式、选择可用区及对应的子网、确认节点的机型。
- 托管集群提供了一种简化的 Kubernetes 部署方式,由腾讯云托管和维护,用户可以专注于应用程序的开发而无需担心底层基础设施。在TKE中的控制台进行创建部署和使用。
- 独立集群需要用户自行管理,更适合对 Kubernetes 有更高级别的控制和自定义需求的用户,但需要更多的运维工作。创建了以后,使用Kubectl部署和使用。
步骤三:选云服务器配置
- qGPU共享:开启后,集群所有增量 GPU 节点默认开启 GPU 共享能力。您可以通过 Label 控制是否开启隔离能力。请注意,需要安装组件方可正常使用GPU共享调度能力,详情请参见 如何使用 GPU 共享。
- 容器目录:勾选即可设置容器和镜像存储目录,建议存储到数据盘。例如 /var/lib/docker。
- 安全组:安全组具有防火墙的功能,用于设置云服务器的网络访问控制。支持以下设置:
新建并绑定默认安全组,可预览默认安全组规则;
添加安全组,可根据业务需要自定义配置安全组规则。更多信息请参见 容器服务安全组设置。
- 登录方式:提供三种登录方式:
立即关联密钥:密钥对是通过算法生成的一对参数,是一种比常规密码更安全的登录云服务器的方式。详情请参见 SSH 密钥;
自动生成密码:自动生成的密码将通过 站内信 发送给您。 ;
设置密码:请根据提示设置对应密码;
- 安全加固:默认免费开通 DDoS 防护、WAF 和云镜主机防护,详情请参见 T-Sec 主机安全官网页。
- 云监控:默认免费开通云产品监控、分析和实施告警,安装组件获取主机监控指标,详情请参见 腾讯云可观测平台 TCOP。
步骤四:组件确认
在“信息确认”页面,确认集群的已选配置信息和费用。当您阅读并同意容器服务服务等级协议后,单击完成。
步骤五:信息确认
付费完成后,即可创建集群
集群扩缩容
TKE 支持以下三种扩缩容方法,您可结合实际情况进行选择:
- 手动添加/移出节点。
- 通过弹性伸缩自动添加/移出节点:弹性伸缩依赖社区组件 Cluster Autoscaler(CA),可以动态地调整集群的节点数量来满足业务的资源需求。更多弹性伸缩原理请参见 节点池概述。
- 通过超级节点完成应用层的扩缩容,无需通过节点进行扩缩容:超级节点是一种调度能力,支持将标准 Kubernetes 集群中的 Pod 调度到集群服务器节点之外的资源中,实现资源不足时的动态资源补给。
2.节点
节点是容器集群组成的基本元素。节点取决于业务,既可以是虚拟机,也可以是物理机。每个节点都包含运行 Pod 所需要的基本组件,包括 Kubelet、Kube-proxy 等。
创建节点
在左侧导航栏中,单击 集群,进入 “集群管理” 页面。
- 单击需要创建云服务器的集群 ID,进入该集群详情页。
- 选择页面左侧节点管理 > 节点,进入节点列表页面,单击新建节点。
- 在 “新建节点” 页面,根据实际需求配置相关参数。
创建节点池
当业务需要使用大规模集群时,推荐您使用节点池进行节点管理,以提高大规模集群易用性。借助节点池基本功能,您可以方便快捷地创建、管理和销毁节点,以及实现节点的动态扩缩容:
创建步骤:
- 登录 容器服务控制台,单击左侧导航栏中的集群。
- 在“集群管理”列表页面,选择目标集群 ID,进入该集群详情页。
- 选择左侧菜单栏中的节点管理 > 节点池,进入“节点池列表”页面。如下图所示:
原生节点:
cloud.tencent.com
原生节点是由腾讯云 TKE 容器服务团队面向 Kubernetes 环境推出的全新节点类型,依托腾讯云千万核容器运维的技术沉淀,为用户提供原生化、高稳定、快响应的 K8s 节点管理能力。
原生节点包含普通节点的全部能力,且做了全方位增强,支持Pod原地升降配,节点故障自愈等。
Pod原地升降配:根据 Kubernetes 的设计规范,Pod 运行过程中若需要临时修改容器参数,只能更新 PodSpec 后重新提交,这种方式会触发 Pod 删除重建,很难满足业务侧应对流量突发时无损变配诉求。原生节点针对 Pod 的 CPU、内存提供原地升降配能力,通过对 API Server 和 Kubelet 进行升级改造,支持在不重启 Pod 的情况下修改 CPU、内存的 request/limit 值。本文主要介绍 Pod 资源原地更新功能的适用场景、工作原理和使用方式。
适用场景:
- 应对流量突发,保障业务稳定性
场景描述:动态修改 Pod 资源参数功能适用于临时性的调整,例如当 Pod 内存使用率逐渐升高,为避免触发 OOM(Out Of Memory)Killer,在不重启 Pod 的前提下提高内存的 Limit。 推荐动作:提升 CPU/ 内存的 limit 值。
- 满足业务降本诉求,提高 CPU 利用率
场景描述:为保障线上应用的稳定性,管理员通常会预留相当数量的资源 Buffer 来应对上下游链路的负载波动,容器的 Request 配置会远高于其实际的资源利用率,导致集群资源利用率过低,造成大量资源浪费。 推荐动作:降低 CPU/ 内存的 request 值。
节点故障自愈: TKE 管理的 Kubernetes 集群中,当工作节点(Node)发生故障或不健康状态时,TKE 提供的自动化机制来处理和恢复这些节点,以确保集群的稳定性和可用性。包括节点的健康检测、pod自动迁移。
3.存储
集群的存储管理是保存业务数据的重要组件。分为文件存储和云硬盘存储。支持通过创建 PV/PVC,并为工作负载挂载动(静)态数据卷的方式使用存储。
文件存储(CFS)
CFS 提供了标准的 NFS 及 CIFS/SMB 文件系统访问协议,为多个 CVM 实例或其他计算服务提供共享的数据源,支持弹性容量和性能的扩展,是一种高可用、高可靠的分布式文件系统,适合于大数据分析、媒体处理和内容管理等场景。
通过 StorageClass存储类 配合 PersistentVolumeClaim (PVC)动态创建需要的存储资源。
创建 StorageClass
- 登录容器服务控制台,选择左侧导航栏中的集群。
- 在“集群管理”页面单击目标集群 ID,进入集群详情页。
- 选择左侧菜单栏中的存储 > StorageClass,进入 “StorageClass” 页面。
- 单击新建,在“新建 StorageClass” 页面,配置 StorageClass 参数。如下图所示:
其中:
共享实例指的是多个 PVC 可以共享同一个存储实例(PV)。这意味着多个 PVC 可以将其数据存储在同一个 PV 上。这通常用于场景,其中多个应用或服务需要访问相同的数据,而不需要每个应用都拥有独立的存储卷。共享实例可以帮助节省存储资源,但需要谨慎使用,因为多个应用访问同一卷可能会引起访问冲突或性能问题。
权限组通常用于定义存储卷(PV,Persistent Volume)的访问控制策略。权限组决定了哪些 Pod 或命名空间具有对 PV 的访问权限。在创建 StorageClass 时,通常可以指定权限组,然后将 Pod 或命名空间添加到相应的权限组中以授予它们访问权限,为每个应用程序或服务定义特定的存储访问策略。
创建 PVC
使用指定 StorageClass创建PVC
- 在“集群管理”页,选择需创建 PVC 的集群 ID。
- 在集群详情页,选择左侧菜单栏中的存储 > PersistentVolumeClaim,进入 “PersistentVolumeClaim” 信息页面。
- 选择新建进入“新建 PersistentVolumeClaim” 页面,配置 PVC 关键参数。如下图所示:
使用 PVC 数据卷
- 在“集群管理”页面,选择目标集群 ID,进入待部署 Workload 的集群的 “Deployment” 页面。
- 选择新建,进入“新建 Workload” 页面创建,并参考以下信息进行数据卷挂载。如下图所示:
其中cfs-vol指的是CFS Volume。
云硬盘存储(CBS)
CBS 提供数据块级别的持久性存储,通常用作需要频繁更新、细粒度更新的数据(如文件系统、数据库等)的主存储设备,具有高可用、高可靠和高性能的特点。
内容与文件存储类似,只是在PVC创建的Provisioner的选项上选择不同。
对象存储(COS)
COS 是腾讯云提供的一种存储海量文件的分布式存储服务,通过 COS 可以进行多格式文件的上传、下载和管理。
内容与文件存储类似,只是在PVC创建的Provisioner的选项上选择不同。
4.service
Service 资源就是用来管理集群中四层网络的服务访问。
腾讯云容器服务 TKE 提供的以下四种服务访问方式:
访问方式 | Service 类型 | 说明 |
公网 | LoadBalancer | 使用 Service 的 Loadbalance 模式,公网 IP 可直接访问到后端的 Pod,适用于 Web 前台类的服务。创建完成后的服务在集群外可通过负载均衡域名或 IP + 服务端口访问服务,集群内可通过服务名 + 服务端口访问服务。 |
VPC 内网 | LoadBalancer | 使用 Service 的 Loadbalance 模式,可通过内网 IP 直接访问到后端的 Pod。创建完成后的服务在集群外可通过负载均衡域名或 IP + 服务端口访问服务,集群内可通过服务名 + 服务端口访问服务。 |
主机端口访问 | NodePort | 提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node。创建完成后的服务可以通过云服务器 IP + 主机端口访问服务。 |
仅集群内访问 | ClusterIP | 使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离。创建完成后的服务可以通过服务名 + 服务端口访问服务。 |
如果在 TKE 中配置了 LoadBalancer Service,并且希望通过 VPC 内部网络进行访问,那么 VIP (VIP 是 LoadBalancer Service 在 VPC 内部的虚拟 IP 地址,用于内部服务发现和通信)是内部网络中的地址。如果希望通过公网访问服务,那么您需要使用 ExternalIP 或者配置相关的 Ingress Controller 来将服务暴露到外部网络。
创建 Service
- 登录 容器服务控制台,选择左侧导航栏中的集群。
- 在集群管理页面,单击需要创建 Service 的集群 ID,进入集群基本信息页。
- 选择服务与路由 > Service,在 Service 页面单击新建。如下图所示:
5.镜像
公共镜像
公共镜像是由腾讯云官方提供的镜像,包含基础操作系统和腾讯云提供的初始化组件,所有用户均可使用。
自定义镜像
由用户通过镜像制作功能制作,或通过镜像导入功能导入的镜像。仅创建者与共享者可以使用。自定义镜像属于非标环境,腾讯云不提供官方支持以及持续维护。对一个已经部署好应用的云服务器实例创建镜像,以此快速创建更多包含相同配置的实例。
创建自定义镜像:
市场镜像
特定使用场景 提供的镜像,例如 qGPU 共享场景(Tencent Kubernetes Engine qGPU 服务)。所有用户均可使用,除操作系统外还集成了某些特定应用程序。
6.日志
日志采集
TKE (Tencent Kubernetes Engine)用于采集日志信息的 Agent,采用 Loglistener,在集群内以 DaemonSet 的方式运行。
日志源支持所有容器、指定工作负载、指定 Pod Labels 三种类型。
查看日志
登录 容器实例控制台->在容器实例列表页中,单击需要查看事件的实例右侧的日志。
7.网络
容器网络与集群网络
集群网络与容器网络是集群的基本属性,通过设置集群网络和容器网络可以规划集群的网络划分。
集群网络:为集群内主机分配在节点网络地址范围内的 IP 地址,可以选择私有网络 VPC 中的子网用于集群的节点网络。
容器网络:为集群内容器分配在容器网络地址范围内的 IP 地址,包含 GlobalRouter 模式、VPC-CNI 模式、Cilium-Overlay。
- GlobalRouter 模式:可以自定义三大私有网段作为容器网络,根据选择的集群内服务数量的上限,自动分配适当大小的 CIDR 段用于 Kubernetes service。也可以根据您选择的每个节点的 Pod 数量上限,自动为集群内每台云服务器分配一个适当大小的网段用于该主机分配 Pod 的 IP 地址。
GlobalRouter 用于实现多个地域之间的虚拟私有云(VPC)互联。这种模式适用于需要在全球范围内建立高速、稳定连接的场景,如多地域备份、容灾、跨地域数据传输等。
- VPC-CNI 模式:选择与集群同 VPC 的子网用于容器分配 IP。
通常与容器编排平台(如Kubernetes)一起使用,是一种网络插件选项。VPC-CNI 允许您将 Kubernetes 集群中的容器连接到您的腾讯云虚拟私有云(VPC)中,使容器可以与 VPC 内的资源进行通信。这提供了高度的网络隔离和安全性,同时也能够利用 VPC 提供的网络特性。
- Cilium-Overlay 模式:可以自定义三大私有网段作为容器网络,根据您选择的集群内服务数量的上限,自动分配适当大小的 CIDR 段用于 Kubernetes service。也可以根据您选择的每个节点的 Pod 数量上限,自动为集群内每台服务器分配一个适当大小的网段用于该主机分配 Pod 的 IP 地址。
Cilium-Overlay 适用于微服务架构和容器化应用。
应用场景:需要更多的全球范围互联,可以考虑 GlobalRouter。如果在容器编排平台上运行容器,需要与 VPC 集成,可以考虑 VPC-CNI 模式或其他容器网络解决方案,如 Cilium-Overlay,根据的具体需求来选择。
容器 CIDR:集群内 Service、Pod 等资源所在网段。
单节点 Pod 数量上限:决定分配给每个 Node 的 CIDR 的大小。
集群内 Service 数量上限:决定分配给 Service 的 CIDR 大小。
节点:集群中 Worker 节点。
从使用场景 、优势角度出发,进行容器服务 TKE 所提供的 GlobalRouter、VPC-CNI、Cilium-Overlay 三种网络模式对比,请参考以下内容选择合适的网络模式:
角度 | GlobalRouter | VPC-CNI | Cilium-Overlay |
使用场景 | 普通容器业务场景。离线计算相关业务。 | 对网络时延有较高要求的场景。传统架构迁移到容器平台,依赖容器有固定 IP 的场景。 | 仅支持分布式云中第三方节点场景。不支持只存在云上节点场景。 |
优势 | 容器路由直接经过 VPC,容器与节点分布在同一网络平面。容器网段分配灵活,容器 IP 段不占用 VPC 的其他网段,可用 IP 资源丰富。 | ENI 的容器网络属于一个 VPC 子网,可纳入 VPC 产品的管理范围。支持固定 IP、负载均衡(LB)直通 Pod 等用户场景。网络性能优于 GlobalRouter 模式。 | 云上节点和第三方节点共用指定的容器网段。容器网段分配灵活,容器 IP 段不占用 VPC 的其他网段,可用 IP 资源丰富。 |
具备额外的能力 | 标准 Kubernetes 功能。 | 容器服务支持固定 Pod IP。容器网络在 VPC 控制台管控。LB 直接转发到 Pod,Pod 可以获取来源 IP。 | 标准 Kubernetes 功能。 |
8.监控
监控与告警是实时监控云服务器的管理工具。监控与告警功能可以展示最全、最详细的监控数据,实时对云服务器提取关键指标,以监控图表形式展示。方便全面地了解云服务器的资源使用率、性能和运行状况。同时支持设置自定义告警阈值,并根据自定义的规则发送通知。用于日常管理、及时处理异常、及时扩容等场景。
查看集群指标
在需要查看监控数据的集群行中,可查看该集群监控信息页面。如下图所示:
指标说明:
指标 | 单位 | 说明 |
Pod 数量 | 个 | 集群中 Pod 个数 |
Node 数量 | 个 | 集群中 Node 个数 |
CPU 总配置 | 核 | 集群的 CPU 总配置量 |
CPU 使用量 | 核 | 集群的 CPU 使用量 |
CPU 利用率 | % | 集群的 CPU 利用率 |
CPU 使用量(弹性容器) | 核 | 弹性容器的 CPU 使用量(若使用节点池的虚拟节点) |
块设备读取大小 | Mbytes | 集群硬盘的使用总量 |
块设备读取次数 | 次 | 集群硬盘读取总次数 |
块设备写入大小 | Mbytes | 集群硬盘写入数据量 |
块设备写入次数 | 次 | 集群硬盘写入总次数 |
内存总和 | Gbytes | 集群内存总量 |
内存使用量 | Mbytes | 集群内存使用量总和 |
内存利用率 | % | 集群内存利用率 |
内存使用量(弹性容器) | Mbytes | 弹性容器的内存使用量(若使用节点池的虚拟节点) |
内存使用量(弹性容器,不含 Cache) | Mbytes | 弹性容器的内存(不含 Cache)使用量(若使用节点池虚拟节点) |
网络入流量 | Mbytes | 集群网络入流量 |
网络带宽 | Mbps | 集群网络带宽 |
网络入包量 | 个/s | 集群网络入包量 |
网络出流量 | Mbytes | 集群网络出流量 |
网络出包量 | 个/s | 集群网络出包量 |
GPU 内存总量 | Gbytes | 集群 GPU 内存总量 |
GPU 内存使用量 | Mbytes | 集群 GPU 内存总使用量 |
GPU 总量 | 卡 | 集群 GPU 总量 |
GPU 使用量 | 卡 | 集群整体的 CPU 利用率 |
显存利用率 | % | GPU 显存利用率 |
GPU 利用率 | % | 集群 GPU 利用率 |
查看节点指标
可以通过以下操作查看节点和 Master&Etcd 节点的监控信息。
- 选择集群ID/名称,进入该集群的管理页面。
- 展开节点管理,即可查看节点和 Master&Etcd 节点的监控信息。
- 选择节点 > 监控,即可进入节点监控页面,查看监控信息。
- 选择 Master&Etcd > 监控,即可进入 Master&Etcd 监控页面,查看监控信息。
查看节点内 Pod 指标
- 选择集群ID/名称,进入该集群的管理页面。
- 选择节点管理 > 节点,进入节点列表页面。
- 选择节点名称,在 “Pod 管理”页签中单击监控,即可查看到该节点内 Pod 的监控指标曲线图。如下图所示:
登录轻量应用服务器控制台,进入实例详情页面查看某个实例的监控信息。
Master&Etcd 和普通节点监控指标:
指标 | 单位 | 说明 |
Pod 重启次数 | 次 | 节点内所有 Pod 的重启次数之和 |
Node 状态 | - | 节点的状态,正常或异常 |
CPU 利用率 | % | 节点内所有 Pod 的 CPU 使用量占节点总量之比 |
CPU 分配量 | 核 | 节点内所有 Pod 的 CPU 分配量总和 |
内存利用率 | % | 节点内所有 Pod 的工作集内存使用量占节点总量之比 |
内存分配量 | Mbps | 节点内所有 Pod 的内存分配量总和 |
内网入带宽 | Mbps | 节点内所有 Pod 的内网入方向带宽之和 |
内网出带宽 | Mbps | 节点内所有 Pod 的内网出方向带宽之和 |
外网入带宽 | Mbps | 节点内所有 Pod 的外网入方向带宽之和 |
外网出带宽 | Mbps | 节点内所有 Pod 的外网出方向带宽之和 |
TCP 连接数 | 个 | 节点保持的 TCP 连接数 |
GPU 使用量 | 卡 | 节点内所有 Pod 的 GPU 使用量之和 |
GPU 内存使用量 | Mbps | 节点内所有 Pod 的 GPU 内存使用量之和 |
GPU 内存利用率 | % | 节点内所有 Pod 的 GPU 内存使用量占节点 GPU 内存总量之比 |
GPU 利用率 | % | 节点内所有 Pod 的 GPU 使用量占节点 GPU 总量之比 |
Node 的 eni- IP 分配量 | 个 | Node 的弹性网卡上已分配的 IP 数量 |
Node 的 direct-eni 分配量 | 个 | Node 的 direct-eni 上已分配的 IP 数量 |
GlobalRouter模式集群中节点 Pod CIDR 已经分配的 IP 数 | 个 | GlobalRouter 模式的 K8S 集群中,一个节点的 Pod CIDR 中已分配的 IP 个数 |
GlobalRouter模式集群中节点可以分配的 IP 数 | 个 | GlobalRouter 模式的 K8S 集群中,一个节点中总共可分配的 IP 个数 |
查看工作负载指标
- 选择集群ID/名称,进入该集群的管理页面。
- 选择工作负载 > 任意类型工作负载。例如,选择Deployment,进入 Deployment 管理页面。
- 单击监控,即可查看该工作负载的监控信息。如下图所示:
工作负载监控指标:
指标 | 单位 | 说明 |
工作负载异常 | - | 工作负载是否为异常状态,非0即为异常 |
Pod 数量 | 个 | 工作负载内所有 Pod 的数量和 |
Pod 重启次数 | 次 | 工作负载内所有 Pod 的重启次数之和 |
CPU 使用量 | 核 | 工作负载内所有 Pod 的 CPU 使用量 |
CPU 利用率 | % | 工作负载内所有 Pod 的 CPU 使用量占总量之比 |
内存使用量 | Mbytes | 工作负载内所有 Pod 的内存使用量之和 |
内存使用量(不含 Cache) | Mbytes | 工作负载内所有 Pod 的内存使用量(不含 Cache)之和 |
内存使用量(working_set) | Mbytes | 工作负载内所有 Pod 的工作集内存使用量之和 |
内存利用率 | % | 工作负载内所有 Pod 的内存使用量占总量之比 |
内存利用率(不含 Cache) | % | 工作负载内所有 Pod 的内存使用量(不含 Cache)占所有 Pod 内存总量之比 |
内存利用率(working_set) | % | 工作负载内所有 Pod 的工作集内存使用量占总量之比 |
网络入带宽 | bps | 工作负载内所有 Pod 的入方向带宽之和 |
网络出带宽 | bps | 工作负载内所有 Pod 的出方向带宽之和 |
网络入流量 | B | 工作负载内所有 Pod 的入方向流量之和 |
网络出流量 | B | 工作负载内所有 Pod 的出方向流量之和 |
网络入包量 | 个/s | 工作负载内所有 Pod 的入方向包数之和 |
网络出包量 | 个/s | 工作负载内所有 Pod 的出方向包数之和 |
块设备读取大小 | Mbytes | 工作负载内所有 Pod 的块设备读取大小之和 |
块设备读取次数 | 次 | 工作负载内所有 Pod 的块设备读取次数之和 |
块设备写入大小 | Mbytes | 工作负载内所有 Pod 的块设备写入大小之和 |
块设备写入次数 | 次 | 工作负载内所有 Pod 的块设备写入次数之和 |
GPU 使用量 | 卡 | 工作负载内所有 Pod 的 GPU 使用量之和 |
GPU 内存使用量 | Mbps | 工作负载内所有 Pod 的 GPU 内存使用量之和 |
GPU 内存利用率 | % | 工作负载内所有 Pod 的 GPU 内存使用量与 GPU 内存总量之比 |
GPU 利用率 | % | 工作负载内所有 Pod 的 GPU 使用量与 GPU 总量之比 |
查看 Pod 内 Container 指标
- 选择集群ID/名称,进入该集群的管理页面。
- 选择工作负载 > 任意类型工作负载。例如,选择Deployment,进入 Deployment 管理页面。
- 选择工作负载名称,在该工作负载的 “Pod 管理”页签中,查看该 Pod 的 Container 信息。
- 查看该 Pod 内 Container 的监控指标对比图。如下图所示
Container 监控及告警指标
指标 | 单位 | 说明 |
CPU 使用量 | 核 | Container 的 CPU 使用量 |
CPU 利用率(占节点) | % | Container 的 CPU 使用量占节点总量之比 |
CPU 利用率(占 Request) | % | Container 的 CPU 使用量和设置的 Request 值之比 |
CPU 利用率(占 Limit) | % | Container 的 CPU 使用量和设置的 Limit 值之比 |
内存使用量 | Mbytes | Container 的内存使用量,含缓存(来源:container_memory_usage_bytes) |
内存使用量(不包含 Cache) | Mbytes | Container 的内存使用量,不含缓存(来源:container_memory_usage_bytes - container_memory_cache) |
内存使用量(working_set) | Mbytes | Container 的工作集内存使用量(来源:container_memory_working_set_bytes) |
内存利用率(占节点) | % | Container 的内存使用量(含缓存)占节点总量之比 |
内存利用率(占节点,不包含 Cache) | % | Container 的内存使用量(不含缓存)占节点总量之比 |
内存利用率(占节点,working_set) | % | Container 的工作集内存使用量占节点总量之比 |
内存利用率(占 Request) | % | Container 的内存使用量和设置的 Request 值之比 |
内存利用率(占 Request,不包含 Cache) | % | Container 的内存使用量(不含缓存)和设置的 Request 值之比 |
内存利用率(占 Request,working_set) | % | Container 的工作集内存使用量与设置的 Request 值之比 |
内存利用率(占 Limit) | % | Container 的内存使用量和设置的 Limit 值之比 |
内存利用率(占 Limit,不包含 Cache) | % | Container 的内存使用量(不含缓存)和设置的 Limit 值之比 |
内存利用率(占 Limit,working_set) | % | Container 的工作集内存使用量与设置的 Limit 值之比 |
块设备读带宽 | B/s | Container 从硬盘读取数据的吞吐量 |
块设备写带宽 | B/s | Container 把数据写入硬盘的吞吐量 |
块设备读 IOPS | 次/s | Container 从硬盘读取数据的 IO 次数 |
块设备写 IOPS | 次/s | Container 把数据写入硬盘的 IO 次数 |
9.其他
健康检查:
集群健康检查功能是腾讯云容器服务为集群提供检查各个资源状态及运行情况的服务,检查报告将详细展示组件、节点、工作负载的状态和配置的检查内容。
登录 容器服务控制台,选择左侧导航栏中的运维中心 > 健康检查。
进入“健康检查”页面,选择需要健康检查的集群,并为其选择合适的检查方式。 健康检查的三种方式分别为批量检查、立即检查和自动检查。
批量检查:适用于同时检查多个集群。
立即检查:适用于只检查一个集群。
自动检查:适用于需要周期性检查的集群。选择需要周期检查的集群,单击自动检查。如下图所示:
在“自动检查设置”弹窗中,可根据您的需求设置开启状态、检查周期和时刻。如下图所示:
- 选择好检查方式之后,等待检查完成,可查看检查进度。如下图所示:
检查完成后,可单击查看结果查看检查报告。如下图所示:
在检查报告页面,选择资源状态和运行情况分别查看资源状态和异常情况,单击检查内容可展示具体的检查内容,单击异常可查看异常级别、异常描述、异常原因、异常影响和修复建议。如下图所示:
二、阿里云
容器服务Kubernetes版
1.集群
1.1.创建集群
- ACK托管版
创建Kubernetes托管版集群时,您只需创建节点,无需维护控制面板。控制面板由阿里云容器服务创建并托管,降低了运维成本,
- ACK专有版
需要创建 3 个 Master(高可用)节点及若干 Worker 节点,可对集群基础设施进行更细粒度的控制,需要自行规划、维护、升级服务器集群。
- ACK Serverless集群
无需创建和管理 Master 节点及 Worker 节点,即可通过控制台或者命令配置容器实例的资源、指定应用容器镜像以及对外服务的方式,直接启动应用程序。
- ACK Edge 集群
提供一个支持边缘计算的托管 Kubernetes 集群,您可以将边缘节点接入到边缘集群中进行托管,为您节省运维成本,并提供类似边缘自治、网络自治等适配边缘计算场景能力
- 注册集群
注册集群功能可以为分布在各处的外部 Kubernetes 集群提供统一的使用和管理方式
如何选择网络插件:如何使用Terway网络插件_容器服务 Kubernetes 版 ACK-阿里云帮助中心
Terway是阿里云开源的基于专有网络VPC的容器网络接口CNI(Container Network Interface)插件,支持基于Kubernetes标准的网络策略来定义容器间的访问策略。您可以通过使用Terway网络插件实现Kubernetes集群内部的网络互通。
步骤一:集群配置(ACK托管版)
创建虚拟交换机:
集群基础选项
配置项 | 描述 |
账号全部资源 | 将鼠标悬浮于页面上方的账号全部资源,选择资源组。在控制台页面顶部选择的资源组可过滤出该资源组内的专有网络及对应的虚拟交换机。在创建集群时,只显示过滤的专有网络实例及专有网络对应的虚拟交换机实例。 |
集群名称 | 填写集群的名称。说明 长度为1~63个字符,可包含数字、下划线(_)或中划线(-),需以英文大小写字母、中文或数字开头。 |
集群规格 | 选择集群规格,支持Pro 版和基础版。企业生产和测试环境中推荐使用Pro版集群。基础版集群仅供个人学习与测试使用。 |
地域 | 选择集群所在的地域。 |
付费类型 | 容器服务Kubernetes版支持按量付费和包年包月两种付费类型。 |
Kubernetes 版本 | 显示当前ACK支持的Kubernetes版本。 |
IPv6双栈 | 开启IPv6双栈将创建双栈Kubernetes集群。双栈功能正在公测中,如需使用请前往配额平台申请。重要仅1.22及以上版本的Kubernetes集群支持IPv6双栈功能。Worker节点与控制平面之间的通信使用IPv4地址。容器网络插件需选择Terway。集群使用的VPC及ECS需要支持IPv6双栈。 |
专有网络 | 设置集群的网络,您可以选择普通VPC和共享VPC。共享VPC:VPC的所有者账号(资源所有者)可以将其账号下的VPC内的交换机资源共享给其组织内的其他账号使用。普通VPC:不具备共享功能的VPC。说明 Kubernetes集群仅支持专有网络。您可以在已有VPC列表中选择所需的VPC。如果没有您需要的专有网络,可以通过单击创建专有网络进行创建,请参见创建和管理专有网络。 |
网络插件 | 设置启用的网络插件和插件配置,支持Flannel和Terway网络插件。 |
虚拟交换机 | 设置虚拟交换机。您可以在已有虚拟交换机列表中,根据可用区选择交换机。如果没有您需要的交换机,可以通过单击创建虚拟交换机进行创建,请参见创建和管理交换机。 |
Pod 虚拟交换机 | 网络插件选择Terway时,您需要为Pod分配IP的虚拟交换机。每个Pod虚拟交换机分别对应一个Worker实例的虚拟交换机,Pod虚拟交换机和Worker实例的虚拟交换机的可用区需一致。 |
Pod 网络 CIDR | 网络插件选择Flannel时,需要配置Pod 网络 CIDR。Flannel网络插件需要配置Pod网络CIDR,网段不能和VPC及VPC已有Kubernetes集群使用的网段重复,创建成功后不能修改,而且Service地址段不能和Pod地址段重复。有关Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划。 |
节点 Pod 数量 | 如果您选择的网络模式为Flannel,您需设置节点 Pod 数量。 |
Service CIDR | 设置Service CIDR。您需要指定Service CIDR,网段不能与VPC及VPC内已有Kubernetes集群使用的网段重复,创建成功后不能修改,而且Service地址段也不能和Pod地址段重复。有关Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划。 |
IPv6 Service CIDR | 开启IPv6双栈后,您需要为Service CIDR配置IPv6地址段。配置网段时,请注意:必须使用ULA地址,地址段范围在fc00::/7内,且地址前缀长度在112~120之间。推荐和Service CIDR保持相同的可用地址数量。关于Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划。 |
配置 SNAT | 创建集群时,默认选中。如果您选择的VPC不具备公网访问能力,选中为专有网络配置 SNAT后,ACK将为您创建NAT网关并自动配置SNAT规则。 |
API Server 访问 | ACK默认为API Server创建一个内网SLB实例,您可修改SLB实例规格。更多信息,请参见实例规格。重要 删除默认创建的SLB实例将会导致无法访问API Server。您可设置是否开放使用 EIP 暴露 API Server。API Server提供了各类资源对象(Pod,Service等)的增删改查及Watch等HTTP Rest接口。如果选择开放,ACK会创建一个EIP,并挂载到SLB上。此时,Master节点的6443端口(对应API Server)暴露出来,您可以在外网通过kubeconfig连接并操作集群。如果选择不开放,则不会创建EIP,您只能在VPC内部用kubeconfig连接并操作集群。 |
安全组 | 支持选择自动创建普通安全组、自动创建企业级安全组、选择已有安全组。有关安全组的详细内容,请参见安全组概述。说明只有白名单用户可以使用选择已有安全组功能,请前往配额平台申请。指定已有安全组时,系统默认不会为安全组配置额外的访问规则,可能会导致访问异常,请自行管理安全组规则。关于如何管理安全组规则,请参见最小化集群访问规则。 |
集群删除保护 | 设置是否启用集群删除保护。选择开启可以防止通过控制台或API误释放集群。 |
资源组 | 创建的集群将归属于选择的资源组。一个资源只能归属于一个资源组。根据不同的业务场景,您可以将资源组映射为项目、应用或组织等概念。更多信息,请参见资源组。 |
创建专有网络
勾选已有的交换机
pod虚拟交换机:Pod 虚拟交换机(Virtual Switch)是用于管理和隔离容器网络的关键组件,用来网络隔离,流量控制,负载均衡。
二:节点池配置
安全加固:旨在增强这些节点池的安全性。
ACK等保加固使用说明_容器服务 Kubernetes 版 ACK-阿里云帮助中心
创建密钥对
在节点池的配置上加上密钥对
步骤三:组件配置
组件基础选项
配置项 | 描述 |
Ingress | 设置是否安装Ingress组件。默认为Nginx Ingress。可选择不安装。可选择Nginx Ingress。关于Nginx Ingress的更多使用说明,请参见Nginx Ingress高级用法。可选择ALB Ingress。关于如何在ACK集群中通过ALB Ingress访问服务,请参见通过ALB Ingress访问服务。可选择MSE Ingress。关于如何在ACK集群中通过MSE Ingress访问服务,请参见通过MSE Ingress访问容器服务。 |
服务发现 | 设置是否安装NodeLocal DNSCache组件,默认安装NodeLocal DNSCache。NodeLocal DNSCache用于运行DNS缓存代理以提升域名解析性能和稳定性。关于NodeLocal DNSCache的更多信息,请参见使用NodeLocal DNSCache。 |
存储插件 | 默认是CSI存储插件。默认选中创建默认NAS文件系统和CNFS容器网络文件系统动态存储类型,并默认开启 NAS 回收站特性,支持数据快速恢复。Kubernetes集群通过Pod可自动绑定阿里云云盘、NAS、OSS存储服务。更多信息,请参见存储管理-CSI。 |
容器监控 | 默认选中使用 Prometheus 监控服务,为容器服务ACK集群提供基础监控和报警。 |
报警配置 | 默认选中使用默认报警模板配置报警,开启默认报警规则。开启后,可以设置报警通知联系人分组,默认为Default Contact Group。详细介绍,请参见容器服务报警管理。 |
日志服务 | 设置是否启用日志服务,您可使用已有Project或新建一个Project。默认选中使用日志服务。创建应用时,您可通过简单配置,快速使用日志服务,详情参见通过日志服务采集Kubernetes容器日志。默认选中创建 Ingress Dashboard,您可以选择是否在日志服务控制台中创建 Ingress Dashboard。更多信息,请参见Nginx Ingress访问日志分析与监控。默认选中安装 node-problem-detector 并创建事件中心,您可以选择是否在日志服务控制台中添加事件中心。更多信息,请参见创建并使用K8s事件中心。 |
控制平面组件日志 | 默认选中开启,将从ACK控制层收集托管集群控制平面组件日志到您账号中的SLS日志服务的Log Project中。更多信息,请参见收集ACK Pro版集群控制平面组件日志。 |
工作流引擎 | 设置是否使用AGS。说明当前只有白名单用户可以使用该功能。如果选中AGS,则创建集群时系统自动安装AGS工作流插件。如果不选中,则需要手动安装AGS工作流插件,请参见AGS命令行帮助。 |
集群巡检 | 启用智能运维的集群巡检功能,定期扫描集群内配额、资源水位、组件版本等,识别集群内潜在的风险。更多信息, 请参见使用集群巡检。 |
最后确认配置,勾选用户协议,并确认所有依赖配置都已经开通
2.镜像
构建镜像时,您需要绑定一个源代码托管平台。
2.1创建镜像
企业版实例创建镜像
容器镜像服务企业版支持从源代码到容器镜像的持续集成能力,具备安全、高并发、稳定、高效等特性。容器镜像服务企业版支持基于Dockerfile文件的构建规则,自动触发镜像构建,然后运行Dockerfile执行构建,构建完成后自动提交镜像到容器镜像仓库。
- 企业版镜像
前提:绑定源代码托管平台
构建镜像时,您需要绑定一个源代码托管平台,阿里云容器镜像服务企业版支持以下几种代码托管平台:
绑定步骤:如何绑定容器镜像服务企业版实例与源代码托管平台_容器镜像服务 ACR-阿里云帮助中心
步骤一、创建企业版实例,实现代码托管
参数 | 说明 |
地域 | 选择企业版实例所在的地域。 |
实例规格 | 选择实例规格。更多信息,请参见什么是容器镜像服务ACR。 |
实例名称 | 输入实例名称。 |
实例存储 | 支持默认和自定义。默认:默认将在您账号下创建OSS Bucket托管容器镜像。自定义:可自定义选择已有OSS Bucket托管容器镜像。 |
选择Bucket | 选择已有Bucket托管容器镜像。说明仅设置实例存储为自定义时,需要设置该项。 |
安全扫描 | 提供镜像安全扫描功能,支持选择以下两种安全扫描引擎: Trivy扫描引擎:开源扫描引擎,支持检测系统漏洞和应用漏洞,不支持一键修复系统漏洞功能。 云安全扫描引擎:阿里云自研的扫描引擎,支持检测系统漏洞、应用漏洞、基线检查和恶意样本,支持一键修复系统漏洞功能。 |
仓库配额 | 基础版默认仓库配额为1000,标准版为3000,高级版为5000,您可以在这里按需额外增加仓库配额。 |
命名空间配额 | 基础版默认命名空间配额为15,标准版为25,高级版为50,您可以在这里按需额外增加命名空间配额。 |
购买时长 | 目前支持选择1、2、3、6个月和1~5年。说明您还可以设置是否到期自动续费。 |
步骤二、创建命名空间
- 登录容器镜像服务控制台。
- 在顶部菜单栏,选择所需地域。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在企业版实例管理页面选择仓库管理 > 命名空间。
- 在命名空间页面单击创建命名空间。
- 在创建命名空间对话框中设置命名空间名称、是否自动创建仓库、默认仓库类型。单击确定。
步骤三、创建镜像仓库
创建镜像仓库,并绑定代码仓库,此代码仓库触发的镜像构建都会推送到该镜像仓库下。
- 登录容器镜像服务控制台。
- 在顶部菜单栏,选择所需地域。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在企业版实例管理页面选择仓库管理 > 镜像仓库。
- 在镜像仓库单击创建镜像仓库。
- 在仓库信息配置向导中设置命名空间、仓库名称、仓库类型、镜像版本、镜像加速、摘要、描述信息,单击下一步。
- 在代码源配置向导中设置代码源、构建设置、构建规则设置,单击创建镜像仓库。
步骤四、构建镜像
- 登录容器镜像服务控制台。
- 在顶部菜单栏,选择所需地域。
- 在左侧导航栏,选择实例列表。
- 在实例列表页面单击目标企业版实例。
- 在企业版实例管理页面左侧导航栏,选择仓库管理 > 镜像仓库。
- 在镜像仓库页面单击目标仓库右侧操作列中的管理。
- 单击左侧导航栏中的构建,在构建规则设置区域单击添加规则,在构建信息配置向导中设置参数,然后单击下一步。
参数 | 说明 |
类型 | 设置源代码仓库的类型,可以是Branch或Tag。 |
Branch/Tag | 选择或者填写Branch/Tag,支持正则规则。当正则规则为release-(?<imageTag>\w*)时,将识别release-v1源代码变更并自动构建版本为v1的镜像(不支持立即构建),更多信息,请参见正则表达式命名捕获组。说明设置正则规则后仅支持系统自动构建,不支持手动立即构建。 |
构建上下文目录 | 设置Dockerfile文件所在的目录。指的是相对目录,以Branch/Tag的根目录为父目录,例如您的Branch为master,您的Dockerfile文件放在master下,则您的Dockerfile目录为/。 |
Dockerfile文件名 | 设置Dockerfile文件名,默认为Dockerfile。 |
- 在镜像版本配置向导中设置参数,单击保存,然后单击下一步。
参数 | 说明 |
镜像版本 | 设置镜像Tag,例如latest。支持命名捕获,例如使用Branch/Tag中捕获的内容。 |
时间 | 推送源代码的东八区(UTC+8)时间,有两种格式可供选择,例如20201015和202010151613。说明该参数为可选项,当选中该参数后系统仅支持自动构建,不支持手动立即构建。 |
Commit ID | 最近一次推送代码的Commit ID,默认取前6位,可以滑动下方的滑块设置位数。说明该参数为可选项,当选中该参数后系统仅支持自动构建,不支持手动立即构建。 |
- 在构建配置配置向导中设置构建参数,然后单击确定。
参数 | 说明 |
构建架构 | 选择构建架构,支持并行构建,最终形成一个镜像版本对应多个架构镜像。 |
构建参数 | 镜像构建运行时参数,构建参数由区分大小写的键值对组成,您最多可以设置20个构建参数。您可以设置构建参数,该构建参数会修改Dockerfile文件中环境变量,使同一个Dockerfile文件呈现多种状态。 |
在左侧导航栏单击镜像版本,您可以看到构建的镜像,说明构建镜像成功。
当使用镜像来创建应用的时候,有如下选择,按需选择即可。
2.2制品中心
是阿里提供的镜像中心,可以按需选择地址拉取官方的镜像
2.3镜像加速器
可以解决镜像拉取速度慢的问题,详细请见阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
3.日志
Kubernetes日志可以协助问题的排查和诊断。
采集日志
通过镜像创建应用并配置日志服务
- 登录容器服务管理控制台,在左侧导航栏中选择集群。
- 在集群列表页面中,单击目标集群名称,然后在左侧导航栏中,选择工作负载 > 无状态。
- 在无状态页面上方的命名空间下拉列表中选择目标命名空间,然后在页面右上角单击使用镜像创建。
- 在应用基本信息页签,设置应用名称、副本数量和类型,然后单击下一步。
- 在容器配置页签的日志服务区域,进行相关配置。
- 日志库:用于指定所采集日志存储于该Logstore。如果该Logstore不存在,ACK将会自动为您在集群关联的日志服务Project下创建相应的Logstore。
- Project 是阿里云日志服务(Log Service)中的一种逻辑管理单元。它通常用于将一组相关的日志数据进行组织和隔离,以便更好地管理和控制日志数据的访问权限、存储策略、分析和监控等。在 ACK 中,您可以创建 Project 并将容器集群的日志数据存储在这个 Project 中。
配置项 | 说明 |
采集配置 | 单击采集配置,配置日志库和容器内日志路径。日志库:配置Logstore名称,名称中只能包含小写字母、数字和短划线(-)。您可以使用它来指定所采集日志存储于该Logstore,如果该Logstore不存在的话,ASK会自动为您在集群关联的日志服务Project下创建相应的Logstore。容器内日志路径:指定希望采集的日志所在的路径,例如使用/usr/local/tomcat/logs/catalina.*.log来采集Tomcat的文本日志。说明如果指定为stdout,表示采集容器的标准输出和标准错误输出。每一项采集配置都会被自动创建为对应Logstore的一个采集配置,默认采用极简模式(按行)进行采集,如果您需要更丰富的采集方式,可以登录日志服务控制台,进入相应的Project(默认是k8s-log前缀)和Logstore对配置进行修改。 |
自定义Tag | 单击自定义Tag,配置Tag名称和Tag值。每一个自定义Tag都是一个键值对,会拼接到所采集到的日志中,您可以使用它来为容器的日志数据进行标记,例如版本号。 |
配置完成后,在页面右侧单击下一步,后续操作,请参见创建无状态工作负载Deployment。
查看日志
查看控制平面组件日志
- 在创建集群时启用日志服务,快速采集Kubernetes集群的容器日志,包括容器的标准输出以及容器内的文本文件
- 在Project列表区域,单击目标集群对应的日志服务Project名称。项目(Project)是日志服务的资源管理单元,是进行多用户隔离与访问控制的主要边界。
- 在日志存储页面左侧的日志库列表选择目标控制平面组件的日志库,当前支持kube-apiserver,kube-scheduler、kube-controller-manager和Cloud Controller Manager四种控制平面组件日志查询方式。
控制平面组件Logstore说明
当前ACK支持收集以下四种类型的控制平面组件日志,每种日志服务Logstore对应一个Kubernetes控制层面组件。关于这些组件的更多信息。
组件 | Logstore | 说明 |
kube-apiserver | apiserver | kube-apiserver组件是暴露Kubernetes API接口的控制层面的组件。 |
kube-controller-manager | kcm | kube-controller-manager组件是Kubernetes集群内部的管理控制中心,内嵌了Kubernetes发布版本中核心的控制链路。 |
kube-scheduler | scheduler | kube-scheduler组件是Kubernetes集群的默认调度器。 |
Cloud Controller Manager | ccm | Cloud Controller Manager提供Kubernetes与阿里云基础产品的对接能力,功能包括管理负载均衡、跨节点通信等。 |
Ingress 日志
主要展示当前Ingress的整体状态,主要包括整体架构状态、网站实时状态、用户请求类信息。
分析和监控CoreDNS日志
阿里云容器服务ACK部署了CoreDNS作为集群内的DNS服务器,您可以通过查看CoreDNS日志来分析CoreDNS解析慢、访问高危请求域名等问题。
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 日志中心。
- 在日志中心页面,单击网络组件日志页签,然后在CoreDNS页签下单击日志库,即可查询和分析DNS日志。
- 在输入框中输入查询和分析语句,然后单击1周(相对),设置查询的时间范围。
- 单击查询/分析,查看查询分析结果。
- 日志服务为您提供日志分布直方图、原始日志和统计图表形式的展示查询分析结果。关于查询和分析日志的详细信息,请参见查询和分析日志。
- 日志直方图
- 日志分布直方图主要展示查询到的日志在时间上的分布。
- 原始日志
- 在原始日志页签中展示当前查询结果,您可单击表格或原始查看日志,通过分析日志来确认当前域名解析是否存在异常。请重点关注返回码RCODE的值,关于ROCDE的释义,请参见 DNS解析异常问题排查。
各个字段含义如下所示。
字段 | 含义 | 示例值 |
{level} | 日志级别 | INFO |
{remote} | 客户端IP地址 | 172.16.0.10 |
{port} | 客户端端口 | 58008 |
{id} | 查询ID | 34518 |
{type} | 请求类型 | A |
{class} | 请求类别 | IN |
{name} | 请求域名的名称 | kube-dns.kube-system.svc.cluster.local. |
{proto} | 使用的协议 | tcp |
{size} | 请求大小(字节) | 56 |
{do} | 查询中是否设置了EDNS0 DO(DNSSEC OK)位 | FALSE |
{bufsize} | 在查询中定义的EDNS0缓冲区大小(字节) | 65535 |
{rcode} | 响应代码 | NOERROR |
{rflags} | 响应标志位,设置的每个标志位都会显示 | qr,aa,rd |
{rsize} | 未压缩的响应大小(字节) | 110 |
{duration} | 响应时间(秒) | 0.00011 |
- 日志直方图统计图表
执行查询分析语句后,您可以在统计图表页签中查看可视化的查询分析结果。
- 日志聚类
在日志聚类页签中,单击开启日志聚类,可实现在采集日志时将相似度高的日志聚合。更多信息,请参见日志聚类。
查看CoreDNS日志采集(仪表盘)
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 日志中心。
- 在日志中心页面,单击网络组件日志页签,然后在CoreDNS页签下单击仪表盘,即可查看Kubernetes CoreDNS日志分析。
- 在Kubernetes CoreDNS日志分析页面,您可以查看CoreDNS请求数、请求成功率和请求延迟等聚合信息,同时提供了各类Top域名请求列表、错误域名列表、慢解析域名列表和高危请求域名访问分析。
4.网络
ACK集成Kubernetes网络、阿里云VPC、阿里云SLB,提供稳定高性能的容器网络,
容器网络CNI
容器网络模型图
容器化应用会在同一个节点上部署多个业务,而每个业务都需要自己的网络空间。为避免与其他业务网络冲突,需要Pod有自己独立的网络空间,而Pod中应用需要和其他网络进行通信,就需要Pod能够跟不同的网络互相访问。可见容器网络特点如下:
- 每个Pod都拥有自己独立的网络空间和IP地址。不同Pod的应用可以监听同样的端口而不冲突。
- Pod可以通过各自的IP地址互相访问。
- 集群中Pod可以通过它独立的IP地址与其他应用互通:
- 同一个集群中,Pod之间相互访问。
- Pod直接访问同一个VPC下的ECS。
- 同一个VPC下的ECS直接访问Pod。
服务
由于云原生的应用,通常需要敏捷的迭代和快速的弹性,且单一容器和其相关的网络资源的生命非常短暂,所以需要固定的访问地址,以及自动负载均衡实现快速的业务弹性。ACK采用Service方式为一组容器提供固定的访问入口,并对这一组容器做负载均衡。实现原理如下:
- 创建Service对象时,ACK会分配一个相对固定的Service IP地址。
- 通过字段selector选择一组容器,以将这个Service IP地址和端口负载均衡到这一组容器IP和端口上。
配置项 | 描述 |
名称 | 输入服务的名称。 |
类型 | 选择服务类型,即服务访问的方式。 虚拟集群IP:即ClusterIP,指通过集群的内部IP暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的ServiceType。 节点端口:即NodePort,通过每个Node上的IP和静态端口(NodePort)暴露服务。NodePort服务会路由到ClusterIP服务,该ClusterIP服务会自动创建。通过请求<NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务。 负载均衡:即LoadBalancer,指阿里云提供的负载均衡服务(SLB),可选择公网访问或私网访问。阿里云负载均衡服务可以路由到NodePort服务和ClusterIP服务。 本例中选择虚拟集群IP。 |
端口映射 | 添加服务端口和容器端口。容器端口需要与后端的Pod中暴露的容器端口一致。 |
路由
在ACK集群中,与Service的4层负载均衡不同,Ingress是集群内Service对外暴露7层的访问接入点。您可以通过Ingress资源来配置不同的7层的转发规则,例如通过域名或者访问路径来路由到不同的Service上,从而达到7层的负载均衡作用。更多信息,请参见Ingress概述。
Ingress和Service关系图
可以在路由下查看和此路由相关的监控信息。
配置项 | 描述 |
名称 | 输入路由的名称。 |
规则 | 路由规则是指授权入站到达集群服务的规则。更多信息,请参见配置路由信息。 |
网络底层基础设施
- VPC
- 阿里云专有网络VPC(Virtual Private Cloud)是基于阿里云创建的自定义私有网络,不同的专有网络之间彻底逻辑隔离。您可以在专有网络内创建和管理云产品实例,例如云服务器、云数据库RDS版和负载均衡等。
- 每个VPC都由一个路由器、至少一个私网网段和至少一个交换机组成。
- 私网网段
- 在创建专有网络和交换机时,您需要以CIDR地址块的形式指定专有网络使用的私网网段。
- 您可以使用下表中标准的私网网段及其子网作为VPC的私网网段,也可以使用自定义地址段作为VPC的私网网段。更多信息,请参见网络规划。
网段 | 说明 |
192.168.0.0/16 | 可用私网IP数量(不包括系统保留地址):65,532 |
172.16.0.0/12 | 可用私网IP数量(不包括系统保留地址):1,048,572 |
10.0.0.0/8 | 可用私网IP数量(不包括系统保留地址):16,777,212 |
自定义地址段 | 除100.64.0.0/10、224.0.0.0/4、127.0.0.0/8、169.254.0.0/16及其子网外的自定义地址段。 |
- 路由器
- 路由器(vRouter)是专有网络的枢纽。作为专有网络中重要的功能组件,它可以连接专有网络内的各个交换机,同时也是连接专有网络和其他网络的网关设备。每个专有网络创建成功后,系统会自动创建一个路由器。每个路由器至少关联一张路由表。
- 更多信息,请参见路由表概述。
- 交换机
- 交换机(vSwitch)是组成专有网络的基础网络设备,用来连接不同的云资源。创建专有网络后,您可以通过创建交换机为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通。您可以将应用部署在不同可用区的交换机内,提高应用的可用性。
- 更多信息,请参见创建和管理交换机。
- SLB
- 阿里云负载均衡SLB(Server Load Balancer)通过设置虚拟服务地址,将添加的ECS实例虚拟成一个高性能、高可用的应用服务池,并根据转发规则,将来自客户端的请求分发给云服务器池中的ECS实例。
- 负载均衡默认检查云服务器池中的ECS实例的健康状态,自动隔离异常状态的ECS实例,消除了单台ECS实例的单点故障,提高了应用的整体服务能力。此外,负载均衡还具备抗DDoS攻击的能力,增强了应用服务的防护能力。
- 负载均衡由以下三个部分组成:
- 负载均衡实例
一个负载均衡实例是一个运行的负载均衡服务,用来接收流量并将其分配给后端服务器。要使用负载均衡服务,您必须创建一个负载均衡实例,并至少添加一个监听和两台ECS实例。
- 监听
监听用来检查客户端请求并将请求转发给后端服务器。监听也会对后端服务器进行健康检查。
- 后端服务器
一组接收前端请求的ECS实例。您可以单独添加ECS实例到服务器池,也可以通过虚拟服务器组或主备服务器组来批量添加和管理。
负载均衡的基础架构:阿里云当前提供四层和七层的负载均衡服务。
- 四层采用开源软件LVS(Linux Virtual Server)+ keepalived的方式实现负载均衡,并根据云计算需求对其进行了个性化定制。
- 七层采用Tengine实现负载均衡。Tengine是由淘宝网发起的Web服务器项目,它在Nginx的基础上,针对有大访问量的网站需求,添加了很多高级功能和特性。
5.监控
基础资源监控
通过资源监控可以快速查看负载的CPU、内存、网络等指标的使用率。
- 登录云监控控制台。
- 在控制台左侧导航栏中,单击Kubernetes容器监控。
- 在容器监控页面中,单击目标集群名称或者目标集群右侧操作列下的查看详情。
- 在目标集群页面,可从集群概览、节点、命名空间及工作负载中目标应用等视角查看监控数据。
Prometheus监控
安装Prometheus插件并启动才可以进行监控,还可以点击命名空间详细查看。
对于监控系统而言,监控对象通常分为以下两类:
- 资源监控:节点、应用的资源使用情况,在容器Kubernetes中可理解为节点的资源利用率、集群的资源利用率、Pod的资源利用率等。
- 应用监控:应用内部指标的监控。
控制平面组件监控大盘
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > Prometheus监控。
- 在Prometheus监控页面中,单击Pro核心组件监控。
控制平面组件 | 监控大盘 | 描述 | 参考文档 |
kube-apiserver | ACK Pro APIServer | 介绍kube-apiserver组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 | |
cloud-controller-manager | ACK Pro Cloud Controller Manager | 介绍cloud-controller-mananger组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 | |
etcd | ACK Pro ETCD | 介绍etcd组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 | |
kube-controller-manager | ACK Pro Kube Controller Manager | 介绍kube-controller-manager组件的指标清单和对应大盘的使用指导。 | |
kube-scheduler | ACK Pro Scheduler | 介绍kube-scheduler组件的指标清单、对应大盘的使用指导以及常见指标异常的问题解析。 | |
自定义Prometheus监控和告警 | 自定义大盘名称 | 介绍如何基于用户自建的Prometheus,采集ACK Pro集群的控制面组件监控API Server、etcd、Scheduler、KCM、CCM指标配置说明以及推荐的报警配置。 |
应用监控
应用内部指标的监控
网络监控
GPU监控
查看CoreDNS组件监控大盘
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > Prometheus监控。
- 在Prometheus监控页面,单击网络监控页签。
- 在CoreDNS组件监控页签查看监控大盘。
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > Prometheus监控。
- 在Prometheus监控页面,单击网络监控页签。
- 在CoreDNS组件监控页签查看监控大盘。
阿里云容器服务Kubernetes版应用场景
1.DevOps 持续交付应用场景
最优化的持续交付流程
配合 Jenkins 帮您自动完成从代码提交到应用部署的 DevOps 完整流程,确保只有通过自动测试的代码才能交付和部署,高效替代业内部署复杂、迭代缓慢的传统方式。
能够实现:
- DevOps 自动化
- 实现从代码变更到代码构建,镜像构建和应用部署的全流程自动化。
- 环境一致性
- 容器技术让您交付的不仅是代码,还有基于不可变架构的运行环境。
- 持续反馈
- 每次集成或交付,都会第一时间将结果实时反馈。
推荐搭配使用:
云服务器 ECS + 容器服务
2.基于云原生技术的机器学习
专注机器学习本身,快速实现从 0 到 1
帮助数据工程师在 异构计算资源集群上轻松开发、部署机器学习应用,跟踪试验和训练、发布模型,自动集成多种分布式存储系统,加速训练数据读写。无需关心繁琐部署运维,专注核心业务,快速从 0 到 1。
能够实现:
- 支持生态
- 内置对TensorFlow、Caffe、MXNet、Pytorch等主流深度学习计算框架支持和优化。
- 快速弹性
- 一键部署机器学习开发、训练、推理服务,秒级启动和弹性伸缩。
- 简单可控
- 轻松创建、管理大规模 GPU 计算集群,并且可以监控 GPU 利用率等核心指标。
- 深度整合
- 无缝接入阿里云存储、日志监控和安全基础架构能力。
推荐搭配使用:
云服务器ECS/GPU服务器 EGS/高性能计算服务 (Alibaba Cloud HPC) + 容器服务 + 对象存储 OSS/文件存储NAS/CPFS
3.微服务架构
实现敏捷开发和部署落地,加速企业业务迭代
企业生产环境中,通过合理微服务拆分,将每个微服务应用存储在阿里云镜像仓库。您只需迭代每个微服务应用,由阿里云提供调度、编排、部署和灰度发布能力。
能够实现:
- 负载均衡和服务发现
- 支持 4 层和 7 层的请求转发和后端绑定。
- 丰富的调度和异常恢复策略
- 支持服务级别的亲和性调度,支持跨可用区的高可用和灾难恢复。
- 微服务监控和弹性伸缩
- 支持微服务和容器级别的监控,支持微服务的自动伸缩。
推荐搭配使用:
云服务器 ECS + 云数据库 RDS 版 + 对象存储 OSS + 容器服务
4.混合云架构
统一运维多个云端资源
在容器服务控制台上同时管理云上云下的资源,不需在多种云管理控制台中反复切换。基于容器基础设施无关的特性,使用同一套镜像和编排同时在云上云下部署应用。
能够实现:
- 在云上伸缩应用
- 业务高峰期,在云端快速扩容,把一些业务流量引到云端。
- 云上容灾
- 业务系统同时部署到云上和云下,云下提供服务,云上容灾。
- 云下开发测试
- 云下开发测试后的应用无缝发布到云上。
推荐搭配使用:
云服务器 ECS + 专有网络 VPC + 高速通道(Express Connect)
5.弹性伸缩架构
根据业务流量自动对业务扩容/缩容
容器服务可以根据业务流量自动对业务扩容/缩容,不需要人工干预,避免流量激增扩容不及时导致系统挂掉,以及平时大量闲置资源造成浪费。
能够实现:
- 快速响应
- 业务流量达到扩容指标,秒级触发容器扩容操作。
- 全自动
- 整个扩容/缩容过程完全自动化,无需人工干预。
- 低成本
- 流量降低自动缩容,避免资源浪费。
推荐搭配使用:
云服务器 ECS + 云监控
参考资料:
1.什么是容器服务_产品简介_容器服务Kubernetes版_企业版
2.cloud.tencent.com