1
coderxy 2023-02-09 19:37:35 +08:00
可能是协议识别问题,sidecar 需要根据 service name 的 grpc-这种开头去识别协议,你直接用 ip:port 这种方式,它可能无法识别吧
|
3
GopherDaily 2023-02-09 20:41:21 +08:00
istioctl proxy-config listener xxxx ;你 pod 和 svc 不是同一个 port ?
|
4
meso5533 OP @GopherDaily pod 和 svc 是相同的 port
istioctl proxy-config -n test-k8s listeners test-k8s-server-9cbcf8b9b-4s2q5 --port 16071 ADDRESS PORT MATCH DESTINATION 0.0.0.0 16071 Trans: raw_buffer; App: http/1.1,h2c Route: 16071 0.0.0.0 16071 ALL PassthroughCluster |
5
awalkingman 2023-02-09 21:41:20 +08:00
要通过 podip 请求服务,那你得在另一个 pod 里去请求目标 podip ,所以你是在 pod A 里通过 podip 发起 grpc 请求到 pod B 吗
|
6
meso5533 OP @newskillsget 是的
|
7
luvroot 2023-02-09 23:17:08 +08:00
pod 之间 ip 互通需要 k8s 平台插件配置的支持。
|
8
luvroot 2023-02-09 23:19:03 +08:00
iptables 或则 tcpdump 抓包看一下哪里配置有问题大概率网络插件配置有问题
|
9
GopherDaily 2023-02-10 00:29:39 +08:00
@meso5533 https://istio.io/latest/docs/ops/diagnostic-tools/proxy-cmd/ 自己先走一遍吧,看 envoy 的 listener 包不包括 pod ip ,估计是不包括的;你走用了 mesh 了,为什么要走 pod ip ,走 svc ip 也会做负载均衡的
|
10
GopherDaily 2023-02-10 00:30:18 +08:00
或者用 headless
|
11
saltbo 2023-02-10 13:51:37 +08:00
|
12
awalkingman 2023-02-10 19:03:49 +08:00
@saltbo 受楼上启发,楼主把 pod 和 svc 的 yaml 文件发出来看看
|
13
meso5533 OP apiVersion: v1
kind: Service metadata: name: test-k8s-server-grpc namespace: test-k8s spec: ports: - name: grpc port: 16071 protocol: TCP targetPort: 16071 selector: app: test-k8s-server --- apiVersion: v1 kind: Service metadata: name: test-k8s-server-debug namespace: test-k8s annotations: prometheus.io/scrape: 'true' prometheus.io/port: '15225' spec: ports: - name: debug port: 15225 protocol: TCP targetPort: 15225 selector: app: test-k8s-server --- apiVersion: apps/v1 kind: Deployment metadata: name: test-k8s-server namespace: test-k8s spec: replicas: 1 selector: matchLabels: app: test-k8s-server template: metadata: name: test-k8s-server labels: app: test-k8s-server spec: containers: - name: test-k8s-server image: xxxxxx:latest command: - /root/test_k8s - server - --log-level - debug ports: - name: grpc containerPort: 16071 - name: debug containerPort: 15225 imagePullSecrets: - name: regcred grpc 的 port 无法正常通信,debug( http 协议)的 port 可以 |