前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tke案例-快速排查ingress 不通问题

tke案例-快速排查ingress 不通问题

原创
作者头像
庄鹏锐
修改2020-11-06 11:49:10
3K0
修改2020-11-06 11:49:10
举报
文章被收录于专栏:腾讯云容器专家服务的专栏

一、 问题/背景 描述

偶尔会有用户反馈 ingress 服务访问不通的问题,本文旨在帮助快速定位问题

二、 tke-ingress 网络流量解析

tke ingress 支持两种模式: node port 和 直连模式

  • node port 模式: 流量经CLB 转发到其中一个node节点, 然后再由kube-proxy的转发规则转发到对应的pod
  • 直连模式: 流量经CLB 直接转发到POD上 (转发链路简单、性能更好)

CLB 简介 : 负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台云服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。

node port模式
node port模式
直连模式
直连模式

二、 快速排查步骤及解决方法

排查思路建议(从下往上): 

          1、 pod 状态和服务状态 -->  2、 查看ep 状态 --> 3、查看svc状态 (node port 和cluster ip 两种场景) --> 4、查看 clb状态  

 1、 查看pod 和服务端口状态

1.1 pod 状态异常

代码语言:javascript
复制
      kubectl get pod -n {namespaces} -o wide
      kubectl describe pod -n {namespaces}

  如果pod 状态异常, 解决pod 问题再测试

1.2 pod 端口 不通

 源访问端 

代码语言:javascript
复制
         telnet {pod ip} {pod port}

a 如果pod 端口不通:

 到pod 所在的node节点上telnet

代码语言:javascript
复制
         telnet {pod ip} {pod port}

b 如果还是不通, 查看

  •  进入查看服务是否起来、netstat -nplt 查看启动端口和监听ip,telnet 127.0.0.1 port等
  •  查看pod iptables
  •   查看node 节点ip_forward 是否开启
  •   查看node 节点ip route 和ip rule 等是否正常

2、查看ep 状态

代码语言:javascript
复制
    kubectl describe ep {ep-name} -n {namespaces}

2.1  ep异常:

       查看pod 是否ready

代码语言:javascript
复制
     kubectl describe pod  -n {namespaces} {pod-name}
     kubectl get event  -n {namespaces} 

        查看svc 和workload/pod yaml 文件label/select 是否一致

代码语言:javascript
复制
     kubectl get svc -o yaml -n {namespaces} {svc-name}
     kubectl get pod -o yaml -n {namespaces} {pod-name}

3、查看svc 是否正常

 3.1 node port 模式

代码语言:javascript
复制
     telnet {node-ip} {node-port}

3.2 cluster ip 模式

代码语言:javascript
复制
     telnet {cluster-ip} {port}

 如果3.1或者3.2 不通, 查看node 节点kube-proxy ,iptables/ipvs 是否正常

4、排查clb 是否正常

查看clb rs 状态是否正常:

4.1 获取对应clb IP

代码语言:javascript
复制
kubectl get ing  {ingress name} -n {namespaces} -o yaml |grep  qcloud-loadbalance-id

4.2 登录腾讯云控制台查看clb 监听器绑定的后端服务是否正常

如果不正常, 查看 ingress controller 服务是否异常

根据ingress controller log 进行分析

代码语言:javascript
复制
kubectl  get pod -n kube-system |grep l7-lb-controller

根据ingress controller log 进行分析

代码语言:javascript
复制
kubectl  logs l7-lb-controller-xxxx-xxxx -n kube-system |grep {ingress name}
kubectl  logs l7-lb-controller-xxxx-xxxx -n kube-system |grep {clb-id}

、相关排查工具

工具

telnet

kubectl

tcpdump

查看腾讯云官网控制台CLB信息

ingress controller

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 问题/背景 描述
  • 二、 tke-ingress 网络流量解析
    • 排查思路建议(从下往上): 
      •  1、 查看pod 和服务端口状态
        • 1.1 pod 状态异常
        • 1.2 pod 端口 不通
      • 2、查看ep 状态
        • 2.1  ep异常:
      • 3、查看svc 是否正常
        •  3.1 node port 模式
        • 3.2 cluster ip 模式
      • 4、排查clb 是否正常
        • 4.1 获取对应clb IP
        • 4.2 登录腾讯云控制台查看clb 监听器绑定的后端服务是否正常
    • 五、相关排查工具
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档