Виправлення проблем за допомогою waypoints
Цей посібник описує, що робити, якщо ви зареєстрували простір імен, сервіс або робоче навантаження в проксі waypoint, але не бачите очікуваної поведінки.
Проблеми з маршрутизацією трафіку або політикою безпеки
Щоб надіслати деякі запити до сервісу reviews
через сервіс productpage
з podʼа curl
:
$ kubectl exec deploy/curl -- curl -s http://productpage:9080/productpage
Щоб надіслати деякі запити до podʼа reviews
v2
з podʼа curl
:
$ export REVIEWS_V2_POD_IP=$(kubectl get pod -l version=v2,app=reviews -o jsonpath='{.items[0].status.podIP}')
$ kubectl exec deploy/curl -- curl -s http://$REVIEWS_V2_POD_IP:9080/reviews/1
Запити до сервісу reviews
повинні бути оброблені через reviews-svc-waypoint
для будь-яких політик L7. Запити до podʼа reviews
v2
повинні бути оброблені через reviews-v2-pod-waypoint
для будь-яких політик L7.
Якщо ваша конфігурація L7 не застосовується, спочатку запустіть команду
istioctl analyze
, щоб перевірити, чи немає проблем з валідацією вашої конфігурації.$ istioctl analyze ✔ No validation issues found when analyzing namespace: default.
Визначте, який waypoint реалізує конфігурацію L7 для вашого сервісу або podʼа.
Якщо ваше джерело викликає призначення за допомогою імені хосту або IP-адреси сервісу, використовуйте команду
istioctl experimental ztunnel-config service
, щоб підтвердити, що ваш waypoint використовується призначеним сервісом. За прикладом вище, сервісreviews
повинен використовуватиreviews-svc-waypoint
, тоді як усі інші сервіси в просторі іменdefault
повинні використовувати waypoint простору імен.$ istioctl experimental ztunnel-config service NAMESPACE SERVICE NAME SERVICE VIP WAYPOINT default bookinfo-gateway-istio 10.43.164.194 waypoint default bookinfo-gateway-istio 10.43.164.194 waypoint default bookinfo-gateway-istio 10.43.164.194 waypoint default bookinfo-gateway-istio 10.43.164.194 waypoint default details 10.43.160.119 waypoint default kubernetes 10.43.0.1 waypoint default productpage 10.43.172.254 waypoint default ratings 10.43.71.236 waypoint default reviews 10.43.162.105 reviews-svc-waypoint ...
Якщо вашу джерело викликає призначення за допомогою IP-адреси podʼа, використовуйте команду
istioctl experimental ztunnel-config workload
, щоб підтвердити, що ваш waypoint використовується призначеним podʼом. За прикладом вище, podreviews
v2
повинен використовуватиreviews-v2-pod-waypoint
, тоді як усі інші podʼи в просторі іменdefault
не повинні мати жодних waypoint, оскільки стандартно waypoint обробляє лише трафік, адресований сервісам.$ istioctl experimental ztunnel-config workload NAMESPACE POD NAME IP NODE WAYPOINT PROTOCOL default bookinfo-gateway-istio-7c57fc4647-wjqvm 10.42.2.8 k3d-k3s-default-server-0 None TCP default details-v1-698d88b-wwsnv 10.42.2.4 k3d-k3s-default-server-0 None HBONE default productpage-v1-675fc69cf-fp65z 10.42.2.6 k3d-k3s-default-server-0 None HBONE default ratings-v1-6484c4d9bb-crjtt 10.42.0.4 k3d-k3s-default-agent-0 None HBONE default reviews-svc-waypoint-c49f9f569-b492t 10.42.2.10 k3d-k3s-default-server-0 None TCP default reviews-v1-5b5d6494f4-nrvfx 10.42.2.5 k3d-k3s-default-server-0 None HBONE default reviews-v2-5b667bcbf8-gj7nz 10.42.0.5 k3d-k3s-default-agent-0 reviews-v2-pod-waypoint HBONE ...
Якщо значення стовпця waypoint для podʼа неправильне, перевірте, чи ваш pod має мітку
istio.io/use-waypoint
і чи значення цієї мітки відповідає імені waypoint, що може обробляти трафік робочого навантаження. Наприклад, якщо ваш podreviews
v2
використовує waypoint, який може обробляти лише трафік сервісу, ви не побачите жодного waypoint, що використовується цим podʼом. Якщо міткаistio.io/use-waypoint
на вашому podʼі виглядає правильною, перевірте, чи ресурс Gateway для вашого waypoint має відповідне значення для міткиistio.io/waypoint-for
. У випадку з podʼом слушними значеннями були бall
абоworkload
.Перевірте статус проксі waypoint за допомогою команди
istioctl proxy-status
.$ istioctl proxy-status NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION bookinfo-gateway-istio-7c57fc4647-wjqvm.default Kubernetes SYNCED SYNCED SYNCED SYNCED NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 reviews-svc-waypoint-c49f9f569-b492t.default Kubernetes SYNCED SYNCED SYNCED NOT SENT NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 reviews-v2-pod-waypoint-7f5dbd597-7zzw7.default Kubernetes SYNCED SYNCED NOT SENT NOT SENT NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 waypoint-6f7b665c89-6hppr.default Kubernetes SYNCED SYNCED SYNCED NOT SENT NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 ...
Увімкніть журнал доступу Envoy та перевірте логи проксі waypoint після відправлення кількох запитів:
$ kubectl logs deploy/waypoint
Якщо інформації недостатньо, ви можете увімкнути debug логи для проксі waypoint:
$ istioctl pc log deploy/waypoint --level debug
Перевірте конфігурацію envoy для waypoint за допомогою команди
istioctl proxy-config
, яка показує всю інформацію, повʼязану з waypoint, таку як кластери, точки доступу, слухачі, маршрути та секрети:$ istioctl proxy-config all deploy/waypoint
Зверніться до розділу глибокого аналізу конфігурації Envoy для отримання додаткової інформації про те, як налагоджувати Envoy, оскільки проксі waypoint засновані на Envoy.