云服务器内容精选

  • 为什么选择云容器引擎 云容器引擎深度整合高性能的计算(ECS/BMS)、网络(VPC/EIP/ELB)、存储(EVS/OBS/SFS)等服务,并支持GPU、NPU、ARM等异构计算架构,支持多可用区(Available Zone,简称AZ)、多区域(Region)容灾等技术构建高可用Kubernetes集群。 华为云是全球首批Kubernetes认证服务提供商(Kubernetes Certified Service Provider,KCSP),是国内最早投入Kubernetes社区的厂商,是容器开源社区主要贡献者和容器生态领导者。华为云也是CNCF云原生计算基金会的创始成员及白金会员,云容器引擎是全球首批通过CNCF基金会Kubernetes一致性认证的容器服务。 更多选择理由,请参见产品优势和应用场景。
  • 产品形态 云容器引擎包含多种产品形态。 维度 子维度 CCE Standard CCE Turbo CCE Autopilot 产品定位 - 标准版本集群,提供高可靠、安全的商业级容器集群服务。 面向云原生2.0的新一代容器集群产品,计算、网络、调度全面加速。 无用户节点的Serverless版集群,无需对节点的部署、管理和安全性进行维护,并根据CPU和内存资源用量按需付费。 使用场景 - 面向有云原生数字化转型诉求的用户,期望通过容器集群管理应用,获得灵活弹性的算力资源,简化对计算、网络、存储的资源管理复杂度。 适合对极致性能、资源利用率提升和全场景覆盖有更高诉求的客户。 适合具有明显的波峰波谷特征的业务负载,例如在线教育、电子商务等行业。 规格差异 网络模型 云原生网络1.0:面向性能和规模要求不高的场景。 容器隧道网络模式 VPC网络模式 云原生网络2.0:面向大规模和高性能的场景。 组网规模最大支持2000节点 云原生网络2.0:面向大规模和高性能的场景。 网络性能 VPC网络叠加容器网络,性能有一定损耗 VPC网络和容器网络融合,性能无损耗 VPC网络和容器网络融合,性能无损耗 容器网络隔离 容器隧道网络模式:集群内部网络隔离策略,支持NetworkPolicy。 VPC网络模式:不支持 Pod可直接关联安全组,基于安全组的隔离策略,支持集群内外部统一的安全隔离。 Pod可直接关联安全组,基于安全组的隔离策略,支持集群内外部统一的安全隔离。 安全隔离性 普通容器:Cgroups隔离 安全容器:当前仅物理机支持,提供虚机级别的隔离 普通容器:Cgroups隔离 提供虚机级别的隔离 边缘基础设施管理 不支持 支持管理智能边缘小站IES 不支持
  • 产品架构 图1 CCE产品架构 计算:全面适配华为云各类计算实例,支持虚拟机和裸机混合部署、高性价比鲲鹏实例、GPU和华为云独有的昇腾算力;支持GPU虚拟化、共享调度、资源感知的调度优化。 网络:支持对接高性能、安全可靠、多协议的独享型ELB作为业务流量入口。 存储:对接云存储,支持EVS、SFS和OBS,提供磁盘加密、快照和备份能力。 集群服务:支持购买集群、连接集群、升级集群、管理集群等一系列集群生命周期管理服务。 容器编排:CCE提供了管理Helm Chart(模板)的控制台,能够帮助您方便的使用模板部署应用,并在控制台上管理应用。 制品仓库:对接容器镜像服务,支持镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。 弹性伸缩:支持工作负载和节点的弹性伸缩,可以根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。 服务治理:深度集成应用服务网格,提供开箱即用的应用服务网格流量治理能力,用户无需修改代码,即可实现灰度发布、流量治理和流量监控能力。 容器运维:深度集成容器智能分析,可实时监控应用及资源,支持采集、管理、分析日志,采集各项指标及事件并提供一键开启的告警能力。 扩展插件市场:提供了多种类型的插件,用于管理集群的扩展功能,以支持选择性扩展满足特性需求的功能。
  • 集群类型对比 CCE支持多种类型的集群创建,以满足您各种业务需求,如下为集群类型之间的区别,可帮助您选择合适的集群: 维度 子维度 CCE Standard CCE Autopilot 产品定位 - 标准版本集群,提供高可靠、安全的商业级容器集群服务。 无用户节点的Serverless版集群,无需对节点的部署、管理和安全性进行维护,并根据CPU和内存资源用量按需付费。 使用场景 - 面向有云原生数字化转型诉求的用户,期望通过容器集群管理应用,获得灵活弹性的算力资源,简化对计算、网络、存储的资源管理复杂度。 适合具有明显的波峰波谷特征的业务负载,例如在线教育、电子商务等行业。 规格差异 网络模型 云原生网络1.0:面向性能和规模要求不高的场景。 容器隧道网络模式 VPC网络模式 云原生网络2.0:面向大规模和高性能的场景。 网络性能 VPC网络叠加容器网络,性能有一定损耗 VPC网络和容器网络融合,性能无损耗 容器网络隔离 容器隧道网络模式:集群内部网络隔离策略,支持NetworkPolicy。 VPC网络模式:不支持 Pod可直接关联安全组,基于安全组的隔离策略,支持集群内外部统一的安全隔离。 安全隔离性 普通容器:Cgroups隔离 提供虚机级别的隔离 边缘基础设施管理 不支持 不支持
  • 使用Ingress规则 使用podSelector设置访问范围 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy namespace: default spec: podSelector: # 规则对具有role=db标签的Pod生效 matchLabels: role: db ingress: # 表示入规则 - from: - podSelector: # 只允许具有role=frontend标签的Pod访问 matchLabels: role: frontend ports: # 只能使用TCP协议访问6379端口 - protocol: TCP port: 6379 示意图如下所示。 图1 podSelector 使用namespaceSelector设置访问范围 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: test-network-policy spec: podSelector: # 规则对具有role=db标签的Pod生效 matchLabels: role: db ingress: # 表示入规则 - from: - namespaceSelector: # 只允许具有project=myproject标签的命名空间中的Pod访问 matchLabels: project: myproject ports: # 只能使用TCP协议访问6379端口 - protocol: TCP port: 6379 示意图如下所示。 图2 namespaceSelector
  • 命名空间(Namespace) 命名空间是对一组资源和对象的抽象整合。在同一个集群内可创建不同的命名空间,不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务,也能够互不干扰。例如: 可以将开发环境、测试环境的业务分别放在不同的命名空间。 常见的pods,services,replication controllers和deployments等都是属于某一个namespace的(默认是default),而node,persistentVolumes等则不属于任何namespace。
  • 模板(Chart) Kubernetes集群可以通过Helm实现软件包管理,这里的Kubernetes软件包被称为模板(Chart)。Helm对于Kubernetes的关系类似于在Ubuntu系统中使用的apt命令,或是在CentOS系统中使用的yum命令,它能够快速查找、下载和安装模板(Chart)。 模板(Chart)是一种Helm的打包格式,它只是描述了一组相关的集群资源定义,而不是真正的容器镜像包。模板中仅仅包含了用于部署Kubernetes应用的一系列YAML文件,您可以在Helm模板中自定义应用程序的一些参数设置。在模板的实际安装过程中,Helm会根据模板中的YAML文件定义在集群中部署资源,相关的容器镜像并不会包含在模板包中,而是依旧从YAML中定义好的镜像仓库中进行拉取。 对于应用开发者而言,需要将容器镜像包发布到镜像仓库,并通过Helm的模板将安装应用时的依赖关系统一打包,预置一些关键参数,来降低应用的部署难度。 对于应用使用者而言,可以使用Helm查找模板(Chart)包并支持调整自定义参数。Helm会根据模板包中的YAML文件直接在集群中安装应用程序及其依赖,应用使用者不用编写复杂的应用部署文件,即可以实现简单的应用查找、安装、升级、回滚、卸载。
  • 镜像(Image) Docker镜像是一个模板,是容器应用打包的标准格式,用于创建Docker容器。或者说,Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。在部署容器化应用时可以指定镜像,镜像可以来自于 Docker Hub、容器镜像服务或者用户的私有 Registry。例如一个Docker镜像可以包含一个完整的Ubuntu操作系统环境,里面仅安装了用户需要的应用程序及其依赖文件。 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 图5 镜像、容器、工作负载的关系
  • 亲和性与反亲和性 在应用没有容器化之前,原先一个虚机上会装多个组件,进程间会有通信。但在做容器化拆分的时候,往往直接按进程拆分容器,比如业务进程一个容器,监控日志处理或者本地数据放在另一个容器,并且有独立的生命周期。这时如果分布在网络中两个较远的点,请求经过多次转发,性能会很差。 亲和性:可以实现就近部署,增强网络能力实现通信上的就近路由,减少网络的损耗。如:应用A与应用B两个应用频繁交互,所以有必要利用亲和性让两个应用的尽可能的靠近,甚至在一个节点上,以减少因网络通信而带来的性能损耗。 反亲和性:主要是出于高可靠性考虑,尽量分散实例,某个节点故障的时候,对应用的影响只是 N 分之一或者只是一个实例。如:当应用采用多副本部署时,有必要采用反亲和性让各个应用实例打散分布在各个节点上,以提高HA。
  • 集群(Cluster) 集群指容器运行所需要的云资源组合,关联了若干云服务器节点、负载均衡等云资源。您可以理解为集群是“同一个子网中一个或多个弹性云服务器(又称:节点)”通过相关技术组合而成的计算机群体,为容器运行提供了计算资源池。 云容器引擎支持的集群类型如下: 集群类型 描述 CCE Standard集群 CCE Standard集群是云容器引擎服务的标准版本集群,提供商用级容器集群服务,并完全兼容开源 Kubernetes 集群标准功能。 CCE Standard集群为您提供简单、低成本、高可用的解决方案,无需管理和运维控制节点,并且可根据业务场景选择使用容器隧道网络模型或VPC网络模型,适合对性能和规模没有特殊要求的通用场景。 CCE Turbo集群 CCE Turbo集群是基于云原生基础设施构建的云原生2.0容器引擎服务,具备软硬协同、网络无损、安全可靠、调度智能的优势,为用户提供一站式、高性价比的全新容器服务体验。 CCE Turbo集群提供了面向大规模高性能的场景云原生2.0网络,容器直接从VPC网段内分配IP地址,容器和节点可以分属不同子网,支持VPC内的外部网络与容器IP直通,享有高性能。
  • 工作负载 工作负载是在Kubernetes上运行的应用程序。无论您的工作负载是单个组件还是协同工作的多个组件,您都可以在Kubernetes上的一组Pod中运行它。在Kubernetes中,工作负载是对一组Pod的抽象模型,用于描述业务的运行载体,包括Deployment、StatefulSet、DaemonSet、Job、CronJob等多种类型。 无状态工作负载:即Kubernetes中的“Deployment”,无状态工作负载支持弹性伸缩与滚动升级,适用于实例完全独立、功能相同的场景,如:nginx、wordpress等。 有状态工作负载:即Kubernetes中的“StatefulSet”,有状态工作负载支持实例有序部署和删除,支持持久化存储,适用于实例间存在互访的场景,如ETCD、mysql-HA等。 创建守护进程集:即Kubernetes中的“DaemonSet”,守护进程集确保全部(或者某些)节点都运行一个Pod实例,支持实例动态添加到新节点,适用于实例在每个节点上都需要运行的场景,如ceph、fluentd、Prometheus Node Exporter等。 普通任务:即Kubernetes中的“Job”,普通任务是一次性运行的短任务,部署完成后即可执行。使用场景为在创建工作负载前,执行普通任务,将镜像上传至镜像仓库。 定时任务:即Kubernetes中的“CronJob”,定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步。 图4 工作负载与Pod的关系
  • CCE存储类型选择 创建工作负载时,可以使用以下类型的存储。建议将工作负载pod数据存储在云存储上。若存储在本地磁盘上,节点异常无法恢复时,本地磁盘中的数据也将无法恢复。 本地硬盘:将容器所在宿主机的文件目录挂载到容器的指定路径中(对应Kubernetes的HostPath),也可以不填写源路径(对应Kubernetes的EmptyDir),不填写时将分配主机的临时目录挂载到容器的挂载点,指定源路径的本地硬盘数据卷适用于将数据持久化存储到容器所在宿主机,EmptyDir(不填写源路径)适用于容器的临时存储。配置项(ConfigMap)是一种用于存储工作负载所需配置信息的资源类型,内容由用户决定。密钥(Secret)是一种用于存储工作负载所需要认证信息、密钥的敏感信息等的资源类型,内容由用户决定。 云硬盘存储卷:CCE支持将EVS创建的云硬盘挂载到容器的某一路径下。当容器迁移时,挂载的云硬盘将一同迁移。这种存储方式适用于需要永久化保存的数据。 文件存储卷: CCE支持创建SFS存储卷并挂载到容器的某一路径下,也可以使用底层SFS服务创建的文件存储卷,SFS存储卷适用于多读多写的持久化存储,适用于多种工作负载场景,包括媒体处理、内容管理、大数据分析和分析工作负载程序等场景。 对象存储卷:CCE支持创建OBS对象存储卷并挂载到容器的某一路径下,对象存储适用于云工作负载、数据分析、内容分析和热点对象等场景。 极速文件存储卷:CCE支持创建SFS Turbo极速文件存储卷并挂载到容器的某一路径下,极速文件存储具有按需申请,快速供给,弹性扩展,方便灵活等特点,适用于DevOps、容器微服务、企业办公等应用场景。
  • 解决方法 一般情况下,您需要从证书提供商处获取有效的合法证书。如果您需要在测试环境下使用,您可以自建证书和私钥,方法如下: 自建的证书通常只适用于测试场景,使用时界面会提示证书不合法,影响正常访问,建议您选择手动上传合法证书,以便通过浏览器校验,保证连接的安全性。 自己生成tls.key。 openssl genrsa -out tls.key 2048 将在当前目录生成一个tls.key的私钥。 用此私钥去签发生成自己的证书。 openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/O=Devops/CN=example.com -days 3650 生成的私钥格式必须为: ----BEGIN RSA PRIVATE KEY----- …………………………………………….. -----END RSA PRIVATE KEY----- 生成的证书格式必须为: -----BEGIN CERTIFICATE----- …………………………………………………………… -----END CERTIFICATE----- 导入证书。 新建TLS密钥时,对应位置导入证书及私钥文件即可。
  • CCE节点上监听的端口列表 表1 Node节点监听端口 目的端口 协议 端口说明 10248 TCP kubelet健康检查端口 10250 TCP kubelet服务端口,提供节点上工作负载的监控信息和容器的访问通道 10255 TCP kubelet只读端口,提供节点上工作负载的监控信息 动态端口(与宿主机限制的范围有关,比如 内核参数 net.ipv4.ip_local_port_range) TCP kubelet 随机监听一个端口,与CRI Shim通信获取Exec URL 10249 TCP kube-proxy metric端口,提供kube-proxy组件的监控信息 10256 TCP kube-proxy健康检查端口 动态端口(32768~65535) TCP docker exec等功能的websocket监听端口 动态端口(32768~65535) TCP containerd exec等功能的websocket监听端口 28001 TCP icagent本地侦听端口,接受节点syslog日志 28002 TCP icagent健康检查端口 20101 TCP yangtse-agent/canal-agent健康检查端口(容器隧道网络模式涉及) 20104 TCP yangtse-agent/canal-agent的metric端口,提供组件的监控信息(容器隧道网络模式涉及) 3125 TCP everest-csi-driver侦听健康检查端口 3126 TCP everest-csi-driver pprof端口 19900 TCP node-problem-detector 健康检查server端口 19901 TCP node-problem-detector对接普罗采集监控数据端口 4789 UDP ovs侦听端口,容器网络vxlan报文的传输通道(容器隧道网络模式涉及) 4789 UDPv6 ovs侦听端口,容器网络vxlan报文的传输通道(容器隧道网络模式涉及) 动态端口30000~32767 TCP kube-proxy侦听端口,做4层负载均衡。K8s会给NodePort和Loadbalancer类型的服务分配一个随机端口,默认范围在30000~32767 动态端口30000~32767 UDP kube-proxy侦听端口,做4层负载均衡。K8s会给NodePort和Loadbalancer类型的服务分配一个随机端口,默认范围在30000~32767 123 UDP ntpd侦听端口,负责时间同步 20202 TCP PodLB侦听端口,做7层负载均衡,负责转发容器镜像拉取请求 父主题: 节点运行
  • 安全组出方向规则加固建议 对于出方向规则,CCE创建的安全组默认全部放通,通常情况下不建议修改。如需加固出方向规则,请注意如下端口需要放通。 表8 Node节点安全组出方向规则最小范围 端口 放通地址段 说明 UDP:53 子网的DNS服务器 用于域名解析。 UDP:4789(仅容器隧道网络模型的集群需要) 所有IP地址 容器间网络互访。 TCP:5443 Master节点网段 Master的kube-apiserver的监听端口。 TCP:5444 VPC网段、容器网段 kube-apiserver服务端口,提供K8s资源的生命周期管理。 TCP:6443 Master节点网段 - TCP:8445 VPC网段 Node节点存储插件访问Master节点。 TCP:9443 VPC网段 Node节点网络插件访问Master节点。 所有端口 198.19.128.0/17网段 访问VPCEP服务。 UDP:123 100.125.0.0/16网段 Node节点访问内网NTP服务器端口。 TCP:443 100.125.0.0/16网段 Node节点访问内网OBS端口用于拉取安装包。 TCP:6443 100.125.0.0/16网段 Node节点上报节点安装成功。