详情页标题前

腾讯云容器服务Ingress 使用 TkeServiceConfig 配置 CLB同尘科技

详情页1

TkeServiceConfig

TkeServiceConfig 是腾讯云容器服务 TKE 提供的自定义资源 CRD,通过 TkeServiceConfig 能够帮助您更灵活的进行 Ingress 管理负载均衡的各种配置。

使用场景

Ingress YAML 的语义无法定义的负载均衡参数和功能,可以通过 TkeServiceConfig 来配置。

配置说明

使用 TkeServiceConfig 能够帮您快速进行负载均衡器的配置。通过 Ingress 注解 ingress.cloud.tencent.com/tke-service-config:,您可以指定目标配置应用到 Ingress 中。注意TkeServiceConfig 资源需要和 Ingress 处于同一命名空间。TkeServiceConfig 不会帮您配置并修改协议、端口、域名以及转发路径,您需要在配置中描述协议、端口、域名还有转发路径以便指定配置下发的转发规则。每个七层的监听器下可有多个域名,每个域名下可有多个转发路径。因此,在一个 TkeServiceConfig 中可以声明多组域名、转发规则配置,目前主要针对负载均衡的健康检查以及对后端访问提供配置。通过指定协议和端口,配置能够被准确地下发到对应监听器:spec.loadBalancer.l7Listeners.protocol:七层协议spec.loadBalancer.l7Listeners.port:监听端口通过指定协议、端口、域名以及访问路径,可以配置转发规则级别的配置。例如,后端健康检查、负载均衡方式。spec.loadBalancer.l7Listeners.protocol:七层协议spec.loadBalancer.l7Listeners.port:监听端口spec.loadBalancer.l7Listeners.domains[].domain:域名spec.loadBalancer.l7Listeners.domains[].rules[].url:转发路径spec.loadBalancer.l7listeners.protocol.domain.rules.url.forwardType:指定后端协议。后端协议是指 CLB 与后端服务之间的协议:后端协议选择 HTTP 时,后端服务需部署 HTTP 服务。后端协议选中 HTTPS 时,后端服务需部署 HTTPS 服务,HTTPS 服务的加解密会让后端服务消耗更多资源。更多请查看 CLB 配置 HTTPS 监听器。说明当您的域名配置为默认值,即公网或内网 VIP 时,可以通过 domain 填空值的方式进行配置。

Ingress 与 TkeServiceConfig 关联行为

1. 创建 Ingress 时,设置 ingress.cloud.tencent.com/tke-service-config-auto: “true”; ,将自动创建 -auto-ingress-config。 您也可以通过 ingress.cloud.tencent.com/tke-service-config: 直接指定您自行创建的 TkeServiceConfig。两个注解不可同时使用。 2. 您为 Service\Ingress 使用的自定义配置,名称不能以 -auto-service-config-auto-ingress-config 为后缀。3. 其中自动创建的 TkeServiceConfig 存在以下同步行为:更新 Ingress 资源时,新增若干7层转发规则,如果该转发规则没有对应的 TkeServiceConfig 配置片段。Ingress-Controller 将主动添加 TkeServiceConfig 对应片段。删除若干7层转发规则时,Ingress-Controller 组件将主动删除 TkeServiceConfig 对应片段。删除 Ingress 资源时,联级删除该 TkeServiceConfig。用户修改 Ingress 默认的 TkeServiceConfig,TkeServiceConfig 内容同样会被应用到负载均衡。4. 您也可以参考下列 TkeServiceConfig 完整配置参考,自行创建需要的 CLB 配置,Service 通过注解 ingress.cloud.tencent.com/tke-service-config: 引用该配置。5. 其中您手动创建的 TkeServiceConfig 存在以下同步行为:当用户在 Ingress 中使用配置注解时,负载均衡将会即刻进行设置同步。当用户在 Ingress 中删除配置注解时,负载均衡将会保持不变。修改 TkeServiceConfig 配置时,引用该配置的 Ingress 的负载均衡将会根据新的 TkeServiceConfig 进行设置同步。当 Ingress 的监听器没有找到对应配置时,该监听器将不会进行修改。Ingress 的监听器找到对应配置时,若配置中没有声明的属性,该监听器将不会进行修改。

示例

Deployment 示例:jetty-deployment.yaml

apiVersion: apps/v1kind: Deploymentmetadata:  labels:    app: jetty  name: jetty-deployment  namespace: defaultspec:  progressDeadlineSeconds: 600  replicas: 3  revisionHistoryLimit: 10  selector:    matchLabels:      app: jetty  strategy:    rollingUpdate:      maxSurge: 25%      maxUnavailable: 25%    type: RollingUpdate  template:    metadata:      creationTimestamp: null      labels:        app: jetty    spec:      containers:      - image: jetty:9.4.27-jre11        imagePullPolicy: IfNotPresent        name: jetty        ports:        - containerPort: 80          protocol: TCP        - containerPort: 443          protocol: TCP        resources: {}        terminationMessagePath: /dev/termination-log        terminationMessagePolicy: File      dnsPolicy: ClusterFirst      restartPolicy: Always      schedulerName: default-scheduler      securityContext: {}      terminationGracePeriodSeconds: 30

Service 示例:jetty-service.yaml

apiVersion: v1kind: Servicemetadata:  name: jetty-service  namespace: defaultspec:  ports:  - name: tcp-80-80    port: 80    protocol: TCP    targetPort: 80  - name: tcp-443-443    port: 443    protocol: TCP    targetPort: 443  selector:    app: jetty  type: NodePort

该示例包含以下配置:
Service 的 NodePort 类型,声明了两个 TCP 服务。一个在80端口,一个在443端口。

Ingress:jetty-ingress.yaml

apiVersion: extensions/v1beta1kind: Ingressmetadata:  annotations:    kubernetes.io/ingress.rule-mix: "true"    kubernetes.io/ingress.http-rules: '[{"path":"/health","backend":{"serviceName":"jetty-service","servicePort":"80"}}]'    kubernetes.io/ingress.https-rules: '[{"path":"/","backend":{"serviceName":"jetty-service","servicePort":"443","host":"sample.tencent.com"}}]'    ingress.cloud.tencent.com/tke-service-config: jetty-ingress-config    # 指定已有的 tke-service-config    # ingress.cloud.tencent.com/tke-service-config-auto: "true"    # 自动创建 tke-service-config  name: jetty-ingress  namespace: defaultspec:  rules:  - http:      paths:      - backend:          serviceName: jetty-service          servicePort: 80        path: /health  - host: "sample.tencent.com"    http:      paths:      - backend:          serviceName: jetty-service          servicePort: 443        path: /  tls:  - secretName: jetty-cert-secret

该示例包含以下配置:使用了混合协议,使用默认域名(公网 IP)暴露了一个 HTTP 服务,使用 sample.tencent.com 域名暴露了一个 HTTPS 服务。HTTP 服务的转发路径是 /health,HTTPS 服务的转发路径是/。使用了 jetty-ingress-config 负载均衡配置。

TkeServiceConfig 示例:jetty-ingress-config.yaml

apiVersion: cloud.tencent.com/v1alpha1kind: TkeServiceConfigmetadata:  name: jetty-ingress-config  namespace: defaultspec:  loadBalancer:    l7Listeners:    - protocol: HTTP      port: 80      domains:      - domain: ""     # domain为空表示使用VIP作为域名        rules:        - url: "/health"          forwardType: HTTP # 指定后端协议为 HTTP          healthCheck:            enable: false    - protocol: HTTPS      port: 443      defaultServer: "sample.tencent.com" # 默认域名      keepaliveEnable: 1                  # 监听器开启长连接(非keepalive白名单用户,请勿声明该字段)      domains:      - domain: "sample.tencent.com"        rules:        - url: "/"          forwardType: HTTPS # 指定后端协议为 HTTPS          session:            enable: true            sessionExpireTime: 3600          healthCheck:            enable: true            intervalTime: 10 # intervalTime 要大于 timeout,否则会出错            timeout: 5 # timeout 要小于 intervalTime,否则会出错            healthNum: 2            unHealthNum: 2            httpCheckPath: "/checkHealth"            httpCheckDomain: "sample.tencent.com" #注意:健康检查必须使用固定域名进行探测,如果您在.spec.loadBalancer.l7Listeners.protocol.domains.domain 里填写的是泛域名,一定要使用 httpCheckDomain 字段明确具体需要健康检查的域名,否则泛域名不支持健康检查。            httpCheckMethod: HEAD            httpCode: 31 # 可选值:1~31,默认 31。 1 表示探测后返回值 1xx 代表健康,2 表示返回 2xx 代表健康,4 表示返回 3xx 代表健康,8 表示返回 4xx 代表健康,16 表示返回 5xx 代表健康。若希望多种返回码都可代表健康,则将相应的值相加。          scheduler: WRR

该示例包含以下配置:
该 TkeServiceConfig 名称为 jetty-ingress-config。且在七层监听器配置中,声明了两段配置:1. 80端口的 HTTP 监听器将会被配置,其中包含域名配置,是默认域名对应负载均衡的 VIP。
/health 路径下的健康检查被关闭了。2. 443端口的 HTTPS 监听器将会被配置。其中包含域名配置,域名是 sample.tencent.com。该域名下仅描述了一个转发路径为/的转发规则配置,其中配置包含以下内容:打开健康检查,健康检查间隔调整为10s,健康阈值2次,不健康阈值2次。通过 HEAD 请求进行健康检查,检查路径为 /checkHealth,检查域名为 sample.tencent.com。打开会话保持功能,会话保持的超时时间设置为3600s。转发策略配置为:按权重轮询。

kubectl 配置命令

➜ kubectl apply -f jetty-deployment.yaml➜ kubectl apply -f jetty-service.yaml➜ kubectl apply -f jetty-ingress.yaml➜ kubectl apply -f jetty-ingress-config.yaml
➜ kubectl get podsNAME READY STATUS RESTARTS AGEjetty-deployment-8694c44b4c-cxscn 1/1 Running 0 8m8sjetty-deployment-8694c44b4c-mk285 1/1 Running 0 8m8sjetty-deployment-8694c44b4c-rjrtm 1/1 Running 0 8m8s
# 获取TkeServiceConfig配置列表➜ kubectl get tkeserviceconfigs.cloud.tencent.comNAME AGEjetty-ingress-config 52s
# 更新修改TkeServiceConfig配置➜ kubectl edit tkeserviceconfigs.cloud.tencent.com jetty-ingress-configtkeserviceconfigs.cloud.tencent.com/jetty-ingress-config edited



容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/147517.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储通过异常图片检测防止暗刷流量

    背景 用户使用对象存储 COS 来搭建个人网站或图床服务,享受高效稳定可靠的数据存储服务的同时,也面临着流量盗刷的问题。COS 提供了多种 防盗刷手段 来帮助开发者合理配置存储桶,降低因类似问题带来的大额资金损失的风险。本文介绍的图片异常检测能力,通过有效识别图片中是否隐含视频等文件的方式,精准检测出异常图片文件,通过删除或者转移异常图片文件,精准打击黑产盗…

    2023年12月9日
  • 腾讯云云点播多端播放器

    简介 云点播提供了多端的播放器 SDK,具有如下优势: 优势 说明 平台覆盖广 涵盖 iOS、Android、Web(Flash/HTML5)、Flutter。 功能丰富 提供首屏秒开、播放器片头、暂停和片尾贴片、边播边缓存、倍速播放、视频打点、媒体弹幕、外挂字幕、播放器 LOGO 自定义和播放器密码设置等多种功能,用户可以根据业务需求选择功能,助力业务生态…

    腾讯云 2023年12月9日
  • 腾讯云轻量应用服务器Windows 实例离线重置密码失败或无效问题排查云小二

    本文档以 Windows Server 2012 R2 操作系统为例,介绍 Windows 轻量应用服务器实例因重置密码失败或者不生效的排查方法和解决方案。 现象描述 重置实例密码后,提示由于系统繁忙,您的实例重置实例密码失败(7617d94c)。重置实例密码后,新密码不生效,登录密码仍为原密码。 可能原因 导致重置实例密码失败或者不生效的可能原因如下:轻量…

    2023年12月9日
  • 请教一个机器学习PAI问题:请问这个该找项目空间运维配置什么权限呢?-云小二-阿里云

    请教一个机器学习PAI问题:我们在ODPS的xxx_dev项目空间调用easyrec训练,需要访问yyy项目空间的OSS,报以下错误:请问这个该找项目空间运维配置什么权限呢?

    2023年12月24日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储Stable Diffusion AI 绘画审核

    概述 Serverless应用中心 提供了 stable-diffusion-webui 项目的 Serverless 化部署能力。该应用创建成功后,您可以使用 stable diffusion webui 的全部能力,例如文生图、图生图,以及 Lora、ControlNet 等高阶能力。本文将介绍如何通过图片审核服务对应用生成的图片做内容合规检测。 准备工…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。