如何自定义GKE多集群部署?含MCI等资源的进阶配置方案
GKE Fleet 多集群服务(MCS/MCI)全量自定义配置指南
一、MultiClusterIngress(MCI)自定义配置
公开Spec配置
- 前端端口与协议管控:仅定义HTTPS端口即可完全禁用HTTP访问(不配置80端口),示例:
spec: frontend: ports: - port: 443 protocol: HTTPS tls: mode: SIMPLE secretName: my-tls-secret - 集群路由策略:通过
spec.clusterSelector用标签匹配指定全局目标集群;也可在spec.rules[*].http.paths[*].backend.clusterSelector为单个路径单独指定集群 - 路径匹配规则:支持精确匹配、前缀匹配、正则匹配(通过
pathType字段定义) - TLS模式配置:支持SIMPLE(单向认证)、MUTUAL(双向认证)、Passthrough(透传)三种模式,可绑定多个TLS证书
进阶/未公开注解
- 静态负载均衡器名称:
multicluster-ingress.cloud.google.com/load-balancer-name: "my-custom-lb" - 强制区域负载均衡器:
multicluster-ingress.cloud.google.com/load-balancer-type: "regional"(默认创建全局LB) - 防火墙规则自定义标签:
multicluster-ingress.cloud.google.com/firewall-tags: "my-fw-tag"(方便后续在GCP控制台筛选管理防火墙) - 跳过自动健康检查创建:
multicluster-ingress.cloud.google.com/skip-health-check: "true"(需配合BackendConfig手动配置健康检查)
二、MultiClusterService(MCS)自定义配置
公开Spec配置
- 后端集群关联:
spec.clusterSelector用标签筛选绑定服务的目标集群 - 端口协议映射:在
spec.ports中定义容器端口与服务端口的映射,支持TCP/UDP协议 - 会话保持配置:通过
spec.sessionAffinity设置客户端IP会话保持,搭配sessionAffinityConfig.clientIP.timeoutSeconds定义超时时间
进阶/未公开注解
- 静态NEG名称:
cloud.google.com/neg-name: "my-custom-neg"(为每个集群的NEG指定固定名称) - NEG命名模板:
cloud.google.com/neg-naming-pattern: "cluster-{cluster-name}-service-{service-name}"(自定义NEG的命名规则) - 强制内部NEG:
cloud.google.com/neg-type: "internal"(默认创建外部NEG) - 禁用自动NEG创建:
cloud.google.com/neg: "false"(仅当无需NEG时使用)
三、FrontendConfig自定义配置
公开Spec配置
- HTTP重定向控制:
spec.redirectToHttps.enabled: true可将HTTP请求重定向至HTTPS(若要彻底禁用HTTP,直接不在MCI中配置80端口即可) - HTTP/2启用:
spec.http2.enabled: true开启HTTP/2协议支持 - 会话超时设置:
spec.sessionTimeoutSec: 3600定义客户端会话超时时长 - 请求头自定义:
spec.requestHeadersToAdd添加自定义请求头,spec.requestHeadersToRemove移除指定请求头
进阶/未公开注解
- QUIC协议启用:
networking.gke.io/frontend-config-enable-quic: "true" - 关联自定义SSL策略:
networking.gke.io/ssl-policy: "my-custom-ssl-policy"(绑定预先创建的GCP SSL策略,控制SSL协议套件)
四、BackendConfig自定义配置
公开Spec配置
- 后端QPS限制:通过
spec.backendServiceConfig.maxRate设置全局每秒请求数上限,spec.backendServiceConfig.maxRatePerInstance设置单实例每秒请求数上限,示例:spec: backendServiceConfig: maxRate: 1000 maxRatePerInstance: 100 - 自定义健康检查:
spec.healthCheck定义健康检查路径、端口、超时时间、间隔时间等参数,适配业务健康检查逻辑 - 连接 draining 配置:
spec.connectionDraining.drainingTimeoutSec: 300设置实例下线时的连接保持超时 - CDN启用与缓存:
spec.cdn.enabled: true开启CDN,通过spec.cdn.cachePolicy配置缓存规则
进阶/未公开注解
- 静态后端服务名称:
cloud.google.com/backend-service-name: "my-custom-backend-service" - 日志采样率设置:
cloud.google.com/backend-service-log-sampling-rate: "0.5"(设置日志采样比例,取值0-1) - 强制区域后端服务:
cloud.google.com/backend-service-region: "us-central1"(指定后端服务所属区域,默认与集群同区域)
核心定制需求解决方案
1. 静态命名GCP资源
- 负载均衡器:使用MCI注解
multicluster-ingress.cloud.google.com/load-balancer-name指定固定名称 - NEG:通过MCS注解
cloud.google.com/neg-name指定单个NEG名称,或用cloud.google.com/neg-naming-pattern定义批量命名模板 - 防火墙规则:GKE自动生成的防火墙规则命名格式为
k8s-fw-<cluster-name>-<namespace>-<ingress-name>-<port>,目前无公开注解可自定义名称,但可通过MCI的multicluster-ingress.cloud.google.com/firewall-tags添加自定义标签,方便后续筛选管理
2. 限制后端每秒请求数
通过BackendConfig的spec.backendServiceConfig.maxRate(全局QPS上限)和maxRatePerInstance(单实例QPS上限)组合配置,精准控制后端请求流量
3. 禁用HTTP协议
在MCI的spec.frontend.ports中仅配置HTTPS端口(443),不添加HTTP端口(80),即可让负载均衡器仅监听HTTPS,彻底禁用HTTP访问
额外定制建议
- 资源标签同步:为所有MCI/MCS/FrontendConfig/BackendConfig资源添加自定义
labels,GKE会自动将这些标签同步到对应的GCP资源(LB、NEG、后端服务等),方便在GCP控制台进行筛选和批量管理 - 跨集群流量分配:在MCI的
spec.rules[*].http.paths[*].backend.weight配置不同集群的流量权重,实现跨区域/跨集群的流量调度 - 健康检查精细化配置:避免使用默认健康检查,通过BackendConfig配置符合业务逻辑的健康检查路径、阈值和超时时间,减少误判
- SSL安全加固:创建GCP自定义SSL策略(限制TLS版本、加密套件)后,通过FrontendConfig注解关联,提升服务安全性
内容的提问来源于stack exchange,提问作者Casey
相关产品推荐
相关产品推荐

