详情页标题前

腾讯云容器服务负载均衡相关同尘科技

详情页1

本文汇总了负载均衡相关常见问题,介绍与 Service/Ingress CLB 相关的各种常见问题的出现原因及解决办法。本文档需要您:熟悉 K8S 的 基本概念。例如 Pod、工作负载/Workload、Service、Ingress 等。熟悉 腾讯云控制台 容器服务之 TKE Serverless 集群的常规操作。熟悉通过 kubectl 命令行工具操作 K8S 集群中的资源。注意:您可通过多种方式操作 K8S 集群中的资源,本文档向您介绍如何通过腾讯云控制台进行操作,及如何通过 kubectl 命令行工具进行操作。

TKE Serverless 会为哪些 Ingress 创建 CLB 实例?

TKE Serverless 会为满足如下条件的 Ingress 创建 CLB 实例:

对 Ingress 资源的要求 其他说明
annotations 中含有如下键值对: kubernetes.io/ingress.class: qcloud 如果不希望 TKE Serverless 为 Ingress 创建 CLB 实例,例如希望使用 Nginx-ingress,则只需保证 annotations 中不包含前述键值对。

如何查看 TKE Serverless 为 Ingress 创建的 CLB 实例?

如果成功为 Ingress 创建 CLB 实例,TKE Serverless 会将 CLB 实例的 VIP 写入 Ingress 资源的 status.loadBalancer.ingress 中,并且将如下键值对写入 annotations 中:

kubernetes.io/ingress.qcloud-loadbalance-id: CLB 实例 ID

如需查看 TKE Serverless 为 Ingress 创建的 CLB 实例,具体步骤如下:1. 登录容器服务控制台,选择左侧导航栏中的 集群。2. 在集群列表页面,选择集群 ID 进入集群管理页面。3. 在集群管理页面,选择左侧服务与路由 > Ingress。4. 在 “Ingress” 页面,查看 CLB 实例 ID 及其 VIP。如下图所示:

腾讯云容器服务负载均衡相关同尘科技



TKE Serverless 会为哪些 Service 创建 CLB 实例?

TKE Serverless 会为满足如下条件的 Service 创建 CLB 实例:

K8S 版本 对 Service 资源的要求
所有 TKE Serverless 支持的 K8S 版本 spec.type 为 LoadBalancer
魔改版 K8S(kubectl version 返回的 Server GitVersion 带有 “eks.*” 或 “tke.*” 后缀) spec.type 为 ClusterIP,并且 spec.clusterIP 的值不是None(即非 Headless 的 ClusterIP 类型的 Service)
非魔改版 K8S(kubectl version 返回的 Server GitVersion 不带 “eks.*” 或 “tke.*” 后缀) spec.type 为 ClusterIP,并且明确指定 spec.clusterIP 为空字符串(””)

注意:如果成功创建 CLB 实例,TKE Serverless 会将如下键值对写入 Service annotations 中:

service.kubernetes.io/loadbalance-id: CLB 实例 ID

如何查看 TKE Serverless 为 Service 创建的 CLB 实例?

如果成功为 Service 创建 CLB 实例,TKE Serverless 会将 CLB 实例的 VIP 写入 Service 资源的 status.loadBalancer.ingress 中,并且将如下键值对写入 annotations 中:

kubernetes.io/ingress.qcloud-loadbalance-id: CLB 实例 ID

如需查看 TKE Serverless 为 Service 创建的 CLB 实例,具体步骤如下:1. 登录容器服务控制台,选择左侧导航栏中的 集群。2. 在集群列表页面,选择集群 ID 进入集群管理页面。3. 在集群管理页面,选择左侧服务与路由 > Service。4.Service 页面,查看 CLB 实例 ID 及其 VIP。如下图所示:

腾讯云容器服务负载均衡相关同尘科技



为什么 Service 的 ClusterIP 无效(无法正常访问)或没有 ClusterIP ?

对于 spec.type 为 LoadBalancer 的 Service,目前 TKE Serverless 默认不分配 ClusterIP,或者分配的 ClusterIP 无效(无法正常访问)。如果用户同时需要使用 ClusterIP 访问 Service,可以通过在 annotations 中加入如下键值对指示 TKE Serverless 基于内网 CLB 实现 ClusterIP:

service.kubernetes.io/qcloud-clusterip-loadbalancer-subnetid: Service CIDR 子网 ID

Service CIDR 子网 ID 在创建集群时指定,为 subnet-******** 字符串。您可在 CLB 基本信息页面中查看该子网 ID 信息。注意:只有使用魔改版 K8S(kubectl version 返回的 Server GitVersion带有 “eks.*” 或 “tke.*” 后缀)的 TKE Serverless 集群才支持该特性。对于早期创建的、使用非魔改版 K8S(kubectl version 返回的 Server GitVersion 不带 “eks.*” 或 “tke.*” 后缀)的 TKE Serverless 集群,您需要升级 K8S 版本后使用该特性。

如何指定 CLB 实例类型(公网或内网)?

您可以通过容器服务控制台 或通过 kubectl 命令行工具指定 CLB 实例类型:通过容器服务控制台操作通过 kubectl 命令行工具操作对于 Ingress,通过“网络类型”选择“公网”或“内网”:

腾讯云容器服务负载均衡相关同尘科技

对于 Service,通过“服务访问方式”控制,其中“VPC内网访问”对应内网 CLB 实例:

腾讯云容器服务负载均衡相关同尘科技

默认创建的 CLB 实例是“公网”类型。如需创建“内网”类型的 CLB 实例,则需为 Service 或 Ingress 加上相应的 annotation:

资源类型 需要在 annotations 中添加的键值对
Service service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: 子网 ID
Ingress kubernetes.io/ingress.subnetId: 子网 ID

注意:子网 ID是形如 subnet-******** 的字符串,并且该子网必须在创建集群时为 “集群网络”指定的 VPC 中,该 VPC 信息可在腾讯云控制台集群 “基本信息” 中查询到。

如何指定使用已有 CLB 实例?

您可以通过容器服务控制台 或通过 kubectl 命令行工具指定使用已有 CLB 实例:通过容器服务控制台 操作通过 kubectl 命令行工具操作在创建 Service 或 Ingress 时,可以选择“使用已有” CLB 实例。对于 Service,还可以在 Service 创建之后,通过“更新访问方式”切换成“使用已有” CLB 实例。在创建 Service/Ingress 或变更 Service 时,为 Service 或 Ingress 加上相应的 annotation 即可:

资源类型 需要在 annotations 中添加的键值对
Service service.kubernetes.io/tke-existed-lbid: CLB 实例 ID
Ingress kubernetes.io/ingress.existLbId: CLB 实例 ID

注意:“已有 CLB 实例” 不能是 “TKE Serverless 为 Service 或 Ingress 创建的 CLB 实例”,并且 TKE Serverless 不支持多个 Service/Ingress 共用同一个已有 CLB 实例。

如何查看 CLB 实例的访问日志?

仅7层 CLB 实例支持配置访问日志,但 TKE Serverless 为 Ingress 创建的7层 CLB 实例默认不开启访问日志。如需开启 CLB 实例的访问日志,可在 CLB 实例的详情页面进行操作。具体步骤如下:1. 登录容器服务控制台,选择左侧导航栏中的 集群。2. 在集群列表页面,选择集群 ID 进入集群管理页面。3. 在集群管理页面,选择左侧服务与路由 > Ingress。4. 在 “Ingress” 页面,选择 CLB 实例 ID 进入 CLB 基本信息页面。如下图所示:

腾讯云容器服务负载均衡相关同尘科技

5. 在 CLB 基本信息页面的“访问日志(七层)”中,单击 

腾讯云容器服务负载均衡相关同尘科技

,在弹出窗口中进行开启。如下图所示:

腾讯云容器服务负载均衡相关同尘科技



为什么 TKE Serverless 没有为 Ingress 或 Service 创建 CLB 实例?

请参考 TKE Serverless 会为哪些 Ingress 创建 CLB 实例 及 TKE Serverless 会为哪些 Service 创建 CLB 实例 问题的回答,确认对应的资源是否具备对应的条件。如具备条件但未成功创建 CLB 实例,可通过 kubectl describe 命令查看“资源”相关事件。
通常 TKE Serverless 会输出相关的 Warning 类型事件。示例图如下,输出事件表明子网中已经无可用的 IP 资源,所以无法成功创建 CLB 实例。

腾讯云容器服务负载均衡相关同尘科技



如何在多个 Service 中使用相同的负载均衡?

TKE Serverless 集群默认多个 Service 不可共用同一个 CLB 实例。如果您希望 Service 复用其他 Service 占用的 CLB,请添加此 annotation 并将 value 填写为 “true”。service.kubernetes.io/qcloud-share-existed-lb: true,关于此 annotation 的详细说明请参见 Annotation 说明。

为什么访问 CLB VIP 时失败?

请您按照以下步骤进行分析:

查看 CLB 实例类型

1. 在 “Service” 或 “Ingress” 页面,选择 CLB 实例 ID 进入 CLB 基本信息页面。如下图所示:

腾讯云容器服务负载均衡相关同尘科技

2. 您可在 CLB 基本信息页面中查看上述 CLB 实例的“实例类型”。

确认访问 CLB VIP 的环境是否正常

若 CLB 实例“实例类型”为内网,则其 VIP 只能在所属的 VPC 内访问。
由于 TKE Serverless 集群中 Pods 的 IP 是 VPC 内的弹性网卡的 IP,所以可以在 Pods 中访问集群内任何 Service 或 Ingress 的 CLB 实例的 VIP。注意通常 LoadBalancer 系统都存在回环问题(例如 AzureLoad Balancer 问题排查指南),请勿在工作负载所属的 Pods 中通过该工作负载(经 Service 或 Ingress )对外暴露的 VIP 访问该工作负载提供的服务。即 Pods 不要通过 VIP(包含“内网类型”及“外网类型”)访问 Pods 自己提供的服务。否则可能导致延迟增加,或者(在 VIP 对应的规则下只有一个 RS/Pod 时)访问不通。若 CLB 实例“实例类型”为公网,则其 VIP 可以在有公网访问能力的环境中访问。
若要在集群内访问公网 VIP,请确保已经通过配置 NAT 网关或其他方式为集群开启了公网访问能力。

查看 CLB 下的 RS 包括(且仅包括)预期的 Pods 的 IP + 端口

您可在 CLB 管理页面中,选择监听器管理页面,查看(7层协议)转发规则、(4层协议)绑定的后端服务。其中的 IP 地址预期即为各个 Pod 的 IP。TKE Serverless 为某个 Ingress 创建的 CLB 示例图如下:

腾讯云容器服务负载均衡相关同尘科技



确认对应的 Endpoints 是否正常

如果已正确地为工作负载(Workload)设置了标签(Labels),并且正确地为 Service 资源设置了选择算符(Selectors),则在工作负载的 Pods 成功运行之后,即可通过 kubectl get endpoints 命令查看 Pods 被 K8S 列入到 Service 对应的 Endpoints 的就绪地址列表中。示例图如下:

腾讯云容器服务负载均衡相关同尘科技


而已创建、但状态异常的 Pods 会被 K8S 列入到 Service 对应的 Endpoints 的未就绪地址列表中。示例图如下:

腾讯云容器服务负载均衡相关同尘科技

注意:对于异常的 Pods,可通过 kubectl describe 命令查看异常的原因。示例命令如下:

kubectl describe pod nginx-7c7c647ff7-4b8n5 -n demo

确认 Pods 是否能够正常提供服务

即使 Running 状态的 Pods 也可能无法正常对外提供服务。例如,未监听指定的协议+端口、Pods 内部逻辑错误、处理过程阻塞等。您可通过 kubectl exec 命令登录至 Pod 内,并使用 telnet/wget/curl 命令或自定义的客户端工具直接访问 Pod IP+端口。若 Pod 内直接访问失败,则需要进一步分析导致 Pod 无法正常提供服务的原因。

确认 Pod 绑定的安全组是否放通 Pods 提供服务的协议和端口

安全组控制 Pods 的网络访问策略,如同 Linux 服务器中的 IPTables 规则。请结合实际情况进行查看:通过容器服务控制台创建工作负载使用 kubectl 命令创建工作负载交互流程会强制要求指定一个安全组,TKE Serverless 将使用该安全组控制 Pods 的网络访问策略。用户选择的安全组会被存储在工作负载的 spec.template.metadata.annotations,最终添加到 Pods 的 annotations 中。示例如下:

腾讯云容器服务负载均衡相关同尘科技

若您通过 kubectl 命令创建工作负载,且没有(通过 annotations)为 Pods 指定安全组,则 TKE Serverless 会使用账号下的同地域的默认项目的 default 安全组。查看步骤如下:1. 登录私有网络控制台,选择左侧导航栏中的 安全组。2. 在“安全组”页面上方,选择同地域的默认项目。3. 可在列表中查看 default 安全组,可单击修改规则查看详情。如下图所示:

腾讯云容器服务负载均衡相关同尘科技



联系我们

若至此仍未找到问题原因,您可通过 在线客服 或 提交工单 联系 TKE 团队解决问题。
容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

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

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

相关推荐

  • 腾讯云负载均衡均衡算法选择与权重配置示例

    负载均衡算法比较分析 加权轮询算法 Weighted Round-Robin Scheduling 加权轮询算法是以轮叫的方式、依次请求调度不同的服务器。加权轮询调度算法可以解决服务器间性能不一的情况,它用相应的权值表示服务器的处理性能,按权值的高低和轮询方式分配请求到各服务器。加权轮询算法根据新建连接数来调度,权值高的服务器先收到连接,权重值越高被轮询到的…

    腾讯云 2023年12月9日
  • 腾讯云对象存储PUT Bucket accelerate

    功能描述 PUT Bucket accelerate 接口实现启用或者暂停存储桶的全球加速功能。细节分析1. 如果您从未在存储桶上启用过全球加速功能,则 GET Bucket accelerate 请求不返回全球加速功能配置状态。2. 开启全球加速功能后,只能暂停,不能关闭。3. 设置全球加速功能状态值为 Enabled 或 Suspended,表示开启或暂…

    腾讯云 2023年12月9日
  • 阿里云负载均衡使用CLB部署HTTPS业务(单向认证)-云淘科技

    要配置HTTPS单向认证的监听,您仅需要在配置监听时上传服务器证书。 前提条件 您已购买证书。如您需购买阿里云SSL证书,更多操作,请参见购买SSL证书服务。 您已经创建了实例ECS01和ECS02,并部署了2个不同的应用服务。具体操作,请参见使用向导创建实例。 操作流程 步骤一:上传服务器证书在配置HTTPS监听(单向认证)前,您需要购买服务器证书,并将服…

    阿里云负载均衡 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云直播录制状态事件通知

    直播录制是根据推流域名已绑定好的录制模板实时录制直播流画面,并生成对应的录制文件存储到云点播中。而录制状态回调则用于推送录制状态信息,主要包括录制启动成功、录制启动失败、录制暂停、录制续录成功、录制异常、录制结束。您需在回调模板中配置录制事件回调消息接收服务器地址,并将该模板与推流域名进行关联。当直播流触发录制事件后,腾讯云直播后台会将录制事件信息回调到您设…

    2023年12月9日
  • 腾讯云对象存储上传对象

    简介 本文档提供关于对象的高级上传、简单上传、分块上传等操作相关的 API 概览以及 SDK 示例代码。简单操作 API 操作名 操作描述 PUT Object 简单上传对象(创建文件夹) 上传一个对象至存储桶 APPEND Object 追加上传对象 使用分块追加的方式上传对象 分块操作 API 操作名 操作描述 List Multipart Upload…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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