You need to enable JavaScript to run this app.
导航
使用须知
最近更新时间:2024.06.05 19:13:26首次发布时间:2023.09.20 11:49:53

火山引擎容器服务( VKE)对容器业务相关的技术架构及核心组件提供托管服务,对于非托管组件以及运行在 VKE 集群中的应用,不当操作可能会导致业务故障。为了您云上业务的安全高效、稳定高可用,同时更好地预估和避免相关操作风险,在使用 VKE 前,请仔细阅读本文中的建议与注意事项。

数据面组件运维

VKE 托管了 Kubernetes 控制面组件,但是数据面组件仍然运行在用户的节点(ECS 实例)上,例如 CoreDNS、Ingress、Kube-Proxy、VPC-CNI、Kubelet 等,因此数据面组件运行的稳定性需要 VKE 与用户共同维护。

VKE 对数据面组件提供以下支持:

  • 提供参数化设置、功能优化、BugFix、CVE 补丁等功能并给出指导文档。
  • 提供监控、日志和报警等可观测能力,核心组件会提供组件日志,支持采集到火山引擎日志服务中。

用户使用数据面组件时,请遵循以下建议:

  • 使用最新版本的组件。组件经常会发布新版本以修复 Bug 或提供新特性。VKE 发布新版本的组件后,在保证业务稳定的前提下选择合适的时机,遵循组件升级指导文档中的说明进行升级操作。详细信息,请参见 升级组件
  • VKE 会将重要的集群异常事件发送到火山引擎云监控服务的事件中心,建议在云监控中配置相应的告警策略。详细操作,请参见 云产品监控指标创建告警策略
  • 建议在集群中开启云原生观测,并配置相应基础资源和业务资源的告警,VKE 会将重要的集群控制面和数据面指标发送到托管 Prometheus 服务中。详细操作,请参见 开启云原生观测创建告警规则
  • 请通过 容器服务控制台 配置方式或者调用 Open API 的方式配置组件的自定义参数。通过其他渠道修改组件配置可能会导致组件功能异常,并且参数在某些情况会被自动覆盖。详细操作,请参见 用户指南-组件管理API 参考-组件管理
  • 请勿直接使用 IaaS 层产品的 Open API 来变更 VKE 相关组件的运行环境,包括但不限定于使用云服务器(ECS)的 Open API 更改 Worker 节点(ECS 实例)的运行状态、节点安全组配置、节点网络配置以及通过负载均衡(CLB)的 Open API 修改 VKE 关联创建的 CLB 配置等。此类操作可能会导致数据面组件异常。
  • 部分数据面组件受上游开源组件影响,可能存在 Bug 或漏洞,请注意及时升级组件,以避免开源组件 Bug 或漏洞导致您的业务受损。

稳定高可用配置推荐

集群

下表为您推荐在创建集群前或创建集群时提升稳定性和高可用的配置建议。创建集群的操作详情,请参见 创建集群

分类稳定性操作建议影响说明

网络规划

创建集群前,结合业务场景提前规划集群子网、容器网段和 Service 网段,避免后期出现网段冲突,影响业务:

  • 同一私有网络(VPC)的集群数量,建议不超过 11 个。一个 VPC 下创建的集群越多,每个集群可分配的网段越小。
  • 如果集群未来会扩容到 100 节点以上,建议使用10172网段的子网和/16子网掩码。
  • 如果是用192网段子网,建议使用/18子网掩码。

若集群所在子网或容器网段较小,可能会导致集群无法扩容、无法创建 Pod 等问题。

部署创建集群时,结合业务场景选择合适的容器网络类型(Flannel、VPC-CNI)。详细说明,请参见 容器网络集群创建成功后,网络模型不可更改,请谨慎选择。
创建集群时,在 节点池配置 步骤中,会自动新建并绑定默认安全组,也支持根据业务需求设置自定义安全组规则。详细说明,请参见 安全组设置集群访问规则安全组是重要的安全隔离手段,不当的安全策略配置可能会引起安全相关的隐患及服务连通性等问题。
创建集群时,在 集群配置 步骤的 网络配置 中,建议选择多个(至少两个)可用区的子网。选择多个可用区来创建集群可以提高 Kubernetes 控制面的可用性、容灾性、性能和事故处理能力等,有利于提高业务安全延续性和稳定性。

可靠性

创建集群时建议添加独立数据盘,并选择挂载容器、镜像存储目录/var/lib/containerdvar/lib/kubelet
独立数据盘存储镜像有以下好处:

  • 可以避免对应用程序、配置等文件的影响,提高数据的安全性。
  • 可以减少对系统盘 I/O 的负荷,提高系统的性能。
  • 可以更加灵活地进行容器和镜像管理,从而提高系统的可维护性和扩展性。

没有独立数据盘可能会存在系统盘 I/O 负荷高等问题。

安全性创建集群时系统默认开启 集群删除保护,请保持开启状态,防止通过控制台或 Open API 误删集群。未开启删除保护的集群,可通过控制台或 Open API 直接进行删除,对于业务集群来说是一个不安全因素。

容器网络

分类稳定性操作建议影响说明
可靠性建议在集群容器网络的子网所属可用区和节点池子网可用区保持一致。Pod 调度到节点上时,如果所在可用区没有可调度的节点,Pod 会启动失败。
集群容器网络配置的安全组,需要限制与安全组关联的 Pod 数量,建议不要超过 2000 个。安全组默认支持关联最大 IP 数量为 2000,超过后新建 ENI 失败,Pod 也会启动失败。

工作负载

分类稳定性操作建议影响说明
部署创建工作负载时建议设置 CPU 和内存的限制范围,提高业务的健壮性。同一个节点上部署多个应用时,如果应用未设置资源限制,当应用出现异常导致资源泄露时,会造成其它应用由于无法分配所需资源而异常,且其监控信息将会出现误差。
可靠性创建工作负载时可设置容器健康检查:存活检查就绪检查。详细操作,请参见 创建无状态负载(其余工作负载配置与无状态负载相同)。未配置容器健康检查,会导致用户业务出现异常时,Pod 因无法感知而导致不会自动重启恢复业务。最终将会出现 Pod 状态正常,但 Pod 中业务异常的现象。
创建服务时需要根据实际访问需求选择合适的访问方式,目前支持公网访问、仅在集群内访问、VPC 内网访问及主机端口访问四种方式。选择不当的访问方式,可能会造成服务内外部访问逻辑的混乱和资源浪费。
创建工作负载时,请根据自身业务合理设置实例个数(Pod 副本数),建议个数大于 1,同时也合理设置节点调度策略。如设置单个 Pod 副本数,当节点异常或实例异常时会导致服务异常。为确保您的 Pod 能够调度成功,请确保您在设置调度规则后,节点有空余的资源用于容器的调度。
工作负载如果需要高 I/O 操作,请对其挂载 PVC 相关存储。详细操作,请参见 存储管理避免 containerd 或 kubelet 的 Hang 问题导致节点处于 NotReady 状态。

高危操作

使用容器服务过程中,您运行和部署相关功能模块可能存在高危操作,会对业务稳定性造成不同程度的影响。在使用前请仔细了解容器服务的高危操作及其影响。详细说明,请参见 高危操作及恢复方案