借助 Solo Enterprise for kagent,平台管理员可以在 Google Distributed Cloud (GDC) 纯软件 (GDC-SO) 上部署和管理 AI 智能体。在此参考实现中,您会将容器映像和 Helm 图表镜像到私有 Harbor 注册表,部署 kagent 控制平面、界面和 Solo Enterprise for agentgateway,并查看集群规模调整指南。如需详细了解该架构,请参阅将您自己的 MCP 服务器引入 kagent 参考架构。
前提条件
在开始之前,请确保您可以使用安装了 Chrome、Docker、crane、kubectl、Helm、envsubst 和 gdcloud CLI 的 Linux 工作站。
确保为您的 GDC-SO 环境配置了以下组件:
| 组件 | 详细信息或要求 | 示例值 |
|---|---|---|
| Google Cloud GDC-SO 项目 | 与 GDC-SO 集群关联的项目 | kagent-enterprise |
| 集群 | 目标 GDC-SO 集群 | user-project-8a210897 |
| Kubernetes 凭证(Connect 网关) | 与集群的连接 | gcloud container fleet memberships get-credentials user-project-8a210897 |
| 私有注册表 | Harbor 注册表网址 | solo-kagent-enterprise.org-1.zone1.google.gdch.test |
| 项目代码库 | 项目代码库路径 | solo-kagent-enterprise.org-1.zone1.google.gdch.test/kagent-enterprise |
| 拉取 Secret | Docker 拉取 Secret 名称 | solo-harbor-pull-secret |
以下说明适用于 Solo Enterprise for kagent 0.4.0 版及更高版本。
此部署已在 GDC-SO 版本 1.31.5-gke.300 上通过验证。
在 GDC-SO 集群上部署
根据您的集群和注册表配置创建一个 .env 文件:
export PUBLIC_REGISTRY="us-docker.pkg.dev/solo-public/kagent-enterprise-helm/charts"
export PUBLIC_MANAGEMENT_REGISTRY="us-docker.pkg.dev/solo-public/solo-enterprise-helm/charts"
export PUBLIC_AGENTGATEWAY_REGISTRY="us-docker.pkg.dev/solo-public/enterprise-agentgateway/charts"
# Set these based on your desired installation version
export KAGENT_ENT_VERSION=0.4.1
export KAGENT_VERSION=0.9.1
export AGENTGATEWAY_VERSION=v2.4.0-beta.0
export SOLO_LICENSE_KEY="SOLO_LICENSE_KEY"
# Set the following values based on your GDC setup
export PROJECT_ID="kagent-enterprise"
export CLUSTER_NAME="user-project-8a210897"
export NAMESPACE="solo-kagent"
export USER_CONTEXT="user-vm-1-zone1-gdch_console-org-1-zone1-google-gdch-test_user-vm-1"
export MGMT_CONTEXT="user-project-8a210897-zone1-gdch_console-org-1-zone1-google-gdch-test_user-project-8a210897"
export PULL_SECRET_NAME="solo-harbor-pull-secret"
# Set the following values based on your Harbor registry setup
export ORG="ORG"
export ZONE="ZONE"
export PRIVATE_REGISTRY="solo-kagent-enterprise.${ORG}.${ZONE}.google.gdch.test"
export PRIVATE_REPO="${PRIVATE_REGISTRY}/${PROJECT_ID}"
export PRIVATE_CHART_REGISTRY="${PRIVATE_REPO}/charts"
替换以下内容:
SOLO_LICENSE_KEY:您的 Solo Enterprise 许可密钥ORG:您的 GDC 组织名称ZONE:您的 GDC 区域名称
创建 Helm 值文件
为这三个图表创建 Helm 值文件。除非您想自定义安装,否则无需修改任何值。您稍后可以在 kagent 界面中配置其他模型和代理。
创建 enterprise-agentgateway-values.yaml 文件:
image:
registry: ${PRIVATE_REPO}/enterprise-agentgateway
tag: ${AGENTGATEWAY_VERSION}
licensing:
licenseKey: ${SOLO_LICENSE_KEY}
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
inferenceExtension:
enabled: true
创建 kagent-enterprise-values.yaml 文件:
registry: ${PRIVATE_REPO}
cluster: ${CLUSTER_NAME}
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
global:
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
oidc:
skipOBO: true
otel:
tracing:
enabled: true
exporter:
otlp:
endpoint: http://solo-enterprise-telemetry-collector.${NAMESPACE}.svc.cluster.local.:4317
insecure: true
kubernetes:
jwksUrl: "https://kubernetes.default.svc.cluster.local/openid/v1/jwks"
providers:
default: OpenAI # Choose the model API type
OpenAI:
provider: OpenAI
model: "/model/gemma-4-12B" # Choose the model
apiKeySecretRef: "kagent-openai"
apiKeySecretKey: "none" # Name of the key in the Secret, or "none" if no API key is required
controller:
agentDeployment:
podLabels:
egress.networking.gke.io/enabled: "true"
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
image:
registry: ${PRIVATE_REPO}
agentImage:
registry: ${PRIVATE_REPO}
repository: "kagent-dev/kagent/app"
pullSecret: "${PULL_SECRET_NAME}"
licensing:
createSecret: true
secretName: "enterprise-kagent-license"
kmcp:
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
image:
registry: ${PRIVATE_REPO}
enabled: true
kagent-tools:
enabled: true
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
tools:
image:
registry: ${PRIVATE_REPO}
agents:
k8s-agent:
enabled: true
grafana-mcp:
enabled: false # Pull secret is not supported
tools:
grafana-mcp:
enabled: false # Pull secret is not supported
database:
postgres:
bundled:
storageClassName: local-shared
image:
registry: ${PRIVATE_REPO}
enabled: true
创建 management-values.yaml 文件:
cluster: ${CLUSTER_NAME}
context: "${USER_CONTEXT}"
management-crds:
enabled: false
global:
imagePullPolicy: IfNotPresent
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
products:
kagent:
enabled: true
agentgateway:
enabled: true
mesh:
enabled: false
agentregistry:
enabled: false
oidc:
issuer: ""
traces:
verbose: false
tunnelserver:
registry: ${PRIVATE_REPO}
repository: solo-enterprise
name: solo-enterprise-tunnel-server
ui:
backend:
registry: ${PRIVATE_REPO}
repository: solo-enterprise
name: solo-enterprise-ui-backend
clickhouse:
migrations:
registry: ${PRIVATE_REPO}
frontend:
registry: ${PRIVATE_REPO}
repository: solo-enterprise
telemetryGateway:
repository: ${PRIVATE_REPO}/otel/opentelemetry-collector-contrib
idp:
registry: ${PRIVATE_REPO}
repository: solo-enterprise
telemetry:
image:
registry: ${PRIVATE_REPO}
repository: otel
name: opentelemetry-collector-contrib
k8sobjects:
enabled: true
metrics:
enabled: false
selfMonitoring:
enabled: false
verbose: false
traces:
enabled: true
clickhouse:
enabled: true
image:
repository: ${PRIVATE_REPO}/clickhouse/clickhouse-server
设置环境
在 .env 和 Helm 值文件所在的目录中,加载环境变量并呈现 Helm 值模板。在同一 shell 会话中运行本指南中的其余命令,以便这些变量保持设置状态:
SCRIPT_DIR="${PWD}"
set -a
source "$SCRIPT_DIR/.env"
set +a
COMMON_FLAGS=(--kube-context "$MGMT_CONTEXT" -n "$NAMESPACE" --create-namespace --insecure-skip-tls-verify)
# Values files live alongside the script. Render them with envsubst into
# *.generated.yaml siblings that are then fed to helm upgrade.
MANAGEMENT_VALUES_GENERATED="$SCRIPT_DIR/management-values.generated.yaml"
KAGENT_ENTERPRISE_VALUES_GENERATED="$SCRIPT_DIR/kagent-enterprise-values.generated.yaml"
ENTERPRISE_AGENTGATEWAY_VALUES_GENERATED="$SCRIPT_DIR/enterprise-agentgateway-values.generated.yaml"
envsubst < "$SCRIPT_DIR/management-values.yaml" > "$MANAGEMENT_VALUES_GENERATED"
envsubst < "$SCRIPT_DIR/kagent-enterprise-values.yaml" > "$KAGENT_ENTERPRISE_VALUES_GENERATED"
envsubst < "$SCRIPT_DIR/enterprise-agentgateway-values.yaml" > "$ENTERPRISE_AGENTGATEWAY_VALUES_GENERATED"
从公共注册表镜像映像和图表
向您的私有 Harbor 注册表对 Docker 和 Helm 进行身份验证,然后从公共注册表镜像 Helm 图表和容器映像:
# Authenticate to the private Harbor registry before mirroring charts and images.
helm registry login "$PRIVATE_REGISTRY"
docker login "$PRIVATE_REGISTRY"
function mirror() {
if command -v crane &> /dev/null; then
crane cp "$1" "$2"
else
docker pull "$1"
docker tag "$1" "$2"
docker push "$2"
fi
}
MANAGEMENT_CHARTS=(management-crds management)
KAGENT_CHARTS=(kagent-enterprise-crds kagent-enterprise)
AGENTGATEWAY_CHARTS=(enterprise-agentgateway-crds enterprise-agentgateway)
# Mirror Helm chart OCI artifacts to the private registry using the same mirror() helper.
for CHART in "${MANAGEMENT_CHARTS[@]}"; do
mirror \
"${PUBLIC_MANAGEMENT_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}" \
"${PRIVATE_CHART_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}"
done
for CHART in "${KAGENT_CHARTS[@]}"; do
mirror \
"${PUBLIC_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}" \
"${PRIVATE_CHART_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}"
done
for CHART in "${AGENTGATEWAY_CHARTS[@]}"; do
mirror \
"${PUBLIC_AGENTGATEWAY_REGISTRY}/${CHART}:${AGENTGATEWAY_VERSION}" \
"${PRIVATE_CHART_REGISTRY}/${CHART}:${AGENTGATEWAY_VERSION}"
done
# Discover images by templating the charts directly from their public OCI source.
IMAGES=$( (
helm template management "oci://${PUBLIC_MANAGEMENT_REGISTRY}/management" \
--version "$KAGENT_ENT_VERSION" \
--set products.kagent.enabled=true \
--set products.agentgateway.enabled=true \
--set products.agentregistry.enabled=true \
--set licensing.licenseKey=placeholder
helm template kagent-enterprise "oci://${PUBLIC_REGISTRY}/kagent-enterprise" \
--version "$KAGENT_ENT_VERSION" \
--set licensing.licenseKey=placeholder \
--set kmcp.licensing.licenseKey=placeholder \
--set ui.enabled=true \
--set kagent-tools.enabled=true \
--set agents.k8s-agent.enabled=true
helm template enterprise-agentgateway "oci://${PUBLIC_AGENTGATEWAY_REGISTRY}/enterprise-agentgateway" \
--version "$AGENTGATEWAY_VERSION" \
--set licensing.licenseKey=placeholder
) | grep "image:" | grep -v '{' | sed 's/.*image: //' | tr -d '" ' | grep -E '^[a-zA-Z0-9].*[:/]' | sort -u)
IMAGES_EXTRA="cr.kagent.dev/kagent-dev/kagent/golang-adk:$KAGENT_VERSION cr.kagent.dev/kagent-dev/kagent/app:$KAGENT_VERSION ghcr.io/kagent-dev/kagent/skills-init:$KAGENT_VERSION"
TARGET_PREFIX="${PRIVATE_REPO//\//\\/}"
for IMG in $IMAGES $IMAGES_EXTRA; do
echo "From: $IMG"
NEW_IMG=$(echo "$IMG" | sed s/'us-docker\.pkg\.dev\/solo-public'/"$TARGET_PREFIX"/ | sed s/'^clickhouse\/'/"$TARGET_PREFIX\/clickhouse\/"/ | sed s/'^argoproj\/'/"$TARGET_PREFIX\/argoproj\/"/ | sed s/'^docker.io\/otel\/'/"$TARGET_PREFIX\/otel\/"/ | sed s/'^docker.io\/library\/postgres'/"$TARGET_PREFIX\/library\/postgres"/ | sed s/'^cr.kagent.dev\/kagent-dev\/'/"$TARGET_PREFIX\/kagent-dev\/"/ | sed s/'^docker.io\/mcp\/'/"$TARGET_PREFIX\/mcp\/"/ | sed s/'^ghcr.io\/kagent-dev\/'/"$TARGET_PREFIX\/kagent-dev\/"/)
echo "To : $NEW_IMG"
mirror "$IMG" "$NEW_IMG"
done
在 GDC-SO 集群中创建命名空间
在集群中创建目标命名空间:
kubectl create namespace "$NAMESPACE" --context "$MGMT_CONTEXT" \
--dry-run=client -o yaml | kubectl apply --context "$MGMT_CONTEXT" -f -
创建 Docker 拉取 Secret 并将其应用于集群
在集群中创建 Docker 注册表拉取 Secret:
kubectl create secret docker-registry "$PULL_SECRET_NAME" \
--context "$MGMT_CONTEXT" \
--namespace "$NAMESPACE" \
--docker-server="$PRIVATE_REGISTRY" \
--docker-username="REGISTRY_USERNAME" \
--docker-password="REGISTRY_PASSWORD"
替换以下内容:
REGISTRY_USERNAME:您的 Harbor 注册表用户名REGISTRY_PASSWORD:您的 Harbor 注册表密码
安装 kagent
安装 CRD 图表和 Solo Enterprise for kagent Helm 图表:
# Standard clusters allow cluster-scoped resources, so install CRD charts first.
helm upgrade -i management-crds \
"oci://${PRIVATE_CHART_REGISTRY}/management-crds" \
"${COMMON_FLAGS[@]}" \
--version "$KAGENT_ENT_VERSION"
helm upgrade -i kagent-enterprise-crds \
"oci://${PRIVATE_CHART_REGISTRY}/kagent-enterprise-crds" \
"${COMMON_FLAGS[@]}" \
--version "$KAGENT_ENT_VERSION"
helm upgrade -i enterprise-agentgateway-crds \
"oci://${PRIVATE_CHART_REGISTRY}/enterprise-agentgateway-crds" \
"${COMMON_FLAGS[@]}" \
--version "$AGENTGATEWAY_VERSION"
helm upgrade -i management \
"oci://${PRIVATE_CHART_REGISTRY}/management" \
"${COMMON_FLAGS[@]}" \
--version "$KAGENT_ENT_VERSION" \
--values "$MANAGEMENT_VALUES_GENERATED" \
--set "licensing.licenseKey=$SOLO_LICENSE_KEY"
helm upgrade -i kagent-enterprise \
"oci://${PRIVATE_CHART_REGISTRY}/kagent-enterprise" \
"${COMMON_FLAGS[@]}" \
--version "$KAGENT_ENT_VERSION" \
--values "$KAGENT_ENTERPRISE_VALUES_GENERATED" \
--set "licensing.licenseKey=$SOLO_LICENSE_KEY" \
--set "kmcp.licensing.licenseKey=$SOLO_LICENSE_KEY" \
--set "controller.agentImage.tag=$KAGENT_VERSION" \
--set "controller.skillsInitImage.tag=$KAGENT_VERSION"
helm upgrade -i enterprise-agentgateway \
"oci://${PRIVATE_CHART_REGISTRY}/enterprise-agentgateway" \
"${COMMON_FLAGS[@]}" \
--version "$AGENTGATEWAY_VERSION" \
--values "$ENTERPRISE_AGENTGATEWAY_VALUES_GENERATED" \
--set "licensing.licenseKey=$SOLO_LICENSE_KEY"
验证部署
验证 Pod 是否正在命名空间中运行:
kubectl get pods -n "$NAMESPACE" --context "$MGMT_CONTEXT"
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE
enterprise-agentgateway-5b57c9496b-hfnqq 1/1 Running 0 36m
k8s-agent-796b6674f5-fd8cq 1/1 Running 0 4m8s
kagent-controller-5f7b44f647-9nd95 1/1 Running 0 5m31s
kagent-postgresql-688d8c679d-4g9n9 1/1 Running 0 36m
kagent-tools-6b9f8d58c6-t5zsm 1/1 Running 0 23m
kmcp-enterprise-controller-manager-7886cdfb57-kgnmw 1/1 Running 0 23m
management-clickhouse-shard0-0 1/1 Running 0 14m
solo-enterprise-telemetry-collector-0 1/1 Running 0 23m
solo-enterprise-ui-7c7c889d6-frkvn 5/5 Running 0 9m34s
将本地端口转发到 solo-enterprise-ui 服务:
kubectl port-forward -n "$NAMESPACE" --context "$MGMT_CONTEXT" \
svc/solo-enterprise-ui 9090:80
在浏览器中,前往 http://localhost:9090 打开 Solo Enterprise for kagent 界面,然后配置模型和智能体:
性能注意事项和部署容量调整
以下部分介绍了组件资源消耗如何扩缩,并提供了单集群部署的基准存储和资源大小。
扩缩特性
在单集群安装中,随着代理数量和每个代理的请求负载增加,资源消耗会发生质的变化(management 和 kagent-enterprise 图表,不含中继)。在调整资源分配或规划容量之前,请使用这些特征来确定哪些组件对特定伸缩维度敏感。
影响伸缩的关键架构因素
- 智能体到 LLM 的流量是直接传输的。智能体直接调用大语言模型 (LLM) 端点(例如集群内模型服务)。此流量不会通过控制器或任何其他管理平面组件。添加代理或提高请求速率不会增加任何共享组件上与 LLM 相关的负载。
- MCP 服务器位于智能体工具执行的热路径中。当智能体调用由 Model Context Protocol (MCP) 服务器支持的工具时,该调用是同步且阻塞的。MCP 服务器延迟时间和吞吐量会直接影响智能体请求延迟时间。每个已部署的
MCPServer资源都是一个单独的 Deployment,具有自己的资源封装。 - 遥测是主要的伸缩依据。指标、跟踪记录和 Kubernetes 对象快照都会通过遥测流水线流入 ClickHouse。此流水线会随着代理数量和请求量的增加而增长,是系统中最消耗资源的部分。
- 隧道服务器存在,但在单集群安装中不承载任何有意义的流量。
tunnel-server容器在界面 Pod 中运行,但它没有要提供服务的客户端,也不会增加伸缩压力。
组件伸缩行为
以下部分介绍了各个组件如何随代理数量和请求负载而扩缩。
kagent-controller
- 随智能体数量呈次线性增长,每个智能体都保持一个智能体到智能体 (A2A) 流连接。
- 对请求量不敏感,因为 LLM 调用和工具执行会绕过控制器。
- 支持横向伸缩,以分配连接和政策评估负载。
KMCP 企业控制器
KMCP 企业控制器仅由 MCPServer 资源更改事件驱动,对代理数量或请求量不敏感。
MCP 服务器
- 为每个
MCPServer自定义资源 (CR) 部署一个 Deployment;舰队规模会随着部署的MCPServer资源数量而增长。 - 在智能体工具执行的同步热路径中运行,延迟时间和吞吐量会直接影响智能体。
- 当多个代理同时调用共享服务器时,会根据所有使用方的总工具调用速率进行扩缩。
- 默认情况下,将内置服务器(
grafana-mcp、querydoc)作为单个副本运行;对于大量共享使用,请增加副本或限制。 - 为用户部署的 MCP 服务器使用用户定义的映像、资源请求和资源限制。
遥测收集器
- 随请求量线性扩缩 - 每个请求都会发出指标和跟踪记录(可选)。
- 是在高代理负载下最有可能受到资源限制的组件。
- 在多集群安装中,充当远程集群的 OpenTelemetry 协议 (OTLP) 网关(端口 4316-4318 上的接收器);不存在单独的网关 Pod。
- 使用
k8sobjects边车,该边车会随 Kubernetes 资源清单大小(而非请求速率)而扩缩。
ClickHouse
在持续负载下,ClickHouse 是主要的资源瓶颈。存储空间、内存和 CPU 都会随着以下因素而增长:
- 代理数量:每增加一种代理类型,指标基数(唯一标签组合)就会增加。
- 请求量:每个请求都会生成指标数据点和跟踪记录 span,这些数据点和 span 会被写入并编入索引。
- Kubernetes 资源清单大小:无论请求负载如何,系统都会定期存储
k8sobjects快照。
写入吞吐量是最初的压力点;随着数据量增长,如果不调整架构或保留策略,查询性能(由界面后端使用)会下降。
默认配置针对的是中等单节点部署;负载较重时,可能需要增加 replicasPerShard 或 shards,或调整保留 TTL。
界面后端
- 无状态且受查询限制;可根据 ClickHouse 中的数据量(而非实时请求吞吐量)进行扩缩。
- 随着代理数量和历史数据的增加,舰队图和跟踪查询的费用也会增加。
代理
- 基于 Python 的智能体:
- 每个代理都是一个独立的 Deployment,添加代理纯粹是叠加,不会产生共享状态惩罚。
- 每个代理的资源消耗量会随着请求并发量和工具链深度而扩缩。
- 基于 Go 的代理:
- 空闲内存用量减少约 36 倍(每个代理在静止状态下为 7 MB,而之前为 253 MB)。
- 使用大约小 11 倍的容器映像(29.7 MB 与 335.4 MB)。
- 启动速度大约快 6.7 倍(2.7 秒,而之前为 18.2 秒)。
扩缩特性摘要
下表总结了每个组件如何随代理数量和请求负载而扩缩:
| 组件 | 对智能体数量敏感 | 对请求负载敏感 | 备注 |
|---|---|---|---|
| 控制器 | 中 | 低 | 为每个智能体维护 A2A 流;不受 LLM 调用速率的影响 |
| 扩缩器 | 无 | 无 | 事件驱动型,实际上是静态的 |
| KMCP 企业控制器 | 无 | 无 | 仅对 MCPServer 资源更改做出响应 |
| MCP 服务器 | 高 | 高 | 每个 MCPServer CR 一个 Deployment;在工具执行的热路径中 |
| 遥测收集器 | 高 | 高 | 主要伸缩面;与请求量呈线性关系 |
| ClickHouse | 高 | 高 | 主要瓶颈;由基数和写入速率驱动 |
| 界面后端 | 低 | 低 | 受查询限制;受历史数据量影响 |
| 智能体(Python 和 Go) | 不适用 | 高 | 独立部署;通过并发进行扩缩 |
存储空间大小调整
下表提供了有关初始存储卷大小的初步建议:
- PostgreSQL 存储(kagent 状态,包括会话、记忆和生命周期管理)会随着聊天会话数量的增加而线性扩缩。
- ClickHouse 存储空间(跟踪)也会随着唯一聊天会话数量的增加而线性扩缩。
| 组件 | 建议的初始音量 |
|---|---|
| PostgreSQL | 50 GiB |
| ClickHouse | 50 GiB |
部署规模调整
以下部分列出了 Helm 图表的默认 CPU、内存和存储资源请求和限制。
管理图表
management 图表会部署 solo-enterprise-ui Pod、独立遥测收集器和 ClickHouse。
solo-enterprise-ui 个 Pod 容器
下表列出了 solo-enterprise-ui Pod 容器的默认资源请求和限制:
| 容器 | 已启用 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|---|
ui-backend |
始终 | 250m | 500m | 512Mi | 1024Mi |
ui-frontend |
始终 | 250m | 500m | 512Mi | 1024Mi |
k8sobjects-collector |
telemetry.k8sobjects.enabled |
100m | 300m | 384Mi | 768Mi |
idp |
autoAuth 已启用 |
100m | 250m | 256Mi | 512Mi |
遥测收集器(StatefulSet 或 Deployment)
下表列出了遥测收集器的默认资源请求和限制:
| 组件 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|
telemetry-collector |
200m | 1000 米 | 512Mi | 2Gi |
遥测网关(OpenTelemetry 收集器)也会单独定义自己的资源:
| 组件 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|
telemetry-gateway |
100m | 500m | 300Mi | 1024Mi |
ClickHouse 子图表
下表列出了 ClickHouse 子图表的默认资源请求和限制,这些请求和限制基于 Bitnami 2xlarge 预设,并使用 replicasPerShard 和 shards 值进行配置:
| 组件 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 | 临时存储 |
|---|---|---|---|---|---|
clickhouse |
1000m(1 个核心) | 6000m(6 核) | 3072Mi (3 GiB) | 12288Mi (12 GiB) | 50Mi |
kagent-enterprise 图表
kagent-enterprise 图表会部署核心控制器、kmcp-enterprise 子图表、内置 MCP 工具服务器和可选智能体。
核心组件
下表列出了核心控制器的默认资源请求和限制:
| 组件 | 已启用 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|---|
controller |
始终 | 100m | 2000m(2 个核心) | 128Mi | 512Mi |
kmcp-enterprise 子图表
下表列出了 kmcp-enterprise 控制器的默认资源请求和限制:
| 组件 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|
kmcp-enterprise-controller |
100m | 500m | 128Mi | 512Mi |
内置工具
下表列出了内置工具服务器的默认资源请求和限制:
| 组件 | 已启用 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|---|
kagent-tools |
kagent-tools.enabled |
100m | 1000 米 | 256Mi | 1Gi |
grafana-mcp |
grafana-mcp.enabled |
100m | 500m | 128Mi | 512Mi |
querydoc |
querydoc.enabled |
100m | 500m | 128Mi | 512Mi |
代理
所有代理都共享相同的默认资源配置文件。每个代理默认处于停用状态,需要单独启用:
| 代理 | CPU 请求 | CPU 上限 | 内存请求 | 内存上限 |
|---|---|---|---|---|
k8s-agent |
100m | 1000 米 | 256Mi | 1Gi |
kgateway-agent |
100m | 1000 米 | 256Mi | 1Gi |
istio-agent |
100m | 1000 米 | 256Mi | 1Gi |
promql-agent |
100m | 1000 米 | 256Mi | 1Gi |
observability-agent |
100m | 1000 米 | 256Mi | 1Gi |
argo-rollouts-agent |
100m | 1000 米 | 256Mi | 1Gi |
helm-agent |
100m | 1000 米 | 256Mi | 1Gi |
cilium-policy-agent |
100m | 1000 米 | 256Mi | 1Gi |
cilium-manager-agent |
100m | 1000 米 | 256Mi | 1Gi |
cilium-debug-agent |
100m | 1000 米 | 256Mi | 1Gi |