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 的鉴权未通过。
排查步骤
- 检查当前配置:
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
- 检查
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 没有填写或为空
处理办法:
- 帮助文档地址: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
- 检查并修改Ingress模板
E4010 Secret xxx not found
故障原因: Ingress模板信息错误。spec.tls.secretName 中填写的Secrets资源不存在
处理办法:
- 帮助文档地址: https://kubernetes.io/docs/concepts/configuration/secret/
- 查并修改Ingress模板
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资源。