kubernetes-guide/tencent/appendix/ingress-error-code.md

20 KiB
Raw Blame History

Ingress 错误码

E4000 CreateLoadBalancer RequestLimitExceeded

接口调用出现短时间内出现超频情况,错误会重试。少量出现对服务没有影响。

E4003 CreateLoadBalancer LimitExceeded

故障原因: 负载均衡资源数量受限。

处理办法: 提交工单申请提高负载均衡的资源数量上限。

E4004 CreateListener LimitExceeded

故障原因: 负载均衡资源下的监听器数量受限。

处理办法: 提交工单申请提高负载均衡下监听器的资源数量上限。

E4005 CreateRule LimitExceeded

故障原因: 负载均衡资源下的规则数量受限。

处理办法: 提交工单申请提高负载均衡下的规则的资源数量上限。

E4006 DeleteListener Redirection config on the listener

故障原因: 在 Ingress 管理的监听器下面设置了重定向规则,导致监听器删除失败。

处理办法: 需要自行处理该重定向规则Ingress 会在接下来的重试中删除该监听器。

E4007 Norm AssumeTkeCredential -8017 | -8032 Record Not Exist

故障原因: 绝大部分的情况是修改了 ip-masq-agent-config,导致访问 Norm 的请求没有进行 IP 伪装,导致 Norm 的鉴权未通过。

排查步骤

  1. 检查当前配置:
kubectl get configmap -n kube-system ip-masq-agent-config
nonMasqueradeCIDRs:  // 所有pod出去的流量没有进行IP伪装, Norm针对来源IP鉴权Node
    - 0.0.0.0/0

nonMasqueradeCIDRs:  // 正常情况, 这里配置的是集群网络和VPC网络的CIDR
    - 10.0.0.0/14
    - 172.16.0.0/16
  1. 检查ip-masq-agent 的重启时间,是不是最近有过更新:
$ kubectl get pod -n kube-system -l name=ip-masq-agent
NAME                  READY     STATUS    RESTARTS   AGE
ip-masq-agent-n4p9k   1/1       Running   0          4h
ip-masq-agent-qj6rk   1/1       Running   0          4h

处理办法:

  • 修改 ip-masq-agent-config的nonMasqueradeCIDRs,使用一个合理的配置。
  • 确认 Masq 配置正确后,重启 Ingress Controller 组件。

E4008 Norm AssumeTkeCredential -8002 Data is nil

故障原因: 撤销了对于腾讯云容器服务的授权,导致服务无法运行

处理办法:

  • 登录访问管理服务,找到角色 TKE_QCSRole(没有则创建)
  • 创建服务预设角色并授予腾讯云容器服务相关权限

E4009 Ingress: xxx secret name is empty

故障原因: Ingress模板格式错误。spec.tls.secretName 没有填写或为空

处理办法:

E4010 Secret xxx not found

故障原因: Ingress模板信息错误。spec.tls.secretName 中填写的Secrets资源不存在

处理办法:

E4011 Secret xxx has no qcloud cert id

故障原因: Ingress模板中引用的Secrets内容缺失。或引用的Secrets需要包含qcloud_cert_id字段信息

处理办法:

  • 参考 K8S 官方文档: https://kubernetes.io/docs/concepts/configuration/secret/

  • 检查证书配置:

    $ kubectl get ingress <ingress> -n <namespace> -o yaml
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
        qcloud_cert_id: YCOLTUdr <-- 检查这个是不是证书ID
    spec:
      tls:
      - secretName: secret-name <-- 检查配置Secret名称
    
  • 检查Secret配置:

    $ kubectl get secret <secret-name> -n <namespace> -o yaml
    apiVersion: v1
    data:
      qcloud_cert_id: WUNPTFRVZHI= <-- 检查这个是不是证书ID的Base64编码
    kind: Secret
    metadata:
      name: nginx-service-2 
      namespace: default
    type: Opaque
    
    $ echo -n "WUNPTFRVZHI=" | base64 -d
    YCOLTUdr    <-- 证书ID一致
    
  • 如何创建Secret:

    kubectl create secret generic <secret-name> -n <namespace> --from-literal=qcloud_cert_id=YCOLTUdr   <-- 证书ID
    

E4012 CreateListener InvalidParameterValue

故障原因: 大概率是Ingress模板信息错误。spec.tls.secretName中指定的Secrets资源中描述的qcloud_cert_id不存在。

排查步骤: 查到错误原因如果错误原因是Query certificate 'xxxxxxx' failed.确定是的证书ID填写错误。

处理办法:

  • 登录 SSL证书 控制台检查证书的ID是否正确。
  • 随后修改Secrets中的证书ID

E4013 Ingress rules invalid. 'spec.rules.http' is empty.

故障原因: Ingress模板不正确spec.rules.http没有填写实际内容

处理办法: 修正自己的Ingress模板

E4017 负载均衡的标签存在篡改

故障原因:修改了负载均衡的标签,导致根据标签定位负载均衡资源失败。

处理办法:

  • 由于标签或负载均衡资源被删除或篡改数据可能存在不一致建议删除负载均衡、或删除负载均衡所有标签然后重建Ingress资源。

E4018 kubernetes.io/ingress.existLbId 中指定的LB资源不存在

故障原因: Ingress模板不正确Annotation kubernetes.io/ingress.existLbId 中指定的LoadBalance不存在

排查步骤: 检查日志中给出的LBId, 检查改账号在该地域是否存在此LB资源。

处理办法:

  • 如果查询后台系统确认LB资源的确存在。转交工单到CLB排查为何资源查询失败。
  • 如果查询后台系统确认LB资源不存在。检查模板中定义的LBId是否正确

E4019 Can not use lb: created by TKE for ingress: xxx

故障原因: kubernetes.io/ingress.existLbId中指定的LBId已经被Ingress或是Service使用资源生命周期由TKE集群管理不能重复使用

相关参考: Ingress 的声明周期管理

处理办法:

  • 更换其他LB
  • 删除使用了这个LB资源的Ingress或Service按以下步骤操作
    • 删除LB资源上的tke-createdBy-flag资源
    • 删除使用了这个LB资源的Ingress或Service。如果不做第一步LB资源会被自动销毁
    • 指定新的Ingress使用这个LB.
    • 在该LB资源上打上tke-createdBy-flag=yes的标签. (如果不做这一步该资源的生命周期将不会被Ingress负责后续该资源不会自动销毁)

E4020 Error lb: used by ingress: xxx

故障原因: kubernetes.io/ingress.existLbId 中指定的LBId已经被Ingress使用不能重复使用

相关参考: Ingress 的声明周期管理

处理办法:

  • 更换其他LB
  • 删除使用了这个LB资源的Ingress
    • 删除LB资源上的tke-createdBy-flag资源按以下步骤操作
    • 删除使用了这个LB资源的Ingress或Service。如果不做第一步LB资源会被自动销毁
    • 指定新的Ingress使用这个LB.
    • 在该LB资源上打上tke-createdBy-flag=yes的标签. (如果不做这一步后续该资源的生命周期将不会被Ingress负责该资源不会自动销毁)

E4021 exist lb: xxx listener not empty

故障原因: kubernetes.io/ingress.existLbId 中指定的LBId中还有监听器没有删除。

详细描述: 使用已有LB时如果LB上存在监听器可能造成LB资源的误操作。所以禁用还存在监听器的存量监听器。

处理办法:

  • 更换其他LB
  • 删除该LB下的所有监听器

E4022 Ingress rules invalid.

故障原因: kubernetes.io/ingress.http-rules 标签的格式解析错误

详细描述: kubernetes.io/ingress.http-rules 标签内容应该是一个Json格式的字符串内容不正确时会报错

处理办法: 检查模板中定义的 http-rules 是否正确

格式示例:

kubernetes.io/ingress.http-rules: '[{"path":"/abc","backend":{"serviceName":"nginx-service-2","servicePort":"8080"}}]'

E4023 create lb error: ResourceInsufficient

故障原因: kubernetes.io/ingress.https-rules 标签的格式解析错误

详细描述: kubernetes.io/ingress.https-rules 标签内容应该是一个Json格式的字符串内容不正确时会报错

处理办法: 检查模板中定义的 https-rules 是否正确

格式示例:

kubernetes.io/ingress.https-rules: '[{"path":"/abc","backend":{"serviceName":"nginx-service-2","servicePort":"8080"}}]'

E4024 create lb error: InvalidParameter or InvalidParameterValue

故障原因: 创建Ingress LB时通过注解配置的参数有错误。

详细描述: 注解配置的删除,不合法

处理办法: 检查注解参数

E4025 create lb error: ResourceInsufficient

故障原因: 创建Ingress LB时资源不足。

详细描述: 通常是内网型LB的子网IP数量不足

处理办法: 检查子网IP是否耗尽

E4026 Ingress extensive parameters invalid.

故障原因: 创建Ingress LB时kubernetes.io/ingress.extensiveParameters 标签的格式解析错误

详细描述: 提供的注解内容不是一个合法的JSON字符串

处理办法:

E4027 EnsureCreateLoadBalancer Insufficient Account Balance

故障原因: 账户欠费

处理办法: 充钱就好

E4030 This interface only support HTTP/HTTPS listener

故障原因: 通过使用已有LB的方式使用传统型CLB无法创建七层规则

处理办法: 需要修改指定的CLB或删除标签让Ingress主动创建CLB

E4031 Ingress rule invalid. Invalid path.

故障原因: 模板中填写的七层规则Path的格式不符合规则

处理办法: 检查路径是否符合以下格式。

  • 默认为 /,必须以 / 开头,长度限制为 1-120。
  • 非正则的 URL 路径,以 / 开头,支持的字符集如下:a-z A-Z 0-9 . - / = ?

E4032 LoadBalancer AddressIPVersion Error

故障原因: 使用了错误的 AddressIPVersion 参数

详细描述: 目前基于IPv4网络的集群只支持IPv4和NAT IPv6类型的负载均衡。不支持纯IPv6类型的负载均衡。

处理办法:

  • 如果是创建负载均衡的情况。修改一下kubernetes.io/ingress.extensiveParameters参数。
  • 如果是使用已有负载均衡的情况。不能选用该负载均衡,需要更换其他负载均衡。

E4033 LoadBalancer AddressIPVersion do not support

故障原因: 该地域不支持IPv6类型的负载均衡。

详细描述: 目前不是所有地域都支持IPv6的负载均衡有强业务需求的请联系负载均衡提出需求。

E4034 Ingress RuleHostEmpty

故障原因: Ingress规则中没有配置Host

详细描述: 目前针对IPv4的负载均衡不配置Host的情况下会使用IPv4的地址作为Host。当使用纯IPv6负载均衡时默认Host的逻辑不存在必须指定域名。

处理办法: 修改 Ingress补充Ingress的Host字段

E4035 LoadBalancer CertificateId Invalid

故障原因: 证书ID格式不正确。CertId长度不正确

处理办法:

E4036 LoadBalancer CertificateId NotFound

故障原因: 证书ID不存在。 处理办法:

E4037 Annotation 'ingress.cloud.tencent.com/direct-access' Invalid

故障原因: ingress.cloud.tencent.com/direct-access的合法值是 true 或 false

处理办法: 检查配置的 ingress.cloud.tencent.com/direct-access 注解内容是否是一个合法的 bool 值。

E4038 Certificate Type Error

故障原因: 配置的证书类型,需要是服务端证书。不能使用客户端证书配置单向证书。

处理办法:

  • 登录负载均衡控制台,检查使用的证书类型,确认使用的是服务端证书。
  • 如果确认是客户端证书,需要修改。
  • 如果确认是服务端证书,联系负载均衡排查证书使用故障。

E4038 Certificate Out of Date / E4039 Certificate Out of Date

故障原因: 配置的证书过期了,检查配置的证书的过期时间。

处理办法:

E4040 Certificate Not Found for SNI

故障原因: Ingress中描述的域名存在一个或多个没有包含在TLS的域名证书规则中。

处理办法:

E4041 Service Not Found

故障原因: Ingress中引用的Service不存在 处理办法: 检查Ingress中声明使用的所有Service资源是否存在注意在Service和Ingress需要在同一个命名空间下。

E4042 Service Port Not Found

故障原因: Ingress中引用的Service端口不存在

处理办法: 检查Ingress中声明使用的所有Service资源及其使用的端口是否存在。

E4043 TkeServiceConfig Not Found

故障原因: Ingress通过"ingress.cloud.tencent.com/tke-service-config"注解引用的TkeServiceConfig资源不存在

处理办法:

E4044 Mixed Rule Invalid

故障原因: Ingress的注解"kubernetes.io/ingress.rule-mix"不是一个合法的JSON字符串。

处理办法:

E4045 InternetChargeType Invalid

故障原因: Ingress的注解"kubernetes.io/ingress.internetChargeType"内容不合法。

处理办法: 参考 InternetChargeType 参数的可选值:https://cloud.tencent.com/document/api/214/30694#InternetAccessible

E4046 InternetMaxBandwidthOut Invalid

故障原因: Ingress的注解"kubernetes.io/ingress.internetMaxBandwidthOut"内容不合法。

处理办法: 参考 InternetMaxBandwidthOut 参数的可选值:https://cloud.tencent.com/document/api/214/30694#InternetAccessible

E4047 Service Type Invalid

故障原因: 作为Ingress后端引用的Service类型只能是NodePort或LoadBalancer。 处理办法: 检查Service类型建议使用NodePort或LoadBalancer类型的Service作为Ingress后端。

E4048 Default Secret conflict.

故障原因: Ingress中TLS声明了多个默认证书出现冲突

处理办法:

E4049 SNI Secret conflict.

故障原因: Ingress中TLS声明了多个证书对应同一个域名出现冲突

处理办法:

E4050 Annotation 'ingress.cloud.tencent.com/tke-service-config-auto' Invalid

故障原因: ingress.cloud.tencent.com/tke-service-config-auto的合法值是 true 或 false 处理办法: 检查配置的 ingress.cloud.tencent.com/tke-service-config-auto 注解内容是否是一个合法的 bool 值。

E4051 Annotation 'ingress.cloud.tencent.com/tke-service-config' Name Invalid

故障原因: ingress.cloud.tencent.com/tke-service-config的名称不能以 '-auto-ingress-config' or '-auto-service-config' 为后缀。会和自动同步的配置名称出现冲突。 处理办法: 修改注解 ingress.cloud.tencent.com/tke-service-config 使用其他名称的TkeServiceConfig资源。

E4052 Ingress Host Invalid

故障原因: 根据K8S的限制Ingress的Host需要满足正则表达式 "(*|a-z0-9?)(.a-z0-9?)+"

处理办法: 默认情况下域名都是符合以上要求的。排除一下域名没有 “.”,域名包含特殊字符等情况就可以了。

E4053 LoadBalancer Subnet IP Insufficient

故障原因: 负载均衡所在子网的IP已经用光无法在配置的子网下创建负载均衡。

处理办法:

  • 确定选定子网所使用的注解“kubernetes.io/ingress.subnetId”。
  • 建议改用其他子网或者在该子网下释放一些IP资源。

E4091 CreateLoadBalancer Invoke vpc failed: subnet not exists

故障原因: 创建内网型LB时指定的子网不正确。

处理办法: 检查Ingress模板中的kubernetes.io/ingress.subnetId字段中描述的子网ID是否正确

E5003 CLB InternalError

故障原因: CLB内部错误

处理办法: 转至CLB排查原因

E5004 CVM InternalError

故障原因: CVM内部错误

处理办法: 将工单立刻转至CVM排查后续原因

E5005 TAG InternalError

故障原因: 标签服务内部错误

处理办法: 将工单立刻转至标签服务排查后续原因

E5007 Norm InternalError

故障原因: 服务内部错误

处理办法: 将工单立刻转至标签服务排查后续原因

E5008 TKE InternalError

故障原因: 服务内部错误

处理办法: 将工单立刻转至标签服务排查后续原因

E5009 CLB BatchTarget Faild

故障原因: CLB内部错误, 后端批量绑定、解绑出现部分错误

处理办法: 将工单立刻转至CLB排查后续原因

E6001 Failed to get zone from env: TKE_REGION / E6002 Failed to get vpcId from env: TKE_VPC_ID

故障原因: 集群资源 configmap tke-config 配置缺失,导致容器启动失败 处理办法:

  • kubectl get configmap -n kube-system tke-config 检查configmap是否存在
  • kubectl create configmap tke-config -n kube-system --from-literal=TKE_REGION=<ap-shanghai-fsi> --from-literal=TKE_VPC_ID=<vpc-6z0k7g8b> 创建configmapregion、vpc_id需要根据集群具体信息进行修改
  • kubectl edit deployment -n kube-system l7-lb-controller -o yaml 确保模板内的 env 内容正确。
    spec:
      containers:
      - args:
        - --cluster-name=<cls-a0lcxsdm>
        env:
        - name: TKE_REGION
          valueFrom:
            configMapKeyRef:
              key: TKE_REGION
              name: tke-config
        - name: TKE_VPC_ID
          valueFrom:
            configMapKeyRef:
              key: TKE_VPC_ID
              name: tke-config
    

E6006 Error during sync: Post https://clb.internal.tencentcloudapi.com/: dial tcp: i/o timeout

故障原因 A: CoreDNS对相关API服务的域名解析出现错误

可能涉及到相同问题的域名:

lb.api.qcloud.com
tag.api.qcloud.com
cbs.api.qcloud.com
cvm.api.qcloud.com
snapshot.api.qcloud.com
monitor.api.qcloud.com
scaling.api.qcloud.com
ccs.api.qcloud.com
tke.internal.tencentcloudapi.com
clb.internal.tencentcloudapi.com
cvm.internal.tencentcloudapi.com

处理办法: 对l7-lb-controller追加以下域名解析。

kubectl patch deployment l7-lb-controller -n kube-system --patch '{"spec":{"template":{"spec":{"hostAliases":[{"hostnames":["lb.api.qcloud.com","tag.api.qcloud.com","cbs.api.qcloud.com","cvm.api.qcloud.com","snapshot.api.qcloud.com","monitor.api.qcloud.com","scaling.api.qcloud.com","ccs.api.qcloud.com"],"ip":"169.254.0.28"},{"hostnames":["tke.internal.tencentcloudapi.com","clb.internal.tencentcloudapi.com","cvm.internal.tencentcloudapi.com"],"ip":"169.254.0.95"}]}}}}'

故障原因 B: 集群网络问题

处理办法: 暂无,提工单,并附上日志中的异常栈信息。

E6007 | E6009 Ingress InternalError

故障原因: Ingress 内部错误

处理办法: 将工单立刻转至misakazhou并附上日志中的异常栈信息。

W1000 Service xxx not found in store

告警原因: 指定的Service不存在Ingress规则无法找到对应绑定的后端。 处理办法: 检查集群Service资源中是否存在 backend.serviceName 所描述的资源

W1001 clean not creatted by TKE loadbalancer: xxx for ingress:

告警原因: 删除Ingress的时候Ingress使用的负载均衡没有被删除

详细描述: Ingress使用的负载均衡资源没有tke-createdBy-flag=yes的标签生命周期没有在Ingress的管理之下。需要自行手动删除。

处理办法: 需要的话,可以选择手动删除该负载均衡资源

W1002 do not clean listener.

告警原因: 删除Ingress的时候Ingress使用的负载均衡下的监听器没有被删除

详细描述: Ingress使用的负载均衡资源下的监听器名称不是TKE-DEDICATED-LISTENER该监听器不是Ingress创建的或是被修改生命周期没有在Ingress的管理之下。需要自行手动删除。

处理办法: 需要的话,可以选择手动删除该负载均衡资源下的监听器