Ingress
를 통한 서비스가 동작하지 않을 때에 나는 아래와 같이 리소스들을 점검한다.
내가 어떤 식으로 점검하는 지 기록하려 한다.
문제가 있다고 의심이 되는 리소스에 대해서 우선적으로 점검한다.
외부로부터 트래픽이 오는 지 확인한다.
1. ingress-nginx-controller
의 로그를 볼 수 있게 해둔다.
# ingress-nginx-controller 의 로그 추적 실행
$ kubectl logs -n ingress-nginx deployments/ingress-nginx-controller -f
2. 다른 터미널
에서 트래픽을 날려본다.
$ curl https://www.enttolog.shop
3. ingress-nginx-controller
의 로그를 확인한다. 아래와 같이 로그가 뜰 경우 정상적으로 트래픽이 온 것이며 ingress-nginx-controller
에는 문제가 없을 것으로 판단할 수 있다.
# kubectl logs -n ingress-nginx deployments/ingress-nginx-controller -f
192.168.0.213 - - [19/Sep/2023:21:37:14 +0000] "GET / HTTP/2.0" 200 674 "-" "curl/7.68.0" 33 0.068 [default-entto-front-80] [] 172.24.198.243:80 674 0.069 200 261b79dbb8504d51c6b62e128b384dfb
Ingress
가 Pod
들을 인식하고 있는 지 확인한다.
1. 확인하고자 하는 Ingress
확인
$ kubectl get ingress
===
NAME CLASS HOSTS ADDRESS PORTS AGE
...
entto-front nginx www.enttolog.shop 192.168.0.213 80, 443 62m
...
2. 해당 Ingress
의 상세 설명 로그
확인
$ kubectl describe ingress entto-front
===
...
Rules:
Host Path Backends
---- ---- --------
www.enttolog.shop
/ entto-front:80 (172.24.198.243:80)
...
3. 상세 설명 로그
분석
1. 이전의 로그에서 `Ingress` 가 `Pod` 들을 인식하고 있는 것을 확인함. (존재하는 것을 확인)
# {service name}:{service port} ({pod ip}:{pod port}, ...)
# entto-front:80 (172.24.198.243:80)
2. Host 명이 요청한 도메인과 동일한 지 확인
# curl www.enttolog.shop 을 요청했으니 동일하다.
Pod
들이 잘 연결되어 있는 지 확인한다.
1. Endpoint
를 확인한다.
$ kubectl describe service entto-front
===
...
Endpoints: 172.24.198.213:80
...
2. Pod
와 연결되어있는 지 확인한다.
결과로 나온 `172.24.198.213:80` 은 `Pod` 의 정보이다. (이전의 `Ingress` 점검에서도 간접적으로 확인할 수 있다.)
3. Pod
들의 로그를 분석한다.
$ kubectl logs services/entto-front -f --tail 3
===
...
172.24.28.25 - - [20/Sep/2023:00:08:13 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
172.24.28.25 - - [20/Sep/2023:00:08:17 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
...
보통 트래픽을 테스트하는 것까지는 여기 선까지 확인하진 않아도 될 듯하다 (상황에 따라 다르겠지만).
그래서 여기는 일단 스킵한다.