注意:以下文档只适用于TOP接口,请谨慎使用!
请确认几个事情:
1)所购买的SLB所属VPC和容器集群所属VPC是否相同(容器集群所属VPC在“运维中心”可以看到)。
2)环境是否选择正确。通常环境会关联容器集群,正式环境和测试环境的集群不同,会影响到所属VPC,进而影响SLB的选择。
3)确认内外网类型是否选择正确。内网访问只能选择购买的私网SLB,外网访问对应选择外网SLB。
4)不能使用集群自身使用的SLB。集群创建时会默认创建一个内网SLB(名称格式为ManagedK8SSlb**),这个是给集群自身使用的,做流量接入需要另行购买。点击查看详情。
1)检查RS端口是否正常,即容器的监听端口,比如tomcat springboot在8080端口监听;
远程登录到云应用容器,curl localhost:容器启动端口/xxx,测试容器本身是否可以访问;
如果容器无法访问,请自行排查应用问题。
2)检查SLB的环境类型,比如在测试环境做的SLB接入,但是容器实际部署启动在正式环境。
平台上做的SLB流量接入,是不需要自己手动配置监听的,如果SLB无法访问,则优先排查容器问题。
1)相应的环境是否存在容器,“环境管理”;
2)容器的健康状态,“环境管理->管理资源”;
3)容器是否在流量接入时配置的RS端口正常监听,“环境管理->管理资源->远程登录”进入容器内;
4)确认下做流量接入时选择的环境是否正确,比如容器实例部署在测试环境,做接入的时候选的是正式环境,而正式环境没有容器,自然无法访问。
特别说明,SLB的监听端口是你访问slb的端口,RS端口是容器实际启动的端口(比如一个tomcat应用在8080端口监听)。做了SLB流量接入后,访问slb的监听端口,会自动负载到容器实际启动的端口。
监听端口可以自己设置,比如这里 访问SLB IP+8082就行了,但是RS端口一定要看容器启动在哪个端口。SLB访问不通,很可能是容器访问不通,即没有在RS端口启动。
如果域名解析的address ip是slb接入的ip,或者是集群服务的cluster ip,那么目前是无法在集群内通过https访问的,建议走http;(原因是k8s社区的一个已知问题导致的,目前暂时无法解决,想详细了解的可以参考:https://github.com/kubernetes/kubernetes/issues/66607)
由于kubernetes的网络规则限定等原因,如果在集群内访问内网SLB接入,会出现负载不均衡或有时能访问有时又无法访问的问题,因此,对于内网访问的需求,建议通过“集群服务”或Ingress来访问;
“集群服务”参见:点击查看;
“Ingress”参见:点击查看。
1)如果是首次使用,请检查下ingress contrller的发布单是否完成,如果处于"暂停"状态,请继续完成发布后即可;
2)如果非首次使用,但是更换了集群;请重新发布ingress controller。
创建Ingress路由时(已在业务应用创建了集群服务),但选择不了服务名称;
1)要确保服务和ingress controller在同一个集群。比如都在正式环境集群 或 测试环境集群,否则这里看不到服务;
2)如果更换了集群,请重新发布ingress controller 和 重新保存集群服务。
首先,确定下是不是云应用访问超时。
1)远程登录到云应用容器,curl localhost:容器启动端口/xxx,测试容器本身是否可以访问;
如果容器无法访问,请自行排查应用问题。
2)容器内curl slb的ip:slb监听端口/xxx,测试流量接入的slb是否可以正常访问;
如果slb流量接入无法访问,请参考此文档中的问题2、问题3进行排查。
如果云应用slb访问没有问题,则不是云应用问题,请提小程序工单。