디버깅을 위한 Kubernetes 인그레스 로그 가져오기

Dibeoging Eul Wihan Kubernetes Ingeuleseu Logeu Gajyeoogi



디버깅을 위한 Get Kubernetes 인그레스 로그가 무엇인지 아십니까? 네트워킹 문제는 배포가 점점 더 커짐에 따라 진단하기가 점점 더 어려워지고 있습니다. 이 자습서에서는 ingress-nginx kubectl 플러그인을 사용하여 수신 컨트롤러를 통해 애플리케이션에 대한 액세스를 디버깅하는 방법을 보여줍니다. 먼저 주요 주제를 더 잘 이해하는 데 중요한 Kubernetes 수신의 정의를 살펴보겠습니다.

Kubernetes 인그레스란 무엇입니까?

인그레스의 정의는 말 그대로 '진입'입니다.







Kubernetes 커뮤니티에서도 마찬가지입니다. 클러스터에 들어오는 트래픽을 인그레스라고 하고 클러스터를 나가는 트래픽을 이그레스라고 합니다.




네이티브 Kubernetes 리소스로서 인그레스는 포드, 배포 등과 비슷합니다. 인그레스를 사용하여 DNS 라우팅 구성을 따라갈 수 있습니다. 인그레스 컨트롤러는 라우팅을 수행합니다. etcd에 저장된 인그레스 객체에서 바로 라우팅 규칙을 읽어 이를 수행합니다. Kubernetes 수신 없이 배포에 서비스 유형 로드 밸런서를 포함하여 애플리케이션을 외부 세계에 노출할 수 있습니다.



Kubernetes 인그레스는 어떻게 작동합니까?

명확히 해야 할 두 가지 중요한 사항이 있습니다. 이것들은:





Kubernetes 인그레스 리소스

이 리소스는 클러스터의 모든 DNS 라우팅 규칙을 유지 관리하는 역할을 합니다. DNS 라우팅 규칙은 기본 Kubernetes 리소스인 Kubernetes Ingress 리소스에 지정됩니다. 즉, 외부 DNS 트래픽을 내부 Kubernetes 서비스 대상에 매핑합니다.



Kubernetes 인그레스 컨트롤러

수신 리소스에 의해 구현되는 DNS 규칙에 대한 액세스 권한을 획득함으로써 Kubernetes 수신 컨트롤러(Nginx/HAProxy 등)가 라우팅을 담당합니다.

인그레스 컨트롤러의 구현은 Kubernetes 고유의 것이 아닙니다. 따라서 클러스터 기본값이 될 수 없습니다.

수신 규칙이 작동하려면 수신 컨트롤러를 구성해야 합니다. 시장에는 많은 오픈 소스 및 비즈니스 수신 컨트롤러가 있습니다. 클러스터의 역방향 웹 프록시 서버 버전은 수신 컨트롤러 역할을 합니다. 이 Kubernetes 기반 리버스 프록시 서버는 로드 밸런서 서비스에 노출됩니다.

인그레스 컨트롤러란?

인그레스 컨트롤러라는 클러스터 실행 프로그램은 인그레스 리소스에 따라 HTTP 로드 밸런서를 구성합니다. 로드 밸런서는 외부에 배포된 하드웨어 또는 클라우드 로드 밸런서이거나 클러스터 내에서 소프트웨어로 작동할 수 있습니다. 다양한 로드 밸런서에 대해 서로 다른 수신 컨트롤러 구현이 필요합니다.

NGINX를 사용할 때 로드 밸런서와 인그레스 컨트롤러는 모두 포드에 배포됩니다.

수신 리소스가 작동하려면 활성 수신 컨트롤러가 클러스터에 있어야 합니다.

Ingress 컨트롤러는 kube-controller-manager 바이너리의 구성 요소로 작동하는 다른 유형의 컨트롤러와 달리 클러스터와 함께 자동으로 시작되지 않습니다.

전제 조건:

Kubernetes 클러스터가 필요하고 클러스터와 연결하도록 kubectl 명령줄 도구를 구성해야 합니다. kubectl 명령줄 도구를 사용하여 Kubernetes 클러스터에 명령을 실행할 수 있습니다. 애플리케이션을 배포하고 클러스터 리소스를 검사 및 관리할 수 있으며 kubectl을 사용하여 로그를 볼 수 있습니다.

현재 클러스터가 없는 경우 Minikube를 사용하여 클러스터를 구성할 수 있습니다. Minikube는 Kubernetes 학습 및 개발을 단순하게 만드는 것을 목표로 하는 로컬 Kubernetes입니다.

가상 머신 환경 또는 Docker(또는 유사하게 호환되는) 컨테이너 환경이 있는 경우 단 하나의 명령으로 Kubernetes에 액세스할 수 있습니다. 이제 단계별 프로세스를 시작하겠습니다.

1단계: Minikube 시작

minikube 도구를 사용하여 Kubernetes를 로컬에서 실행할 수 있습니다. Minikube는 일일 개발 작업을 위해 또는 Kubernetes(Windows, Linux PC 및 macOS 포함)를 테스트하기 위해 컴퓨터에서 올인원 또는 다중 노드 로컬 Kubernetes 클러스터를 실행합니다. Minikube를 시작하는 명령은 다음과 같습니다.

> 미니큐브 시작



2단계: 인그레스 컨트롤러 활성화

이 단계에서는 NGINX Ingress 컨트롤러를 활성화하는 방법을 시연합니다. 다음 명령을 수행합니다.

> minikube addons ~할 수 있게 하다 입구



3단계: NGINX 인그레스 컨트롤러가 작동하는지 확인

이제 NGINX 컨트롤러가 활성 상태인지 확인하는 것이 중요합니다. 다음 명령을 사용하여 다음을 확인할 수 있습니다.

> kubectl 포드 가져오기 -N 수신-nginx



이러한 팟(Pod)이 최대 1분 동안 제대로 작동하는지 알아차리지 못할 수도 있습니다. 출력은 이전 이미지에 표시됩니다.

4단계: Hello World 앱 만들기

여기서는 다음 명령을 사용하여 배포를 생성합니다.

> kubectl 배포 웹 만들기 --영상 =gcr.io / 구글 샘플 / 안녕하세요 앱: 1.0



실행되는 명령과 그 결과는 이전 이미지에 첨부되어 있습니다. 출력에서 'hello-app'을 볼 수 있습니다.

5단계: 배포 노출

이제 특정 배포를 노출하는 명령을 보여드리겠습니다. 명령은 다음과 같이 언급됩니다.

> kubectl 노출 배포 Kalsom - -유형 =노드포트 --포트 = 8080



이전 이미지에서 'service/kalsom exposure' 출력을 볼 수 있습니다.

6단계: NodePort를 통해 서비스 방문

이는 NodePort를 통해 생성된 서비스를 방문하는 방법을 보여주는 중요한 단계입니다. 이 목적을 달성하기 위한 명령은 다음과 같습니다.

> minikube 서비스 Kalsom --url



출력과 함께 명령은 이전 이미지에 첨부되어 있습니다.

이제 Minikube IP 주소와 NodePort를 사용하면 샘플 앱을 쉽게 볼 수 있습니다. Ingress 리소스를 사용하여 다음 단계에서 앱에 액세스할 수 있습니다.

7단계: 인그레스 만들기

여기에서 트래픽을 서비스로 전송하는 Ingress를 생성합니다. 명령은 다음과 같이 언급됩니다.

> kubectl 적용 -에프 https: // k8s.io / / 서비스 / 네트워킹 / 예제-ingress.yaml



보시다시피 명령이 성공적으로 실행됩니다.

8단계: IP 주소 확인

IP 주소가 설정되어 있는지 확인합니다. 이를 위해 다음 주어진 명령을 사용합니다.

> kubectl 인그레스 가져오기



출력에서 ADDRESS 열에 IPv4 주소가 표시되어야 합니다.

결론

NGINX 인그레스 컨트롤러의 로깅에 대한 개요는 이 문서에서 제공됩니다. 요약하면 NGINX 구성을 생성하고 이를 적용하기 위해 NGINX를 다시 로드하는 수신 컨트롤러 프로세스의 로그와 함께 NGINX에 대한 액세스 및 오류 로그는 NGINX 수신 컨트롤러에서 사용할 수 있습니다.