У меня есть распределенная база данных (Consul), которую я хочу запустить в Istio в Кубернетесе. Связь между узлами зашифрована и проверена с использованием mTLS. Я использую безголовый сервис, чтобы позволить партнерам достигать друг друга:
apiVersion: v1
kind: Service
metadata:
name: cluster
namespace: consul
spec:
clusterIP: None
publishNotReadyAddresses: true
selector:
app: consul
ports:
- name: tcp-server
port: 8300
targetPort: 8300
- name: tcp-serflan
protocol: TCP
port: 8301
targetPort: tcp-serflan
- name: udp-serflan
protocol: UDP
port: 8301
targetPort: udp-serflan
Однако, когда я называю порт tcp-server
на безголовом сервисе tls-server
, вместо этого я вижу множество ошибок сброса соединения :
2020/02/18 08:46:44 [INFO] serf: EventMemberUpdate: consul-0
2020/02/18 08:47:33 [ERR] agent: Coordinate update error: rpc error making call: stream closed
2020/02/18 08:47:38 [WARN] raft: Heartbeat timeout from "10.0.3.146:8300" reached, starting election
2020/02/18 08:47:38 [INFO] raft: Node at 10.0.2.114:8300 [Candidate] entering Candidate state in term 106
2020/02/18 08:47:38 [ERROR] raft: Failed to make RequestVote RPC to {Voter 54224806-ed63-0d1b-ae2c-9c1a09de43c4 10.0.3.146:8300}: EOF
2020/02/18 08:47:38 [ERROR] raft: Failed to make RequestVote RPC to {Voter 5b2e92ce-61d8-032e-dd94-c0d9eb1319a0 10.0.1.209:8300}: read tcp 10.0.2.114:40018->10.0.1.209:8300: read: connection reset by peer
2020/02/18 08:47:47 [WARN] raft: Election timeout reached, restarting election
2020/02/18 08:47:47 [INFO] raft: Node at 10.0.2.114:8300 [Candidate] entering Candidate state in term 107
2020/02/18 08:47:47 [ERROR] raft: Failed to make RequestVote RPC to {Voter 54224806-ed63-0d1b-ae2c-9c1a09de43c4 10.0.3.146:8300}: read tcp 10.0.2.114:40762->10.0.3.146:8300: read: connection reset by peer
2020/02/18 08:47:47 [ERROR] raft: Failed to make RequestVote RPC to {Voter 5b2e92ce-61d8-032e-dd94-c0d9eb1319a0 10.0.1.209:8300}: read tcp 10.0.2.114:40062->10.0.1.209:8300: read: connection reset by peer
Как Istio / Envoy обрабатывает трафик TLS c, который может быть причиной этой проблемы? Traffi c - это TLS traffi c (я делаю this ), поэтому представляется необходимым сделать вид, что traffi c is TCP.
- Консульская версия:
1.6.2
- Версия Istio:
1.4.4