관찰성 문제
관찰성 문제 (Observability Problems)
Istio 사용 중 발생할 수 있는 관찰성 관련 문제와 해결 방법을 다뤄요. Zipkin 트레이스 누락, Grafana 출력 누락, Istio CNI 파드 확인 방법을 배워요.
출처: Istio 문서
본문
Mac에서 Istio를 로컬로 실행할 때 Zipkin에 트레이스가 나타나지 않는 경우
Istio가 설치됐고 모든 게 잘 작동하는 것 같지만, Zipkin에 표시되어야 할 트레이스가 나타나지 않아요.
이것은 컨테이너 내부의 시간이 호스트 머신의 시간과 크게 어긋날 수 있는 알려진 Docker 문제 때문일 수 있어요. 이런 경우 Zipkin에서 매우 긴 날짜 범위를 선택하면 트레이스가 며칠 일찍 나타나는 것을 볼 수 있어요.
Docker 컨테이너 안과 밖의 날짜를 비교해서 이 문제를 확인할 수도 있어요.
$ docker run --entrypoint date registry.istio.io/testing/ubuntu-16-04-slave:latest
Sun Jun 11 11:44:18 UTC 2017
$ date -u
Thu Jun 15 02:25:42 UTC 2017
문제를 해결하려면 Istio를 다시 설치하기 전에 Docker를 종료하고 다시 시작해야 해요.
Grafana 출력 누락
로컬 웹 클라이언트에서 원격으로 호스팅된 Istio에 연결할 때 Grafana 출력을 얻을 수 없다면, 클라이언트와 서버의 날짜와 시간이 일치하는지 검증해야 해요.
웹 클라이언트(예: Chrome)의 시간이 Grafana의 출력에 영향을 미쳐요. 이 문제에 대한 간단한 해결책은 쿠버네티스 클러스터 내에서 시간 동기화 서비스가 올바르게 실행 중인지, 그리고 웹 클라이언트 머신도 시간 동기화 서비스를 올바르게 사용하는지 확인하는 거예요. 일반적인 시간 동기화 시스템으로는 NTP와 Chrony가 있어요. 이는 방화벽이 있는 엔지니어링 랩에서 특히 문제가 돼요. 이런 시나리오에서는 NTP가 랩 기반 NTP 서비스를 가리키도록 제대로 구성되지 않았을 수 있어요.
Istio CNI 파드가 실행 중인지 확인하기 (사용하는 경우)
Istio CNI 플러그인은 쿠버네티스 파드 수명주기의 네트워크 설정 단계에서 Istio 메시 파드 트래픽 리디렉션을 수행해서, Istio 메시에 파드를 배포하는 사용자에게 NET_ADMIN 및 NET_RAW capabilities 요구사항을 제거해줘요. Istio CNI 플러그인은 istio-init 컨테이너가 제공하던 기능을 대체해요.
- istio-cni-node 파드가 실행 중인지 확인하세요.
$ kubectl -n istio-system get pod -l k8s-app=istio-cni-node
- 클러스터에서 Pod Security Admission이 강제되고 있다면, istio-cni-node 파드가 실행되는 네임스페이스(기본적으로 istio-system)가 NET_ADMIN 및 NET_RAW capabilities를 허용하는 privileged Pod Security Standards 프로필을 사용하는지 확인하세요.