tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表
文档云函数操作指南资源托管模式管理

资源托管模式管理

PDF
聚焦模式
字号
最后更新时间: 2024-05-21 15:15:00

函数资源托管模式概述

函数资源托管模式决定了函数 SCF 运行时的资源池。默认情况下,开启函数服务后,平台会为每一个地域都分配一个函数公有云资源池,资源池由一些底层机器组成,体现为 128GB 的函数并发配额,您还可以通过购买套餐包的方式提升地域甚至是命名空间的并发额度,平台会根据新的并发额度自动分配匹配的机器,保障函数运行。
为了更好的支持您在不同业务场景下的需求,函数现已支持自定义资源托管模式,以满足函数运行到您指定的基础设施上,例如公有云 TKE 集群、混合云、IDC 等。
目前平台已推出 K8s 资源托管模式,以支持函数运行在您自己的 TKE 集群中,以实现在统一的云原生资源底座上使用函数加速业务开发。后续将逐步迭代支持混合云等更多云原生基础设施。

函数资源托管模式类型

SCF 支持默认资源托管模式 K8s 资源托管模式两种类型。
默认资源托管模式,函数运行在函数平台各个地域下的公有云资源池中,由函数平台完全掌控底层机器的供给和调度,您只需关注实际业务量级需要,通过调整函数的并发额度以保障业务运行。
K8s 资源托管模式,函数运行在您指定的 K8s 集群中,由您管理 K8s 集群中的资源供给,函数平台完全掌控函数的请求调度,在给定的资源池中智能调用,充分利用资源。

k8s 资源托管模式

概述

在 K8s 资源托管模式下,可选择一个 TKE 集群作为函数的计算资源池,函数的请求调用将全部调度到该资源池中,函数侧将不产生费用。目前支持 TKE 集群原生节点和普通节点,暂不支持超级节点。
使用上,只需要在函数命名空间中,配置资源托管模式为 K8s,并绑定一个 TKE 集群,即可开启该模式。该命名空间下的所有函数请求都将调度到绑定的 TKE 集群中。

运行原理

K8s 资源托管模式下的函数调度原理如下图所示:




TKE 集群初始化

当您为函数命名空间指定了 TKE 集群和函数运行时 namespace 后,平台将在该集群中自动创建 scf-system namespace,并创建部署管理函数代码等元信息的 daemonset、请求转发 pod、内网 clb service 组件等。

函数请求调度生命周期

用户发送的函数请求首先会发送到函数环境中的请求调用入口,函数调度管理模块会分析该函数在 TKE 集群中是否有空闲的函数运行时 Pod 资源可供运行:
1. 如果没有空闲资源,则会通过资源调度模块下发调度请求到 TKE 集群,进行函数运行时 Pod 资源准备。在 Pod 完备后,会通过 TKE 集群中的函数管理模块将函数的代码等元信息准备好,最后将新增的运行资源上报到函数环境的调度管理模块。
2. 如果有空闲资源,则会通过内网 CLB 将请求转发到 TKE 集群中的接入层 Service,然后通过集群中的函数的调用模块将请求下发到函数运行时 Pod,进入函数执行阶段。函数执行过程中,日志会实时上报到用户的 CLS 日志系统。函数执行结束后,执行结果、监控指标等信息会发回函数环境中的请求调用模块。

功能与优势

相较于默认资源托管模式,K8s 资源托管模式具备以下优势:
函数可以跑在您指定的 K8s 集群中,更加灵活可控,可实现更好的成本控制和更强的基础设施资源管理。
函数的主动调度机制,可大幅度提升您的 K8s 集群资源利用率,不仅通过函数开发体验提升了研发效率,还能降低资源浪费,真正实现了降本增效。
通过和 K8s 生态融合,可实现全栈云原生研效体系和服务治理机制,为业务开发者带来先进的开发体验,为线上业务带来更高的可用性保障。

操作步骤

创建函数命名空间并绑定 TKE 集群

1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 在函数服务页面上方选择期望创建函数的地域,单击命名空间右侧的⚙️,进入命名空间管理。如下图所示:



3. 命名空间弹窗中,单击新增命名空间,进入命名空间创建页面。如下图所示:



4. 资源托管模式选项中,选择 K8s,如果是第一次操作,会弹出容器服务角色授权弹窗,根据指示完成授权后可进行下一步操作。
5. TKE 集群配置中,选择 TKE 集群以及该集群下的 namespace,平台将在指定集群的 scf-system namespace 下创建 daemonset、内网 clb 等函数服务支撑组件,同时将在指定的 namespace 下创建函数运行时 Pod。请注意所选 TKE 集群内需有节点,且节点类型是普通节点和原生节点,以确保初始化过程顺利完成。
6. 函数 vpc 子网配置中,指定子网,平台将在该子网下消耗一个 ip 创建一个内网 clb 作为函数请求入口,实现函数请求转发到 TKE 集群。请注意子网不支持 9.x.x.x 网段。
7. 除以上的基础配置项外,还可以根据需要配置下面几项:
函数目录:指定一个 TKE 集群节点上的路径,用以存储函数代码、layer 代码及用作函数运行过程中产生的日志等临时存储。
支撑服务端口:指定一个可用的端口号,函数支撑服务将监听该端口号以实现函数调度链路。
NodeSelector: 可根据调度规则,将函数实例调度到符合预期的Label的节点中。详见下述 设置函数实例在 TKE 集群中的调度策略章节 。
污点容忍调度:可根据调度规则,将函数实例调度到符合预期的污点的节点中。详见下述 设置函数实例在 TKE 集群中的调度策略章节 。
8. 单击创建,在弹出的二次确认弹窗中单击继续,进入 TKE 集群的函数支撑组件初始化流程,该过程将花费 20s 左右,完成后,将会在命名空间管理页面中看到状态更新为“正常”,如下图所示:



9. 切换到已创建好的函数命名空间下创建函数开始使用。

设置函数实例在 TKE 集群中的调度策略




通过设置 NodeSelector 和污点容忍调度策略,指定函数实例在 TKE 集群内进行调度。更加有效利用集群内的资源,详情见 容器服务-资源合理分配。存在以下应用场景:
将函数实例运行在指定的节点上。
将函数实例运行在某一作用域(作用域可以是可用区、机型等属性)的节点上。

前置条件

设置工作负载高级设置中的调度规则,且集群的 Kubernetes 版本必须是1.7以上的版本。
为确保您的 Pod 能够调度成功,请确保您设置的调度规则完成后,节点有空余的资源用于容器的调度。
使用自定义调度功能时,需要为节点设置对应 Label 或 污点。详情请参见 设置节点 Label设置节点污点

设置调度规则

NodeSelector
可通过自定义调度规则,匹配节点标签,将函数实例调度到指定节点上。调度期间如果满足亲和性条件,则调度到对应 Node。如果没有节点满足条件,则调度失败。
详情请参见 k8s 节点亲和性
污点容忍调度
可通过自定义调度规则,容忍节点污点,将函数实例调度到指定节点上。
详情请参见 k8s 污点和容忍度


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈