Istio 遇到的问题汇总

ServiceEntry 解析错误

问题表现

创建 ServiceEntry

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: gitlab-huoys
spec:
  hosts:
  - gitlab-huoys
  location: MESH_INTERNAL
  ports:
  - name: https
    number: 5500
    protocol: TCP
  resolution: STATIC
  endpoints:
  - address: 8.8.8.8

istio-pilot 日志显示错误如下:
parseHostname(gitlab-huoys) => error missing service name and namespace from the service hostname "gitlab-huoys"

解决方案

将其改为如下内容后正常:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: gitlab-huoys
spec:
  hosts:
  - git.service-entry.com
  location: MESH_INTERNAL
  ports:
  - name: https
    number: 5500
    protocol: TCP
  resolution: STATIC
  endpoints:
  - address: 8.8.8.8

应该是判断逻辑中如果host 没有带 . 就当作主机名解析导致出问题,具体需要看代码。

istio-ingressgateway 命名空间隔离

问题现象

官网文档上写 istio-ingressgateway 不可跨命名空间使用 ,但实际可以夸命名空间使用 (新版本已经写明支持,但不建议)

REQUIRED: One or more labels used to select the specific gateway workload to which this configuration should be applied. It is recommended that the Gateway resource reside in the same namespace as the gateway workload. This may become a requirement in the future.

解决方案

istio-ingressgateway 可以跨命名空间使用
istio-ingressgateway 在命名空间A, 但在命名空间B 创建 Gateway 可以正常生效,Gateway 定义如下

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: gitlab
  namespace: B
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - test.com
    port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      mode: PASSTHROUGH
### Istio 连接池配置与故障排除 #### 配置连接池参数 在 Istio 中,可以通过修改 `DestinationRule` 来调整 Envoy 的上游连接池设置。这允许对服务之间的通信行为进行精细控制。对于 HTTP 和 TCP 流量,可以分别指定不同的超时时间和最大请求数目。 针对 HTTP 请求: ```yaml apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: httpbin spec: host: httpbin.prod.svc.cluster.local trafficPolicy: connectionPool: tcp: maxConnections: 10 # 设置TCP的最大连接数 http: http1MaxPendingRequests: 1 # 设置HTTP/1.x协议下的最大挂起请求数量 maxRequestsPerConnection: 1 # 每个连接上的最大请求数量 ``` 上述 YAML 文件定义了一个名为 `httpbin` 的目标规则,并设置了相应的连接池策略[^3]。 对于 TCP 流量,则只需关注于 `tcp` 字段内的配置项,比如上面例子中的 `maxConnections` 参数用于限定到后端服务的最大并发TCP连接数目。 #### 故障排查方法 当遇到连接池相关的问题时,可以从以下几个方面入手解决问题: - **日志分析** 通过命令获取特定 Pod 内部的 Envoy 日志可以帮助理解当前网络状况以及可能存在的错误信息。例如,如果想要查看名为 `productpage-v1-6b746f74dc-9mk2r` 的Pod里边 `istio-proxy` 容器的日志,可执行如下指令: ```bash kubectl logs productpage-v1-6b746f74dc-9mk2r -c istio-proxy ``` 此操作有助于发现任何潜在的服务间通讯异常情况[^2]。 - **监控指标** 利用 Prometheus 或其他监控工具收集来自 Envoy 的统计数据,特别是关于连接状态的信息(如活跃连接数、失败率等),以便及时识别并定位性能瓶颈所在位置。 - **验证配置文件** 确保所使用的 `DestinationRule` 资源已被正确创建且生效;同时也要确认其内部设定的各项数值合理有效,不会引起不必要的资源争用或过早关闭连接等问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值