华为云用户手册
-
创建Deployment挂载已有数据卷 新建一个Deployment的YAML文件,例如deployment-test.yaml。 配置示例: apiVersion: apps/v1 kind: Deployment metadata: name: test-turbo-subpath-example namespace: default generation: 1 labels: appgroup: '' spec: replicas: 1 selector: matchLabels: app: test-turbo-subpath-example template: metadata: labels: app: test-turbo-subpath-example spec: containers: - image: nginx:latest name: container-0 volumeMounts: - mountPath: /tmp name: pvc-sfs-turbo-example restartPolicy: Always imagePullSecrets: - name: default-secret volumes: - name: pvc-sfs-turbo-example persistentVolumeClaim: claimName: sfs-turbo-test 其中: name:创建的工作负载名称。 image:工作负载的镜像。 mountPath:容器内挂载路径,示例中挂载到“/tmp”路径。 claimName:已有的PVC名称。 创建Deployment负载。 kubectl create -f deployment-test.yaml
-
约束与限制 仅支持1.15+集群。 集群必须使用everest插件,插件版本要求1.1.13+。 不支持安全容器。 使用everest 1.2.69之前或2.1.11之前的版本时,使用子目录功能时不能同时并发创建超过10个PVC。推荐使用everest 1.2.69及以上或2.1.11及以上的版本。 subpath类型的卷实际为SFS Turbo的子目录,对该类型的PVC进行扩容仅会调整PVC声明的资源范围,并不会调整SFS Turbo资源的总容量。若SFS Turbo资源总容量不足,subpath类型卷的实际可使用的容量大小也会受限,您需要前往SFS Turbo界面进行扩容。 同理,删除subpath类型的卷也不会实际删除后端的SFS Turbo资源。
-
StatefulSet动态创建subpath模式的数据卷 新建一个StatefulSet的YAML文件,例如statefulset-test.yaml。 配置示例: apiVersion: apps/v1 kind: StatefulSet metadata: name: test-turbo-subpath namespace: default generation: 1 labels: appgroup: '' spec: replicas: 2 selector: matchLabels: app: test-turbo-subpath template: metadata: labels: app: test-turbo-subpath annotations: metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' pod.alpha.kubernetes.io/initialized: 'true' spec: containers: - name: container-0 image: 'nginx:latest' resources: {} volumeMounts: - name: sfs-turbo-160024548582479676 mountPath: /tmp terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} imagePullSecrets: - name: default-secret affinity: {} schedulerName: default-scheduler volumeClaimTemplates: - metadata: name: sfs-turbo-160024548582479676 namespace: default annotations: {} spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: sfsturbo-subpath-sc serviceName: wwww podManagementPolicy: OrderedReady updateStrategy: type: RollingUpdate revisionHistoryLimit: 10 其中: name:创建的工作负载名称。 image:工作负载的镜像。 mountPath:容器内挂载路径,示例中挂载到“/tmp”路径。 “spec.template.spec.containers.volumeMounts.name ”和 “spec.volumeClaimTemplates.metadata.name”有映射关系,必须保持一致。 storageClassName: 填写自建的SC名称。 创建StatefulSet负载。 kubectl create -f statefulset-test.yaml
-
创建subpath类型SFS Turbo存储卷 创建SFS Turbo资源,选择网络时,请选择与集群相同的VPC与子网。 新建一个StorageClass的YAML文件,例如sfsturbo-subpath-sc.yaml。 配置示例: apiVersion: storage.k8s.io/v1 allowVolumeExpansion: true kind: StorageClass metadata: name: sfsturbo-subpath-sc mountOptions: - lock parameters: csi.storage.k8s.io/csi-driver-name: sfsturbo.csi.everest.io csi.storage.k8s.io/fstype: nfs everest.io/archive-on-delete: "true" everest.io/share-access-to: 7ca2dba2-1234-1234-1234-626371a8fb3a everest.io/share-expand-type: bandwidth everest.io/share-export-location: 192.168.1.1:/sfsturbo/ everest.io/share-source: sfs-turbo everest.io/share-volume-type: STANDARD everest.io/volume-as: subpath everest.io/volume-id: 0d773f2e-1234-1234-1234-de6a35074696 provisioner: everest-csi-provisioner reclaimPolicy: Delete volumeBindingMode: Immediate 其中: name:storageclass的名称。 mountOptions:选填字段;mount挂载参数。 everest 1.2.8以下,1.1.13以上版本仅开放对nolock参数配置,mount操作默认使用nolock参数,无需配置。nolock=false时,使用lock参数。 everest 1.2.8及以上版本支持更多参数,默认使用如下所示配置,具体请参见设置挂载参数。此处不能配置为nolock=true,会导致挂载失败。 mountOptions: - vers=3 - timeo=600 - nolock - hard everest.io/volume-as:该参数需设置为“subpath”来使用subpath模式。 everest.io/share-access-to:选填字段。subpath模式下,填写SFS Turbo资源的所在VPC的ID。 everest.io/share-expand-type:选填字段。若SFS Turbo资源存储类型为增强版(标准型增强版、性能型增强版),设置为bandwidth。 everest.io/share-export-location:挂载目录配置。由SFS Turbo共享路径和子目录组成,共享路径可至SFS Turbo服务页面查询,子路径由用户自定义,后续指定该StorageClass创建的PVC均位于该子目录下。 everest.io/share-volume-type:选填字段。填写SFS Turbo的类型。标准型为STANDARD,性能型为PERFORMANCE。对于增强型需配合“everest.io/share-expand-type”字段使用,everest.io/share-expand-type设置为“bandwidth”。 everest.io/zone:选填字段。指定SFS Turbo资源所在的可用区。 everest.io/volume-id:SFS Turbo资源的卷ID,可至SFS Turbo界面查询。 everest.io/archive-on-delete:若该参数设置为“true”,在回收策略为“Delete”时,删除PVC会将PV的原文档进行归档,归档目录的命名规则“archived-$pv名称.时间戳”。该参数设置为“false”时,会将PV对应的SFS Turbo子目录删除。默认设置为“true”,即删除PVC时进行归档。 执行kubectl create -f sfsturbo-subpath-sc.yaml。 新建一个PVC的YAML文件,sfs-turbo-test.yaml。 配置示例: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sfs-turbo-test namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 50Gi storageClassName: sfsturbo-subpath-sc volumeMode: Filesystem 其中: name: PVC的名称。 storageClassName:SC的名称。 storage:subpath模式下,调整该参数的大小不会对SFS Turbo容量进行调整。实际上,subpath类型的卷是SFS Turbo中的一个文件路径,因此在PVC中对subpath类型的卷扩容时,不会同时扩容SFS Turbo资源。 subpath子目录的容量受限于SFS Turbo资源的总容量,若SFS Turbo资源总容量不足,请您及时到SFS Turbo界面调整。 执行kubectl create -f sfs-turbo-test.yaml。
-
通过控制台动态创建SFS Turbo子目录 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”页签。单击右上角“创建存储卷声明”,在弹出的窗口中填写存储卷声明参数。 参数 描述 存储卷声明类型 本文中选择“极速文件存储”。 PVC名称 输入PVC的名称,同一命名空间下的PVC名称需唯一。 创建方式 选择“动态创建子目录”。 存储类 选择极速文件存储对应的存储类为csi-sfsturbo。 访问模式 极速文件存储类型的存储卷仅支持ReadWriteMany,表示存储卷可以被多个节点以读写方式挂载,详情请参见存储卷访问模式。 极速文件存储 单击“选择极速文件存储”,您可以在新页面中勾选满足要求的极速文件存储,并单击“确定”。 子目录 请填写子目录绝对路径,例如/a/b。 子目录回收策略 删除PVC时是否保留子目录,该参数需与PV回收策略配合使用。 保留:当PVC所绑定的PV回收策略为"Delete"时,删除PVC,PV会被删除,但PV关联的子目录会被保留。 删除:当PVC所绑定的PV回收策略为"Delete"时,删除PVC,PV及其关联的子目录均会被删除。 单击“创建”,将同时为您创建存储卷声明和存储卷。 您可以在左侧导航栏中选择“存储”,在“存储卷声明”和“存储卷”页签下查看已经创建的存储卷声明和存储卷。
-
版本记录 表8 CCE容器存储插件(Everest)版本记录 插件版本 支持的集群版本 更新特性 2.4.8 v1.21 v1.23 v1.25 v1.27 v1.28 v1.29 适配CCE v1.29集群 支持GPSSD2和ESSD2类型磁盘 支持DSS专属分布式存储 2.3.23 v1.21 v1.23 v1.25 v1.27 v1.28 支持在SFS Turbo文件系统中创建子目录 2.3.21 v1.21 v1.23 v1.25 v1.27 v1.28 修复部分问题 2.3.14 v1.21 v1.23 v1.25 v1.27 v1.28 适配CCE v1.28版本 2.1.55 v1.19 v1.21 v1.23 v1.25 v1.27 支持增程类型EVS云盘 2.1.54 v1.19 v1.21 v1.23 v1.25 v1.27 修复部分问题 2.1.53 v1.19 v1.21 v1.23 v1.25 v1.27 修复部分问题 2.1.51 v1.19 v1.21 v1.23 v1.25 v1.27 支持HCE OS 2.0系统 2.1.50 v1.19 v1.21 v1.23 v1.25 v1.27 - 2.1.46 v1.19 v1.21 v1.23 v1.25 v1.27 适配CCE v1.27版本 支持创建云硬盘类型存储卷时添加磁盘标签 2.1.38 v1.19 v1.21 v1.23 v1.25 支持插件规格与集群规格联动 2.1.30 v1.19 v1.21 v1.23 v1.25 支持插件实例AZ反亲和配置 obsfs包适配Ubuntu 22.04 2.1.13 v1.19 v1.21 v1.23 v1.25 SFS Turbo存储卷subpath PVC批创性能优化 2.1.9 v1.19 v1.21 v1.23 v1.25 支持controller优雅退出 适配CCE v1.25版本 2.0.9 v1.19 v1.21 v1.23 对 everest 部分代码及架构进行重构,改善代码架构,提高插件的可扩展性和稳定性 支持优雅退出 支持OBS进程监控 1.3.28 v1.19 v1.21 v1.23 支持优雅退出 支持OBS进程监控 1.3.22 v1.19 v1.21 v1.23 修复重复挂盘偶现挂载后读写失败的问题 1.3.20 v1.19 v1.21 v1.23 修复重复挂盘偶现挂载后读写失败的问题 1.3.17 v1.19 v1.21 v1.23 调整everest-csi-driver滚动更新的最大不可用数:从10更新到10% 自定义规格支持Pod反亲和 统计节点上可由csi插件管理的scsi卷个数的上限 支持Driver自定义资源规格部署 1.3.8 v1.23 适配CCE v1.23集群 1.3.6 v1.23 适配CCE v1.23集群 1.2.78 v1.15 v1.17 v1.19 v1.21 支持插件实例AZ反亲和配置 1.2.70 v1.15 v1.17 v1.19 v1.21 SFS Turbo存储卷subpath PVC批创性能优化 1.2.67 v1.15 v1.17 v1.19 v1.21 支持controller优雅退出 支持OBS进程监控 1.2.61 v1.15 v1.17 v1.19 v1.21 支持优雅退出 支持OBS进程监控 1.2.55 v1.15 v1.17 v1.19 v1.21 修复重复挂盘偶现挂载后读写失败的问题 1.2.53 v1.15 v1.17 v1.19 v1.21 修复重复挂盘偶现挂载后读写失败的问题 1.2.51 v1.15 v1.17 v1.19 v1.21 调整everest-csi-driver滚动更新的最大不可用数:从10更新到10% 自定义规格支持Pod反亲和 统计节点上可由csi插件管理的scsi卷个数的上限 1.2.44 v1.15 v1.17 v1.19 v1.21 EVS、OBS存储卷支持选择企业项目 OBS对象桶挂载默认不再使用enable_noobj_cache参数 1.2.42 v1.15 v1.17 v1.19 v1.21 EVS、OBS存储卷支持选择企业项目 OBS对象桶挂载默认不再使用enable_noobj_cache参数 1.2.30 v1.15 v1.17 v1.19 v1.21 CCE支持EmptyDir 1.2.28 v1.15 v1.17 v1.19 v1.21 适配CCE v1.21集群 1.2.27 v1.15 v1.17 v1.19 v1.21 支持极速型SSD(ESSD)、通用型SSD(GPSSD)类型云硬盘 1.2.13 v1.15 v1.17 v1.19 支持CCE turbo集群裸金属节点挂载云硬盘;支持EulerOS 2.10系统。 1.2.9 v1.15 v1.17 v1.19 增强PV资源生命周期维护的可靠性 支持1.19.10版本集群使用Attach/Detach Controller挂卸卷能力 提高SFS挂载稳定性 新建集群EVS默认创建类型调整为SAS 1.2.5 v1.15 v1.17 v1.19 提升挂载相关能力可靠性 优化了使用OBS存储时的认证功能,需要用户上传密钥 提高everest插件对flexvolume卷的兼容能力 提高插件运行稳定性 1.1.12 v1.15 v1.17 优化和增强everest-csi-controller组件可靠性 1.1.11 v1.15 v1.17 配置安全加固 支持挂载三方OBS存储 切换更优性能的EVS查询接口 默认快照以clone模式创建磁盘 优化和增强Attach和Detach磁盘状态检测和日志输出 增加认证过期判断可靠性 1.1.8 v1.15 v1.17 支持CCE v1.17,v1.13升级到v1.15场景支持接管Flexvolume 1.1.7 v1.15 v1.17 支持CCE v1.17,v1.13升级到v1.15场景支持接管Flexvolume
-
组件说明 表5 everest组件 容器组件 说明 资源类型 everest-csi-controller 此容器负责存储卷的创建、删除、快照、扩容、attach/detach等功能。若集群版本大于等于1.19,且插件版本为1.2.x,everest-csi-controller组件的Pod还会默认带有一个everest-localvolume-manager容器,此容器负责管理节点上的lvm存储池及localpv的创建。 Deployment everest-csi-driver 此容器负责PV的挂载、卸载、文件系统resize等功能。若插件版本为1.2.x,且集群所在区域支持node-attacher,everest-csi-driver组件的Pod还会带有一个everest-node-attacher的容器,此容器负责分布式attach EVS,该配置项在部分Region开放。 DaemonSet
-
Prometheus指标采集 everest-csi-controller通过端口3225暴露Prometheus metrics指标。您可以自建Prometheus采集器识别并通过http://{{everest-csi-controllerPodIP}}:3225/metrics路径获取everest-csi-controller相关指标。 Prometheus指标暴露仅支持Everest插件2.4.4及以上版本。 表6 关键指标说明 指标名称 指标类型 描述 Labels 举例 everest_action_result_total counter everest不同功能的调用情况 action:表示不同功能,详情请参见表7 result:表示调用成功或失败 everest_action_result_total{action="create_snapshot:disk.csi.everest.io",result="success"} 2 everest_function_duration_seconds_bucket histogram everest不同功能在不同执行时间下的次数 function:表示不同功能,详情请参见表7 everest_function_duration_seconds_bucket{function="create_snapshot:disk.csi.everest.io",le="10"} 2 everest_function_duration_seconds_sum histogram everest不同功能的调用时间总和 function:表示不同功能,详情请参见表7 everest_function_duration_seconds_sum{function="create:disk.csi.everest.io"} 24.381399053 everest_function_duration_seconds_count histogram everest不同功能的调用次数 function:表示不同功能,详情请参见表7 everest_function_duration_seconds_count{function="attach:disk.csi.everest.io"} 4 action及function表示不同 CS I驱动及其功能,表示为:{功能}:{CSI驱动}。例如create:disk.csi.everest.io,表示功能为创建卷、卷类型为云硬盘。 表7 功能说明 功能名称 功能描述 create 创建卷 delete 删除卷 attach 卷挂载 detach 卷卸载 expand 卷扩容 create_snapshot 创建卷快照 delete_snapshot 删除卷快照
-
安装插件 本插件为系统默认安装,若因特殊情况卸载后,可参照如下步骤重新安装。 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到CCE容器存储(Everest)插件,单击“安装”。 在安装插件页面,设置“规格配置”。 表1 everest插件规格配置 参数 参数说明 实例数 插件实例的副本数量。 实例数为1时插件不具备高可用能力,当插件实例所在节点异常时可能导致插件功能无法正常使用,请谨慎选择。 容器 CCE容器存储插件(Everest)包含everest-csi-controller和everest-csi-driver两个组件,详情请参见组件说明。 插件组件规格可根据您的需求自定义调整。其中,插件组件的CPU和内存申请值可根据集群节点规模和PVC数量不同进行调整,配置建议请参见表2。 非典型场景下,限制值一般估算公式如下: everest-csi-controller: CPU限制值:200及以下节点规模设置为250m;1000节点规模设置为350m;2000节点规模设置为500m。 内存限制值 = (200Mi + 节点数 * 1Mi + PVC数 * 0.2Mi)* 1.2 everest-csi-driver: CPU限制值:200及以下节点规模设置为300m;1000节点规模设置为500m;2000节点规模设置为800m。 内存限制值 = 200及以下节点规模设置为300Mi;1000节点规模设置为600Mi;2000节点规模设置为900Mi。 表2 典型场景组件限制值建议 配置场景 everest-csi-controller组件 everest-csi-driver组件 节点数量 PV/PVC数量 插件实例数 CPU(限制值同申请值) 内存(限制值同申请值) CPU(限制值同申请值) 内存(限制值同申请值) 50 1000 2 250m 600Mi 300m 300Mi 200 1000 2 250m 1Gi 300m 300Mi 1000 1000 2 350m 2Gi 500m 600Mi 1000 5000 2 450m 3Gi 500m 600Mi 2000 5000 2 550m 4Gi 800m 900Mi 2000 10000 2 650m 5Gi 800m 900Mi 设置插件支持的“参数配置”。 表3 everest插件参数配置 参数 参数说明 csi_attacher_worker_threads CCE容器存储插件(Everest)中同时处理挂EVS卷的worker数,默认值为“60”。 csi_attacher_detach_worker_threads CCE容器存储插件(Everest)中同时处理卸载EVS卷的worker数,默认值均为“60”。 volume_attaching_flow_ctrl CCE容器存储插件(Everest)在1分钟内可以挂载EVS卷的最大数量,此参数的默认值“0”表示everest插件不做挂卷限制,此时挂卷性能由底层存储资源决定。 cluster_id 集群ID。 default_vpc_id 集群所在VPC的ID。 disable_auto_mount_secret 挂载对象桶/并行文件系统时,是否允许使用默认的AKSK,默认为false。 enable_node_attacher 是否开启agent侧attacher,开启后由attacher负责处理VolumeAttachment。 flow_control 默认为空。用户无需填写。 number_of_reserved_disks 插件版本为2.3.11及以上时支持该参数,用于设置节点上预留的挂盘数,预留出部分盘位供用户自定义挂载云硬盘使用。 假设节点可挂载的云硬盘上限为20,并设置该参数值为6,则在调度挂载云硬盘的工作负载时,实际上节点可挂载的云硬盘为20-6=14。预留的6个挂盘数中,除去节点上已挂载的1块系统盘和1块数据盘后,还可以自定义挂载4块云硬盘,可以作为额外的数据盘或者作为裸盘用于创建本地存储池。 over_subscription 本地存储池(local_storage)的超分比。默认为80,若本地存储池为100G,可以超分为180G使用。 project_id 集群所属项目ID。 CCE容器存储插件(Everest)1.2.26以上版本针对大批量挂EVS卷的性能做了优化,用户可配置如下3个参数: csi_attacher_worker_threads csi_attacher_detach_worker_threads volume_attaching_flow_ctrl 上述三个参数由于存在关联性且与集群所在局点的底层存储资源限制有关,当您对大批量挂卷的性能有要求(大于500EVS卷/分钟)时,请联系客服,在指导下进行配置,否则可能会因为参数配置不合理导致出现everest插件运行不正常的情况。 设置插件实例的“调度策略”。 调度策略对于DaemonSet类型的插件实例不会生效。 设置多可用区部署或节点亲和策略时,需保证集群中存在满足调度策略的节点且拥有足够的资源,否则插件实例将无法运行。 表4 插件调度配置 参数 参数说明 多可用区部署 优先模式:优先将插件的Deployment实例调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将调度到单可用区。 均分模式:插件Deployment实例均匀调度到当前集群下各可用区,增加新的可用区后建议扩容插件实例以实现跨可用区高可用部署;均分模式限制不同可用区间插件实例数相差不超过1,单个可用区资源不足会导致后续其他实例无法调度。 强制模式:插件Deployment实例强制调度到不同可用区的节点上,如集群下节点不满足多可用区,插件实例将无法全部运行。 节点亲和 不配置:插件实例不指定节点亲和调度。 指定节点调度:指定插件实例部署的节点。若不指定,将根据集群默认调度策略进行随机调度。 指定节点池调度:指定插件实例部署的节点池。若不指定,将根据集群默认调度策略进行随机调度。 自定义亲和策略:填写期望插件部署的节点标签实现更灵活的调度策略,若不填写将根据集群默认调度策略进行随机调度。 同时设置多条自定义亲和策略时,需要保证集群中存在同时满足所有亲和策略的节点,否则插件实例将无法运行。 容忍策略 容忍策略与节点的污点能力配合使用,允许(不强制)插件的 Deployment 实例调度到带有与之匹配的污点的节点上,也可用于控制插件的 Deployment 实例所在的节点被标记污点后插件的 Deployment 实例的驱逐策略。 插件会对实例添加针对node.kubernetes.io/not-ready和node.kubernetes.io/unreachable污点的默认容忍策略,容忍时间窗为60s。 详情请参见容忍策略。 单击“安装”。
-
约束与限制 集群版本由v1.13升级到v1.15后,v1.13版本集群中的Flexvolume容器存储插件(storage-driver)能力将由v1.15的CSI插件(everest,插件版本v1.1.6及以上)接管,接管后原有功能保持不变。 插件版本为1.2.0的CCE容器存储插件(Everest)优化了使用OBS存储时的密钥认证功能,低于该版本的插件在升级完成后,需要重启集群中使用OBS存储的全部工作负载,否则工作负载使用存储的能力将受影响。 v1.15及以上版本的集群默认安装本插件,v1.13及以下版本集群创建时默认安装storage-driver插件。 Huawei Cloud EulerOS 1.1系统的节点支持2.x.x版本(2.1.9及以上)和1.2.x版本(1.2.70及以上)的CCE容器存储插件(Everest),不支持1.3.x版本的插件。
-
注意事项 重置节点功能不会重置控制节点,仅能对工作节点进行重置操作,如果重置后节点仍然不可用,请删除该节点重新创建。 重置节点将对节点操作系统进行重置安装,推荐您在重置节点之前为节点排水,将容器优雅驱逐至其他可用节点,同时建议在业务低峰期操作。 节点重置后系统盘和数据盘将会被清空,如有重要数据请事先备份。 工作节点如自行挂载了数据盘,重置完后会清除挂载信息,重置完成后请重新执行挂载行为,数据不会丢失。 节点上的工作负载实例的IP会发生变化,但是不影响容器网络通信。 云硬盘必须有剩余配额。 操作过程中,后台会把当前节点设置为不可调度状态。 节点重置会清除用户单独添加的 K8S 标签和污点(通过节点池编辑功能添加的标签、污点不会丢失),可能导致与节点有绑定关系的资源(本地存储,指定调度节点的负载等)无法提供服务。 重置节点会导致与节点关联的本地持久卷类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。重置节点时使用了本地持久存储卷的Pod会从重置的节点上驱逐,并重新创建Pod,Pod会一直处于pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。节点重置完成后,Pod可能调度到重置好的节点上,此时Pod会一直处于creating状态,因为PVC对应的底层逻辑卷已经不存在了。
-
通过控制台设置 登录CCE控制台,单击集群名称进入集群。 选择左侧导航栏的“服务”,在右侧选择“服务”页签,单击右上角“创建服务”。 设置Service参数。 Service名称:自定义Service名称,例如service-acl。 访问类型:选择“负载均衡”类型。 服务亲和:您可以根据需求选择“集群级别”或“节点级别”。二者差异说明请参见服务亲和(externalTrafficPolicy)。 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 负载均衡器: 选择对接的ELB实例,仅支持与集群在同一个VPC下的ELB实例。如果没有可选的ELB实例,请单击“创建负载均衡器”跳转到ELB控制台创建。或者选择“自动创建”一个ELB实例,配置参数请参见表1。 健康检查:默认为“全局检查”,您可根据需求进行设置。 端口配置: 协议:请根据业务的协议类型选择。 服务端口:Service使用的端口,端口范围为1-65535。 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。 访问控制: 允许所有IP访问:不设置访问控制。 白名单:仅所选IP地址组可以访问ELB地址。 黑名单:所选IP地址组无法访问ELB地址。 配置完成后,单击“确定”。
-
步骤四:插件配置 单击“下一步:插件配置”,配置插件。当前默认安装插件不支持配置,集群创建完成后,可前往“插件中心”修改配置。 可选插件配置如下: 可观测性 参数 说明 云原生监控插件 选择指标上报的 AOM 实例。如果没有可用实例,您可以单击“新建实例”进行创建。 AOM采集的基础指标免费,自定义指标将由AOM服务进行收费,详情请参见价格详情。 云原生日志采集插件 选择需要采集的日志。开启后将自动创建一个名称为k8s-log-{clusterId}的日志组,并为每个勾选的日志类型创建一个日志流。 容器日志:采集容器标准输出日志,对应的日志流名称为stdout-{clusterId}。 Kubernetes事件:采集Kubernetes日志,对应的日志流名称为event-{clusterId}。 如果不开启日志采集能力。集群创建后可以前往 CCE 日志中心页面重新开启。 LTS创建日志组免费,并每月赠送每个账号一定量免费日志采集额度,超过免费额度部分将产生费用(价格计算器)。关于如何采集自定义指标,请参见收集容器日志。
-
步骤三:插件选择 单击“下一步:插件选择”,选择创建集群时需要安装的插件。 基础功能 参数 说明 CCE 容器存储 (Everest) 默认安装CCE容器存储插件(Everest),可为集群提供基于 CSI 的容器存储能力,支持对接云上云硬盘等存储服务。 CoreDNS 域名 解析 默认安装CoreDNS域名解析插件,可为集群提供域名解析、连接云上 DNS 服务器等能力。 可观测性 参数 说明 Kubernetes Metrics Server 默认安装Kubernetes Metrics Server,为集群采集资源使用指标,例如容器CPU和内存使用率。 云原生监控插件 可选插件。勾选后自动安装云原生监控插件,为集群提供普罗指标采集能力,并将指标上报至指定的AOM实例。轻量化模式暂不支持基于自定义普罗语句的HPA,若需要相关功能,可在集群创建完成后手动安装全量的插件。 云原生日志采集插件 可选插件。勾选后自动安装云原生日志采集插件,将日志上报至 LTS 的日志采集器。集群创建完成后可在 CCE 日志中心页面对采集规则进行查询与管理。 LTS创建日志组免费,并每月赠送每个账号一定量免费日志采集额度,超过免费额度部分将产生费用(价格计算器)。关于如何采集自定义指标,请参见收集容器日志。
-
步骤二:配置集群 在“购买集群”页面,填写集群配置参数。 基础配置 参数 说明 集群类型 选择“CCE Autopilot集群”。 关于集群类型差异详情,请参见CCE Autopilot、CCE Standard、 CCE Turbo 的对比。 集群名称 请输入集群名称,同一账号下集群不可重名。 集群版本 选择集群使用的Kubernetes版本。 网络配置 参数 说明 虚拟私有云 选择集群所在的 虚拟私有云VPC ,如没有可选项可以单击右侧“新建虚拟私有云”创建。集群创建后不可修改。 容器子网 选择容器所在子网,如没有可选项可以单击右侧“新建子网”创建。容器子网决定了集群下容器的数量上限,集群创建后支持新增子网。 服务网段 同一集群下容器互相访问时使用的Service资源的网段。决定了Service资源的上限。 集群创建后不可修改。 镜像访问 为确保您的集群节点可以从 容器镜像服务 中拉取镜像,默认使用所选的VPC中已有的终端节点,否则系统将为您新建SWR和OBS的终端节点。 终端节点将产生一定费用,详情请参见价格计算器。 配置SNAT 开启后您的集群可以通过NAT网关访问公网,默认使用所选的VPC中已有的NAT网关,否则系统将会为您自动创建一个默认规格的NAT网关并绑定弹性公网IP,自动配置SNAT规则。 使用NAT网关将产生一定费用,详情请参见价格计算器。 高级配置(可选) 参数 说明 资源标签 通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。 您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。具体请参见创建预定义标签。 KEY字符集规范 key不能为空,长度1~128个半角字符 _sys_开头属于系统标签,租户不能输入 可用 UTF-8 格式表示的字母(包含中文)、数字和空格,以及以下字符: _ . : / = + - @ 建议正则:^((?!_sys_)[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)$ VALUE字符集规范 VALUE长度 0~255 可用 UTF-8 格式表示的字母(包含中文)、数字和空格,以及以下字符: _ . : / = + - @ 建议正则:^([\p{L}\p{Z}\p{N}_.:\/=+\-@]*)$ 资源标签值可以为空(empty or null) 预定义标签值不可以为空 集群描述 支持200个字符。
-
约束与限制 创建节点过程中会使用域名方式从OBS下载软件包,需要能够使用云上内网DNS解析OBS域名,否则会导致创建不成功。为此,节点所在子网的DNS服务器地址需要配置为内网 DNS地址 ,从而使得节点使用内网DNS。在创建子网时DNS默认配置为内网DNS,如果您修改过子网的DNS,请务必确保子网下的DNS服务器可以解析OBS服务域名,否则需要将DNS改成内网DNS。 集群一旦创建以后,不支持变更以下项: 变更集群类型。 变更集群的网络配置,如所在的虚拟私有云VPC、容器子网、服务网段、kube-proxy代理模式(即服务转发模式)。 使用Autopilot集群时需注意周边资源的配额限制,请您预留足够的配额,每个集群占用的资源详情如下表。 服务 配额项 最小占用量 说明 配额申请 云容器引擎 集群 1 一个Region下每个账号可创建的集群总数限制为50个。 我的配额 虚拟私有云 VPC 1/集群 一个Region下每个账号可创建的VPC限制为5个。 子网 1/集群 一个Region下每个账号可创建的子网限制为50个。 安全组 2/集群 一个Region下每个账号可创建的安全组限制为100个。 安全组规则 10/集群 一个Region下每个账号可创建的安全组规则限制为1000个。 VPC终端节点 终端节点 3/集群 一个Region下每个账号可创建的终端节点限制为50个。 云解析服务 DNS内网域名 2/集群 一个Region下每个账号可创建的DNS内网域名限制为50个。 DNS记录集 6/集群 一个Region下每个账号可创建的DNS记录集限制为500个。
-
应用扩缩容优先级策略介绍 开启应用扩缩容优先级策略,将会在集群中新增两类CRD资源,分别为Balancer与BalancerPolicyTemplate,并创建默认的扩缩容优先级策略,详情请参见默认应用扩缩容优先级策略。Volcano插件根据BalancerPolicyTemplate来获取各个节点的优先级,以控制应用扩容时Pod调度的优先级,同时volcano插件基于Balancer和BalancerPolicyTemplate来设置应用缩容时的优先级。 BalancerPolicyTemplate CRD资源用来进行优先级策略定义。以默认扩缩容优先级策略为例,默认BalancerPolicyTemplate CR资源将会把包周期节点的优先级设置为最高,按需计费节点次之,virtual-kubelet节点(弹性至CCI)设置为最低。 BalancerPolicyTemplate CR资源不支持更新操作。 Balancer CRD资源用来申明扩缩容优先级的作用范围。创建Balancer CR资源时,可以指定某个命名空间下的工作负载作为生效范围,也可以具体指定某个Deployment或者某个ReplicaSet工作负载作为生效范围。 一个Balancer CR资源对应一个BalancerPolicyTemplate CR资源,两者结合共同申明哪些工作负载使用了哪些优先级策略。 插件默认的扩缩容优先级策略通过BalancerPolicyTemplate对象将包周期节点、按需计费节点、virtual-kubelet节点(弹性至CCI)三种类型分成不同的优先级,扩容时,volcano在调度新增Pod时将会考虑这些优先级,优先将Pod调度到优先级高的包周期节点上。 通过Balancer和BalancerPolicyTemplate对象,Volcano插件对Balancer作用范围内的Pod,根据BalancerPolicyTemplate对象定义的优先级分别打上以下注解: openvessel.io/workload-balancer-score:表示Pod的分值,对于高优先级节点上的Pod,其对应的分值也相对较大。 autoscaling.volcano.sh/dominated-by-balancer:表示当前Pod受哪个Balancer对象控制,缩容时会优先缩容分值低的Pod。 如果用户原先的Pod已经存在社区支持的controller.kubernetes.io/pod-deletion-cost注解,那么缩容时将会按照该值定义的优先级来进行缩容。当两个Pod对应controller.kubernetes.io/pod-deletion-cost值相同时,才会按照openvessel.io/workload-balancer-score注解定义的优先级进行缩容。
-
默认应用扩缩容优先级策略 使用默认应用扩缩容优先级策略的情况下,集群中存在两个默认CR资源: Balancer CRD对应的CR资源 apiVersion: autoscaling.volcano.sh/v1alpha1 kind: Balancer metadata: name: default-balancer spec: balancerPolicyTemplateName: default-balancerpolicytemplate targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists weight: 10 表1 Balancer对象关键参数说明 字段 含义 类型 备注 metadata.name 名称 String 必填字段。 spec. balancerPolicyTemplateName 优先级策略名称 String 必填字段。值为集群中相应BalancerPolicyTemplate CR资源名。 spec.targets 优先级策略作用范围 Slice 必填字段。举例: 针对default命名空间下的应用生效 spec: targets: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: default 针对default、other、another多个命名空间下的应用生效 spec: targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: In values: - default - other - another 针对所有命名空间下的应用生效 spec: targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists 只针对名为xxx-xxx-xxx,类型为Deployment的应用生效 spec: targets: - objectSelectors: - name: xxx-xxx-xxx kind: Deployment 只针对命名空间为default,名为xxx-xxx-xxx类型为Deployment的应用生效 spec: targets: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: default objectSelectors: - name: xxx-xxx-xxx kind: Deployment spec.weight 优先级策略权重 int32 必填字段。在集群存在多个Balancer 对象资源情况下,某个应用可能存在于多个Balancer对象作用范围的交集中,此时选择weight值大的Balancer对象生效。 BalancerPolicyTemplate CRD对应的CR资源 apiVersion: autoscaling.volcano.sh/v1alpha1 kind: BalancerPolicyTemplate metadata: name: default-balancerpolicytemplate spec: policy: policyName: Priority priorities: priorityGroups: - priority: 10 requirements: - key: node.cce.io/billing-mode operator: In values: - post-paid - priority: 100 requirements: - key: node.cce.io/billing-mode operator: In values: - pre-paid - priority: 1 requirements: - key: kubernetes.io/role operator: In values: - virtual-kubelet - bursting 表2 BalancerPolicyTemplate对象关键参数说明 字段 含义 类型 备注 metadata.name 名称 String 必填字段。 spec.policy 优先级策略内容 Struct 必填字段。 spec.policy.policyname 优先级策略名 String 必填字段。当前只支持名为“Priority”的优先级策略。 spec.policy.priorities. priorityGroups 优先级策略中定义的具体优先级 Slice 必填字段。举例: 将包周期节点的优先级设置为100 priorityGroups: - priority: 100 requirements: - key: node.cce.io/billing-mode operator: In values: - pre-paid 将按需计费节点的优先级设置为10 priorityGroups: - priority: 10 requirements: - key: node.cce.io/billing-mode operator: In values: - post-paid 将virtual-kubelet/bursting节点的优先级设置为1 priorityGroups: - priority: 1 requirements: - key: kubernetes.io/role operator: In values: - virtual-kubelet - bursting
-
配置应用扩缩容优先级策略 开启应用扩缩容优先级策略开关并成功安装Volcano插件后,会在集群中创建默认扩缩容优先级策略。 获取默认Balancer CR资源。 # kubectl get balancer default-balancer -oyaml apiVersion: autoscaling.volcano.sh/v1alpha1 kind: Balancer metadata: name: default-balancer spec: balancerPolicyTemplateName: default-balancerpolicytemplate targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists weight: 10 获取默认BalancerPolicyTemplate CR资源。 # kubectl get balancerpolicytemplate default-balancerpolicytemplate -oyaml apiVersion: autoscaling.volcano.sh/v1alpha1 kind: BalancerPolicyTemplate metadata: name: default-balancerpolicytemplate spec: policy: policyName: Priority priorities: priorityGroups: - priority: 10 requirements: - key: node.cce.io/billing-mode operator: In values: - post-paid - priority: 100 requirements: - key: node.cce.io/billing-mode operator: In values: - pre-paid - priority: 1 requirements: - key: kubernetes.io/role operator: In values: - virtual-kubelet - bursting 具体参数含义请参见默认应用扩缩容优先级策略。 部署工作负载,设定实例数为1。 当前应用的Pod将会优先调度到包周期节点上。 apiVersion: apps/v1 kind: Deployment metadata: name: balancer-test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' #如果集群资源不足时,支持将Pod部署到CCI集群 spec: replicas: 1 selector: matchLabels: app: balancer-test template: labels: app: balancer-test spec: containers: image: nginx:latest imagePullPolicy: IfNotPresent name: container-1 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi schedulerName: volcano 调整工作负载实例数为5。 当前应用的Pod将会优先调度到包周期节点上。在包周期节点资源不足情况下,优先调度到按需计费节点上。在按需计费节点资源不足情况下,优先调度到virtual-kubelet节点(弹性至CCI)。 apiVersion: apps/v1 kind: Deployment metadata: name: balancer-test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' #如果集群资源不足时,支持将Pod部署到CCI集群 spec: replicas: 5 selector: matchLabels: app: balancer-test template: labels: app: balancer-test spec: containers: image: nginx:latest imagePullPolicy: IfNotPresent name: container-1 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi schedulerName: volcano 查看各种类型节点上Pod的分值。 包周期节点上的Pod。 apiVersion: v1 kind: Pod metadata: annotations: autoscaling.volcano.sh/dominated-by-balancer: default-balancer #当前Pod通过名为default-balancer的Balancer CR资源控制扩缩优先级 openvessel.io/workload-balancer-score: "100" #当前包周期节点对应的优先级,也代表着Pod的分值 ... nodeName: 192.168.20.100 #包周期节点 按需计费节点上的Pod。 apiVersion: v1 kind: Pod metadata: annotations: autoscaling.volcano.sh/dominated-by-balancer: default-balancer #当前Pod通过名为default-balancer的Balancer CR资源控制扩缩优先级 openvessel.io/workload-balancer-score "10" #当前按需计费节点对应的优先级,也代表着Pod的分值 ... nodeName: 192.168.20.196 #按需计费节点 virtual-kubelet节点(弹性至CCI)的Pod。 apiVersion: v1 kind: Pod metadata: annotations: autoscaling.volcano.sh/dominated-by-balancer: default-balancer #当前Pod通过名为default-balancer的Balancer CR资源控制扩缩优先级 openvessel.io/workload-balancer-score: "1" #当前virtual-kubelet节点对应的优先级,也代表着pod的分值 ... nodeName: virtual-kubelet #virtual-kubelet节点 逐步进行工作负载的缩容操作,调小实例数。 virtual-kubelet节点(弹性至CCI)的Pod将优先被删除,其次为按需计费节点上的Pod,最后为包周期节点上的Pod。
-
自定义应用扩缩容优先级策略 BalancerPolicyTemplate 资源用来进行优先级策略定义,如果用户需要自定义应用扩缩容优先级策略,则需要针对其内容进行修改。 如果存在多个BalancerPolicyTemplate资源,扩缩策略执行结果将受到这些资源对象的共同作用。因此,如果用户不存在默认扩缩容优先级策略的应用场景,可以执行如下命令对默认优先级策略进行删除。 kubectl delete balancerpolicytemplate default-balancerpolicytemplate 以“扩容时优先将工作负载调度到HCE2.0操作系统的节点,其次调度到欧拉操作系统的节点;缩容时优先删除欧拉操作系统节点上的工作负载,其次删除HCE2.0操作系统上的工作负载”为例: 编写新BalancerPolicyTemplate 资源对象。 vim new-balancerpolicytemplate.yaml 内容如下: apiVersion: autoscaling.volcano.sh/v1alpha1 kind: BalancerPolicyTemplate metadata: name: new-balancerpolicytemplate spec: policy: policyName: Priority priorities: priorityGroups: - priority: 10 # 设置欧拉操作系统节点优先级为10 requirements: - key: os.name # 节点操作系统标签 operator: In values: - EulerOS_2.0_SP9x86_64 # 可能涉及操作系统的小版本号,用户可以根据自身场景,任意添加 - priority: 100 # 设置HCE2.0操作系统节点优先级为100 requirements: - key: os.name # 节点操作系统标签 operator: In values: - Huawei_Cloud_EulerOS_2.0_x86_64 创建新BalancerPolicyTemplate资源对象。 kubectl create -f new-balancerpolicytemplate.yaml 修改default-balancer对象内容,也可以按需进行新建balancer对象 kubectl edit balancer default-balancer 修改内容如下: apiVersion: autoscaling.volcano.sh/v1alpha1 kind: Balancer metadata: name: default-balancer spec: balancerPolicyTemplateName: new-balancerpolicytemplate targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists weight: 10 查看各个Pod的注解中openvessel.io/workload-balancer-score对应的值是否满足预期。 EulerOS节点上Pod的openvessel.io/workload-balancer-score注解对应值是10;HCE2.0节点上的pod 的openvessel.io/workload-balancer-score注解对应值是100。
-
约束与限制 集群版本需1.15及以上。 v1.19及以上版本集群支持纳管鲲鹏节点。 纳管节点支持ECS(弹性云服务器)节点、BMS(裸金属服务器)节点、DeH(专属主机)节点,暂不支持HECS(云耀云服务器)节点。 集群开启IPv6后,只支持纳管所在的子网开启了IPv6功能的节点;集群未开启IPv6,只支持纳管所在的子网未开启IPv6功能的节点。 原虚拟机节点创建时若已设置密码或密钥,纳管时您需要重新设置密码或密钥,原有的密码或密钥将会失效。 CCE Turbo集群要求节点支持Sub-ENI或可以绑定至少16张ENI网卡,具体规格请参见创建节点时控制台上可以选择的节点规格。 纳管BMS节点时,暂不支持使用Ubuntu系统。 纳管节点时已分区的数据盘会被忽略,您需要保证节点至少有一个未分区且符合规格的数据盘。
-
前提条件 支持纳管符合如下条件的云服务器: 待纳管节点必须状态为“运行中”,未被其他集群所使用,且不携带 CCE 专属节点标签CCE-Dynamic-Provisioning-Node。 待纳管节点需与集群在同一虚拟私有云内(若集群版本低于1.13.10,纳管节点还需要与CCE集群在同一子网内)。 待纳管节点需挂载数据盘,可使用本地盘(磁盘增强型实例)或至少挂载一块20GiB及以上的数据盘,且不存在10GiB以下的数据盘。关于节点挂载数据盘的操作说明,请参考新增磁盘。 待纳管节点规格要求:CPU必须2核及以上,内存必须4GiB及以上,网卡有且仅能有一个。 如果使用了企业项目,则待纳管节点需要和集群在同一企业项目下,不然在纳管时会识别不到资源,导致无法纳管。从v1.21.15-r0、v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0集群版本开始,待纳管节点无需和集群在同一企业项目下,纳管后节点的企业项目保持不变。 批量纳管仅支持添加相同规格、相同可用区、相同数据盘配置的云服务器。
-
操作步骤 登录CCE控制台,进入要纳管节点的集群。 在集群控制台左侧导航栏中选择“节点管理”,切换至“节点”页签并单击右上角的“纳管节点”。 配置节点参数。 节点配置 表1 节点配置参数 参数 参数说明 节点规格 单击添加已有云服务器,选择要纳管的服务器。 可以选择多台云服务器批量纳管,但批量纳管仅支持添加相同规格、相同可用区、相同数据盘配置的云服务器。 如果云服务器有多块数据盘,需要选择其中一块作为供容器运行时和Kubelet组件使用。 容器引擎 CCE支持Docker和Containerd容器引擎,不同的集群类型、集群版本、操作系统可能导致支持的容器引擎类型不同,请根据控制台呈现进行选择。具体场景请参见节点操作系统与容器引擎对应关系。 操作系统 选择操作系统类型,不同类型节点支持的操作系统有所不同。 公共镜像:请选择节点对应的操作系统。 私有镜像:支持使用私有镜像,私有镜像制作方法具体请参见制作CCE节点 自定义镜像 。 说明: 由于业务容器运行时共享节点的内核及底层调用,为保证兼容性,建议节点的操作系统选择与最终业务容器镜像相同或接近的Linux发行版本。 安全加固 等保加固会对身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范进行检查并加固。详情请参见Huawei Cloud EulerOS 2.0等保2.0三级版镜像概述。 登录方式 密码 用户名默认为“root”,请输入登录节点的密码,并确认密码。 登录节点时需要使用该密码,请妥善管理密码,系统无法获取您设置的密码内容。 密钥对 选择用于登录本节点的密钥对,支持选择共享密钥。 密钥对用于远程登录节点时的身份认证。若没有密钥对,可单击选项框右侧的“创建密钥对”来新建,创建密钥对操作步骤请参见创建密钥对。 存储配置 配置节点云服务器上的存储资源,方便节点上的容器软件与容器应用使用。 表2 存储配置参数 参数 参数说明 系统盘 直接使用云服务器的系统盘。 数据盘 至少需要一块数据盘,供容器运行时和Kubelet组件使用,该数据盘不能被删除卸载,否则会导致节点不可用。 单击后方的“展开高级设置”可设置数据盘空间分配,对数据盘上存在的容器引擎、镜像、临时存储等进行空间划分,避免因磁盘空间不足导致业务异常。数据盘空间分配详细说明请参见数据盘空间分配说明。 其他数据盘默认情况直接创建为裸盘,不做任何处理。您也可以展开高级配置,将磁盘挂载到指定目录。另外还可以作为持久存储卷或临时存储卷,具体使用请参见本地持久卷和本地临时卷。 高级配置 表3 高级配置参数 参数 参数说明 资源标签 通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。 您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。具体请参见创建预定义标签。 CCE服务会自动帮您创建CCE-Dynamic-Provisioning-Node=节点id的标签。 K8S标签(Labels) 单击“添加标签”可以设置附加到Kubernetes 对象(比如Pods)上的键值对,最多可以添加20条标签。 使用该标签可区分不同节点,可结合工作负载的亲和能力实现容器Pod调度到指定节点的功能。详细请参见Labels and Selectors。 K8S污点(Taints) 默认为空。支持给节点加污点来设置反亲和性,每个节点最多配置20条污点,每条污点包含以下3个参数: Key:必须以字母或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符;另外可以使用DNS子域作为前缀。 Value:必须以字符或数字开头,可以包含字母、数字、连字符、下划线和点,最长63个字符。 Effect:只可选NoSchedule,PreferNoSchedule或NoExecute。 须知: 污点配置时需要配合Pod的toleration使用,否则可能导致扩容失败或者Pod无法调度到扩容节点。 节点池创建后可单击列表项的“编辑”修改配置,修改后将同步到节点池下的已有节点。 最大实例数 节点最大可以正常运行的实例数(Pod),该数量包含系统默认实例,取值范围为16~256。 该设置的目的为防止节点因管理过多实例而负载过重,请根据您的业务需要进行设置。 安装前执行脚本 请输入脚本命令,命令中不能包含中文字符。脚本命令会进行Base64转码。安装前/后执行脚本统一计算字符,转码后的字符总数不能超过10240。 脚本将在Kubernetes软件安装前执行,可能导致Kubernetes软件无法正常安装,需谨慎使用。 安装后执行脚本 请输入脚本命令,命令中不能包含中文字符。脚本命令会进行Base64转码。安装前/后执行脚本统一计算字符,转码后的字符总数不能超过10240。 脚本将在Kubernetes软件安装后执行,不影响Kubernetes软件安装。 K8s节点名称 K8s节点名称,即节点YAML文件中的“metadata.labels.kubernetes.io/hostname”标签值,支持以下两种配置。 与节点私有IP保持一致:默认为节点私有IP。 与云服务器名称保持一致:将节点配置中配置的自定义云服务器名称作为K8s节点名称。由于云服务器名称可能存在重名,为避免K8s节点名称冲突,系统将在名称后自动添加五位随机字符后缀。 须知: 该功能在集群版本为v1.23.4-r0及以上时支持配置。 仅支持在创建(纳管)时将节点云服务器名称指定为K8s节点名称。创建(纳管)完成后,K8s节点名称无法修改,详情请参见云服务器名称、节点名称与K8s节点名称说明。 如您在创建(纳管)选择将云服务器名称指定为K8s节点名称, 集群已有节点将仍使用私有IP作为K8s节点名称。 该场景下,存在部分K8s节点名称与私有IP不一致的情况,对于业务场景中将私有IP和K8s节点名称混用的场景,需做好适配。例如,在设置节点亲和调度时,不能将节点私有IP作为节点名称配置调度策略。 如您需要将已有节点的K8s节点名称统一为“与云服务器名称保持一致”,您可将已有节点从集群中移除,并重新纳管。执行节点移除、纳管操作前,请您充分了解节点移除及纳管可能带来的业务影响。 单击“下一步:规格确认”,确认已阅读并知晓华为云的云容器引擎服务声明,并单击“提交”。
-
操作场景 CCE集群支持两种添加节点的方式:创建节点和纳管节点,纳管节点是指将“已有的ECS/BMS加入到CCE集群中”,所纳管节点的计费模式支持“按需计费”和“包年/包月”两种类型。 纳管时,会将所选弹性云服务器的操作系统重置为CCE提供的标准镜像,以确保节点的稳定性,请选择操作系统及重置后的登录方式。 所选弹性云服务器挂载的系统盘、数据盘都会在纳管时清理LVM信息,包括卷组(VG)、逻辑卷(LV)、物理卷(PV),请确保信息已备份。 纳管过程中,请勿在弹性云服务器控制台对所选虚拟机做任何操作。
-
使用HTTP/2 表12 使用HTTP/2注解 参数 类型 描述 支持的集群版本 kubernetes.io/elb.http2-enable String 表示HTTP/2功能的开启状态。开启后,可提升客户端与LB间的访问性能,但LB与后端服务器间仍采用HTTP1.X协议。 取值范围: true:开启HTTP/2功能; false:关闭HTTP/2功能(默认为关闭状态)。 注意:只有当监听器的协议为HTTPS时,才支持开启或关闭HTTP/2功能。当监听器的协议为HTTP时,该字段无效,默认将其设置为false。 v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本 具体使用场景和说明请参见Service配置HTTP/2。
-
开启gzip压缩 表13 开启gzip压缩注解 参数 类型 描述 支持的集群版本 kubernetes.io/elb.gzip-enabled String ELB支持开启数据压缩,通过数据压缩可缩小传输文件大小,提升文件传输效率减少带宽消耗。 开启将对特定文件类型进行压缩,关闭则不会对任何文件类型进行压缩。在默认情况下数据压缩为关闭。 支持的压缩类型如下: Brotli支持压缩所有类型。 Gzip支持压缩的类型包括:text/xml text/plain text/css application/javascript application/x-javascript application/rss+xml application/atom+xml application/xml application/json。 仅独享型ELB的HTTP/HTTPS类型监听器支持配置。删除开启数据压缩高级配置或对应的annotation,将不会对ELB侧配置进行修改。 v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本 具体使用场景和说明请参见Service配置gzip数据压缩。
-
设置超时时间 表10 设置超时时间注解 参数 类型 描述 支持的集群版本 kubernetes.io/elb.keepalive_timeout String 客户端连接空闲超时时间,在超过keepalive_timeout时长一直没有请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。 取值: 若为TCP协议,取值范围为(10-4000s)默认值为300s。 若为HTTP/HTTPS/TERMINATED_HTTPS监听器,取值范围为(0-4000s)默认值为60s。 UDP监听器不支持此字段。 独享型ELB:v1.19.16-r30、v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上 共享型ELB:v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本 kubernetes.io/elb.client_timeout String 等待客户端请求超时时间,包括两种情况: 读取整个客户端请求头的超时时长:如果客户端未在超时时长内发送完整个请求头,则请求将被中断。 两个连续body体的数据包到达LB的时间间隔,超出client_timeout将会断开连接。 取值范围为1-300s,默认值为60s。 v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本 kubernetes.io/elb.member_timeout String 等待后端服务器响应超时时间。请求转发后端服务器后,等待超过member_timeout时长没有响应,负载均衡将终止等待,并返回 HTTP504错误码。 取值范围为1-300s,默认值为60s。 v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本 具体使用场景和说明请参见Service配置超时时间。
-
自动创建ELB的参数说明 表14 elb.autocreate字段数据结构说明 参数 是否必填 参数类型 描述 name 否 String 自动创建的负载均衡的名称。 取值范围:只能由中文、英文字母、数字、下划线、中划线、点组成,且长度范围为1-64个字符。 默认名称:cce-lb+service.UID type 否 String 负载均衡实例网络类型,公网或者私网。 public:公网型负载均衡 inner:私网型负载均衡 默认类型:inner bandwidth_name 公网型负载均衡必填 String 带宽的名称,默认值为:cce-bandwidth-******。 取值范围:只能由中文、英文字母、数字、下划线、中划线、点组成,且长度范围为1-64个字符。 bandwidth_chargemode 否 String 带宽付费模式。 bandwidth:按带宽 traffic:按流量 默认类型:bandwidth bandwidth_size 公网型负载均衡必填 Integer 带宽大小,默认1Mbit/s~2000Mbit/s,请根据Region带宽支持范围设置。 调整带宽时的最小单位会根据带宽范围不同存在差异。 小于等于300Mbit/s:默认最小单位为1Mbit/s。 300Mbit/s~1000Mbit/s:默认最小单位为50Mbit/s。 大于1000Mbit/s:默认最小单位为500Mbit/s。 bandwidth_sharetype 公网型负载均衡必填 String 带宽共享方式。 PER:独享带宽 eip_type 公网型负载均衡必填 String 弹性公网IP类型。 5_telcom:电信 5_union:联通 5_bgp:全动态BGP 5_sbgp:静态BGP 具体类型以各区域配置为准,详情请参见弹性公网IP控制台。 vip_subnet_cidr_id 否 String 指定ELB所在的子网,该子网必须属于集群所在的VPC。 如不指定,则ELB与集群在同一个子网。 仅v1.21及以上版本的集群支持指定该字段。 vip_address 否 String 负载均衡器的内网IP。仅支持指定IPv4地址,不支持指定IPv6地址。 该IP必须为ELB所在子网网段中的IP。若不指定,自动从ELB所在子网网段中生成一个IP地址。 仅v1.23.11-r0、v1.25.6-r0、v1.27.3-r0及以上版本集群支持指定该字段。 available_zone 是 Array of strings 负载均衡所在可用区。 可以通过查询可用区列表获取所有支持的可用区。 独享型负载均衡器独有字段。 l4_flavor_name 是 String 四层负载均衡实例规格名称。 可以通过查询规格列表获取所有支持的类型。 弹性规格:适用于业务用量波动较大的场景,按实际使用量收取每小时使用的容量费用。v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上版本集群支持使用弹性规格。 固定规格:适用于业务用量较为稳定的场景,按固定规格折算收取每小时使用的容量费用。 独享型负载均衡器独有字段。 l7_flavor_name 否 String 七层负载均衡实例规格名称。 可以通过查询规格列表获取所有支持的类型。 弹性规格:适用于业务用量波动较大的场景,按实际使用量收取每小时使用的容量费用。v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上版本集群支持使用弹性规格。 固定规格:适用于业务用量较为稳定的场景,按固定规格折算收取每小时使用的容量费用。 独享型负载均衡器独有字段,必须与l4_flavor_name对应规格的类型一致,即都为弹性规格或都为固定规格。 elb_virsubnet_ids 否 Array of strings 负载均衡后端所在子网,不填默认为集群子网。不同实例规格将占用不同数量子网IP,不建议使用其他资源(如集群,节点等)的子网网段。 独享型负载均衡器独有字段。 示例: "elb_virsubnet_ids": [ "14567f27-8ae4-42b8-ae47-9f847a4690dd" ] ipv6_vip_virsubnet_id 否 String 双栈类型负载均衡器所在子网的IPv6网络ID,需要对应的子网开启IPv6,仅使用双栈集群时需填写。 独享型负载均衡器独有字段。 表15 elb.health-check-option字段数据结构说明 参数 是否必填 参数类型 描述 delay 否 String 健康检查间隔(秒)。 默认值:5,取值范围:1-50 timeout 否 String 健康检查的超时时间(秒)。 默认值:10,取值范围1-50 max_retries 否 String 健康检查的最大重试次数。 默认值:3,取值范围1-10 protocol 否 String 健康检查的协议。 取值范围:“TCP”或者“HTTP” path 否 String 健康检查的URL,协议是“HTTP”时配置。 默认值:“/” 取值范围:1-80字符 表16 elb.health-check-options字段数据结构说明 参数 是否必填 参数类型 描述 target_service_port 是 String spec.ports添加健康检查的目标端口,由协议、端口号组成,如:TCP:80 monitor_port 否 String 重新指定的健康检查端口,不指定时默认使用业务端口。 说明: 请确保该端口在Pod所在节点已被监听,否则会影响健康检查结果。 delay 否 String 健康检查间隔(秒) 默认值:5,取值范围:1-50 timeout 否 String 健康检查的超时时间(秒) 默认值:10,取值范围1-50 max_retries 否 String 健康检查的最大重试次数 默认值:3,取值范围1-10 protocol 否 String 健康检查的协议 默认值:取关联服务的协议 取值范围:“TCP”、“UDP”或者“HTTP” path 否 String 健康检查的URL,协议是“HTTP”时需要配置 默认值:“/” 取值范围:1-80字符 expected_codes 否 String 期望响应状态码,仅v1.19.16-r50、v1.21.11-r10、v1.23.9-r10、v1.25.4-r10、v1.27.1-r10及以上版本的集群支持。 取值: 单值:单个返回码,例如"200"。 列表:多个特定返回码,例如"200,202"。 区间:一个返回码区间,例如"200-204"。 默认值:200,取值范围1-64个字符 仅支持HTTP设置该字段,其他协议设置不会生效。 表17 elb.session-affinity-option字段数据结构说明 参数 是否必填 参数类型 描述 persistence_timeout 是 String 当elb.session-affinity-mode是“SOURCE_IP”时生效,设置会话保持的超时时间(分钟)。 默认值为:"60",取值范围:1-60。
-
版本记录 表3 CCE容器网络扩展指标插件版本记录 插件版本 支持的集群版本 更新特性 1.4.5 v1.23 v1.25 v1.27 v1.28 v1.29 支持普通容器Pod粒度的UDP、TCP drop、TCP connect fail监控 支持普通容器flow粒度的UDP、TCP drop监控 支持HCE 2.0 x86和HCE 2.0 ARM 支持CCE v1.29集群 1.3.10 v1.23 v1.25 v1.27 v1.28 修复部分问题 1.3.8 v1.23 v1.25 v1.27 v1.28 支持普通容器pod粒度的IP和TCP监控 支持普通容器flow粒度的IP和TCP监控 支持CCE v1.27集群 支持CCE v1.28集群 1.2.27 v1.19 v1.21 v1.23 v1.25 - 1.2.7 v1.19 v1.21 v1.23 v1.25 - 1.2.5 v1.19 v1.21 v1.23 v1.25 - 1.2.4 v1.19 v1.21 v1.23 v1.25 增加不支持EulerOS以外操作系统描述 1.2.2 v1.19 v1.21 v1.23 v1.25 本地Pod VPC网络健康检查 1.1.8 v1.19 v1.21 v1.23 v1.25 适配CCE v1.25集群 1.1.6 v1.19 v1.21 v1.23 - 1.1.5 v1.19 v1.21 v1.23 liveness健康检查优化 1.1.2 v1.19 v1.21 v1.23 支持操作系统类型宽匹配 1.0.1 v1.19 v1.21 支持流量统计数据持久化和本地socket通信.
-
下发监控任务 MonitorPolicy创建的模板如下: apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task #监控任务名 namespace: kube-system #必填,namespace必须为kube-system spec: selector: #选填,配置dolphin插件监控的后端,形如labelSelector格式,默认将监控本节点所有容器 matchLabels: app: nginx matchExpressions: - key: app operator: In values: - nginx podLabel: [app] #选填,用户标签 ip4Tx: #选填,ipv4发送报文数和发送字节数这两个指标的开关,默认不开 enable: true ip4Rx: #选填,ipv4接收报文数和接收字节数这两个指标的开关,默认不开 enable: true ip4TxInternet: #选填,ipv4发送公网报文数和发送公网字节数这两个指标的开关,默认不开 enable: true healthCheck: #选填,本地节点 Pod 健康检查任务中最近一次健康检查是否健康、健康检查总健康&不健康次数这三个指标开关,默认不开 enable: true # true false failureThreshold: 3 #选填,健康检查不健康判定失败次数,默认1次健康检查失败即判定不健康 periodSeconds: 5 #选填,健康检查任务检查间隔时间,单位秒,默认60 command: "" #选填,健康检查任务检查命令,支持:ping、arping、curl,默认 ping ipFamilies: [""] #选填,健康检查IP地址族,支持:ipv4,默认ipv4 port: 80 #选填,使用curl时必选,端口号 path: "" #选填,使用curl时必选,http api 路径 monitor: ip: ipReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 ipSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcp: tcpReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpRetrans: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpRtt: aggregateType: flow #选填,支持填写"flow",表示流粒度监控,单位:微秒 tcpNewConnection: aggregateType: pod #选填,支持填写"pod",表示pod粒度监控 tcpDrop: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpConnectionFailure: aggregateType: pod #选填,支持填写"pod",表示pod粒度监控 udp: udpReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 udpSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 用户标签PodLabel:可输入多个Pod的label标签,以逗号分隔,如[app, version]。 标签需符合以下规则,对应正则表达式为(^[a-zA-Z_]$)|(^([a-zA-Z][a-zA-Z0-9_]|_[a-zA-Z0-9])([a-zA-Z0-9_]){0,254}$): 支持输入最多5个标签(1.3.4版本后最多支持10个标签),单个标签长度最长256个字符。 不能以数字和双下划线__开头。 单个标签格式需符合A-Za-z_0-9。 用户可以按照上述格式对监控任务进行创建、修改、及删除,当前仅支持最多10个监控任务的创建,且多个监控任务匹配到同一个监控后端时,每一个监控后端将会产生监控任务数量的监控指标。 修改或删除监控任务,都将导致丢失原有监控任务所采集的监控数据,请谨慎操作。 用户卸载插件后,用户之前配置的监控任务MonitorPolicy将随着插件卸载一并销毁。 场景化示例如下: 以下示例将监控节点上满足app=nginx的labelselector的所有Pod,生成三个健康检查指标,默认使用ping方式检测本地Pod,若监控的容器携带test及app这两个标签,将在监控指标上携带对应label的key-value信息,否则对应label的value为“not found”。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task namespace: kube-system spec: selector: matchLabels: app: nginx podLabel: [test, app] healthCheck: enable: true failureThreshold: 3 periodSeconds: 5 以下示例将监控节点上满足app=nginx的labelselector的所有Pod,生成三个健康检查指标,自定义curl方式(此处curl只考虑网络连通性,不论程序返回的http code是什么,只要网络能连通就认为Pod是健康的)。若监控的容器携带test及app这两个标签,将在监控指标上携带对应label的key-value信息,否则对应label的value为“not found”。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task namespace: kube-system spec: selector: matchLabels: app: nginx podLabel: [test, app] healthCheck: enable: true failureThreshold: 3 periodSeconds: 5 command: "curl" port: 80 path: "healthz" 以下示例将监控节点上满足app=nginx的labelselector的所有Pod,监控Pod粒度的IP收发报文数、IP收发字节数、TCP收发报文数、TCP收发字节数、TCP重传报文数、TCP新建连接数、TCP丢包数、TCP建链失败数、UDP收发报文数、UDP收发字节数,若监控的容器携带test及app这两个标签,将在监控指标上携带对应label的key-value信息,否则对应label的value为“not found”。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task namespace: kube-system spec: selector: matchLabels: app: nginx podLabel: [test, app] monitor: ip: ipReceive: aggregateType: pod ipSend: aggregateType: pod tcp: tcpReceive: aggregateType: pod tcpSend: aggregateType: pod tcpRetrans: aggregateType: pod tcpNewConnection: aggregateType: pod tcpDrop: aggregateType: pod tcpConnectionFailure: aggregateType: pod udp: udpReceive: aggregateType: pod udpSend: aggregateType: pod 以下示例将监控节点上满足app=nginx的labelselector的所有Pod,监控流粒度的IP收发报文数、IP收发字节数、TCP收发报文数、TCP收发字节数、TCP重传报文数、tcp round trip time(单位:微秒)、TCP丢包数、UDP收发报文数、UDP收发字节数,若监控的容器携带test及app这两个标签,将在监控指标上携带对应label的key-value信息,否则对应label的value为“not found”。使用流粒度监控能力,用户可以更细腻的感知容器的流量信息。基于流的监控数据量较大,会占用更多的cpu和内存,请按需使用。 每开启一个基于流的IP监控任务(一个MonitorPolicy中开启一个和多个IP监控项)会占用内核2.6M内存;每开启一个基于流的TCP监控任务(一个MonitorPolicy中开启一个和多个TCP监控项)会占用内核14M内存。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task namespace: kube-system spec: selector: matchLabels: app: nginx podLabel: [test, app] monitor: ip: ipReceive: aggregateType: flow ipSend: aggregateType: flow tcp: tcpReceive: aggregateType: flow tcpSend: aggregateType: flow tcpRetrans: aggregateType: flow tcpRtt: aggregateType: flow tcpDrop: aggregateType: flow udp: udpReceive: aggregateType: flow udpSend: aggregateType: flow 基于流的监控数据量比较大时,当数据量超过一定限制时,会导致超限的流统计丢失,当前限制如下: 10s内内核态最多统计5w条(每监控任务)TCP流信息。 10s内内核态最多统计1w条(每监控任务)IP流信息。 两次普罗拉取间隔最多缓存6w条(所有监控任务)流统计信息。 普罗长时间不拉取时,只缓存1小时内的监控数据。 以下示例将监控节点上所有Pod,生成IPv4发送报文数和发送字节数这两个指标,若监控的容器携带app这个标签,将在监控指标上携带对应label的key-value信息,否则对应label的value为“not found”。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task namespace: kube-system spec: podLabel: [app] ip4Tx: enable: true 以下示例将监控节点上满足app=nginx的labelselector的所有Pod,生成IPv4收发报文数、IPv4收发字节数、IPv4发送公网报文数和字节数等指标,若监控的容器携带test及app这两个标签,将在监控指标上携带对应label的key-value信息,否则对应label的value为“not found”。 apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task namespace: kube-system spec: selector: matchLabels: app: nginx podLabel: [test, app] ip4Tx: enable: true ip4Rx: enable: true ip4TxInternet: enable: true
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- ...
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章