IBM Cloud Kubernetes Service 에서 앱 문제점 해결

가상 사설 클라우드 클래식 인프라 Satellite

다음 단계는 클러스터 내의 애플리케이션 문제점을 해결하고 애플리케이션 오류 또는 문제점의 근본 원인을 찾는 데 도움이 됩니다.

IBM Cloud 의 상태 검토

  1. IBM Cloud 사용 가능 여부는 IBM Cloud 상태 페이지에서 확인하세요.
  2. Kubernetes 서비스 컴포넌트를 필터링하십시오.
  3. 제한사항 및 알려진 문제 문서를 검토하십시오.
  4. IBM Cloud 에서 사용하는 오픈 소스 프로젝트의 문제에 대해서는 IBM 오픈 소스 및 타사 정책을 참조하세요. 예를 들어 Kubernetes 미해결 이슈를 확인할 수 있습니다.

클러스터 상태 가져오기 및 공통 문제 검토

  1. 클러스터를 나열하고 클러스터의 상태(State)를 찾으십시오.

    ibmcloud ks cluster ls
    
  2. 클러스터의 상태(State)를 검토하십시오. 클러스터가 위험, 삭제 실패 또는 경고 상태이거나 오랜 기간 동안 보류 상태에 멈춰 있는 경우입니다. 자세한 정보는 클러스터 상태를 참조하십시오.

  3. 각 작업자 노드의 상태를 검토하십시오. 자세한 정보는 작업자 노드 상태를 참조하십시오.

    ibmcloud ks worker ls -c CLUSTER
    
  4. 다음 정보를 검토하여 워커 노드 문제를 디버깅하거나 문제를 해결하세요.

세부사항 수집 및 문제점 문서화

문제점에 대한 세부사항을 문서화할 때 가능한 구체적으로 설명하십시오. 예를 들어, Our app occasionally gets 502 Gateway errors when trying to retrieve transaction logs 는 특정하지 않으므로 유용하지 않습니다. 문제를 문서화하기 전에 가능한 한 범위를 좁혀야 합니다. 문제점을 문서화할 때 다음을 포함하십시오.

환경 아키텍처
관련된 구성 요소를 이해할 수 있도록 환경 아키텍처를 문서화했는지 확인하세요. 자세한 정보는 환경 아키텍처 문서화 를 참조하십시오.
오류 메시지 및 구성요소 세부사항입니다.
전체 오류 메시지를 제공하고 오류를 생성하는 컴포넌트에 대한 세부사항을 포함하십시오. 예를 들어, " clusterID ABCDEF의 세 앱 포드 모두 글로벌 로드 밸런서에서 GET /transaction-log에 대한 HTTPS 호출에서 HTTP 502 Gateway Error: Web server received an invalid response while acting as a gateway or proxy server... 오류와 함께 가끔 실패합니다.".
연결의 소스 IP, 대상 IP, 포트 및 프로토콜입니다.
예를 들어, " clusterID 가 ABCDEF인 Kubernetes 클러스터에 있는 세 개의 모든 앱 팟 (Pod). 때때로 소스 포드 IP는 172.22.5.10, 대상 IP는 150.40.40.35 포트 433입니다. 라는 오류와 함께 /transaction-logs를 GLB로 GET하려고 할 때 HTTPS 호출이 실패하는 경우가 있습니다. 프로토콜은 HTTPS 입니다. 다른 두 개의 GLB IP 150.40.40.55150.40.40.75" 와 마찬가지로 다른 팟 (Pod) 도 이 IP 주소를 사용합니다.
문제점의 시작 날짜, 시간 및 빈도입니다.
다음 메시지 예시를 검토하세요.
  • 이 문제점은 모든 연결 시도의 약 2%에 영향을 줍니다.
  • 이 문제점은 19:00-21:00 UTC 사이에만 발생하며 이 시간 동안 모든 연결 시도의 약 5%에 영향을 줍니다.
  • 이 문제점은 팟 (Pod) ID XYZ 에서 연결할 때 발생합니다. 문제점은 약 05:30 UTC에 10/25/2023 에서 시작되었습니다.
이미 수행한 조치의 문제점을 해결하십시오.
지금까지 시도한 내용과 문제점의 범위를 좁히는 데 도움이 되는 해당 시도의 결과를 문서화하십시오.

테스트를 실행하여 각 컴포넌트에서 규칙을 적용하거나 제외

  1. 전체 앱 플로우 외부에서 문제점을 다시 작성하십시오. 여기에는 다음이 포함될 수 있습니다.
    • 별도의 시스템 또는 클러스터의 테스트 팟 (Pod) 에서 curl 를 사용하여 백엔드 엔드포인트 또는 서비스에 연결하여 클라이언트가 문제점의 원인일 수 있음을 규칙하십시오.
    • 클라이언트 또는 클러스터의 테스트 팟 (Pod) 에서 www.ibm.com 와 같은 알려진 엔드포인트에 연결하려고 시도합니다. 알려진 엔드포인트는 일관되게 작동하지만 실제 앱 엔드포인트는 작동하지 않는 경우 문제점을 좁히는 데 도움이 됩니다.
  2. 테스트 클러스터를 사용하여 테스트 환경에서 문제점을 다시 작성하십시오.
    • 테스트 클러스터에서 문제점을 다시 작성할 수 없는 경우 문제점의 가능한 소스로 테스트 클러스터와 실제 클러스터 사이의 차이에 초점을 맞출 수 있습니다.
    • 테스트 클러스터에서 다시 작성할 수 있는 경우에는 클러스터 자체에 문제가 없을 수 있습니다. 또한 프로덕션 환경에 영향을 주지 않고 문제점의 범위를 더 좁히기 위해 테스트할 수 있는 환경이 있습니다.

추가 데이터 수집

앱 플로우, 표시되는 특정 오류 및 해당 오류가 발생한 위치를 알고 있으면 관련된 컴포넌트에서 더 자세한 데이터를 수집할 수 있습니다. 여기에는 다음 로그가 포함될 수 있습니다.

  • 영향을 받은 컴포넌트에 대한 팟 (Pod) 및 프로세스 로그.
  • 클러스터 노드 로그 (예: syslog 또는 /var/log/messages). IBM Cloud Kubernetes Service 의 경우, 노드에서 직접 및 기타 syslog 로그를 얻을 수 있습니다.
  • 패킷 추적 정보. 실행 tcpdump 은 패킷 추적 정보를 얻는 일반적인 방법입니다.

Slack에 참여하거나 유사한 문제에 대해 사용자 포럼을 검토하십시오.

  1. Kubernetes Service Slack에 게시하십시오.
    • 외부 사용자인 경우 #general 채널에 게시하십시오.
  2. Kubernetes Service 도움말 또는 Stack Overflow와 같은 포럼을 검토하여 다른 사용자에게도 동일한 문제가 발생했는지 확인하십시오. 포럼을 사용하여 질문을 작성하는 경우 IBM IBM Cloud 개발 팀에서 확인할 수 있도록 질문에 태그를 지정하십시오.
    • IBM Cloud Kubernetes Service 를 사용하여 클러스터 또는 앱을 개발하거나 배포하는 데 대한 기술적 질문이 있는 경우 Stack Overflow에 질문을 게시하고 ibm-cloudcontainers 에 질문을 태그합니다.
    • 포럼 사용에 대한 세부사항은 도움 받기를 참조하십시오.

다음 단계

문제가 계속되면 지원에 문의하십시오. 지원 케이스 열기 케이스 세부사항에는 관련 로그 파일, 오류 메시지 또는 명령 출력이 포함되어야 합니다.