Post

Section 13-1. Application Failure

udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.

Section13. Troubleshooting

Application Failure

  • 아래와 같은 응용 프로그램 액세스에 문제가 있을 경우 실패 원인을 분석해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+=====================+
|                     |
|   +-------------+   |
|   | Web-Service |   | ⇐ curl http://web-service-ip:node-port
|   +-------------+   |    kubectl describe service web-service
|          ↑          |
|   +-------------+   |
|   |     WEB     |   | ⇐ kubectl get pod /  kubectl describe pod web
|   +-------------+   |    kubectl logs web -f --previous
|          ↑          |
|   +-------------+   |
|   |  DB-Service |   |
|   +-------------+   |
|          ↑          |
|   +-------------+   |
|   |      DB     |   |
|   +-------------+   |
+=====================+

Web-Service 상태 확인

  • 해당 서버가 노드 포트의 IP에서 curl을 이용해 접근 가능한지 확인한다.
    • 1
      
      $ curl http://web-service-ip:node-port
      
  • Web-service의 selector와 WEB의 labels.name을 비교한다. (즉 서비스의 엔드포인트와 파드의 엔드 포인트가 동일한지 확인)
    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      $ kubectl describe service web-service
        Name:             web-service
        Namespace:        default
        Labels:           <none>
        ...생략
        Selector:         name=webapp-mysql
        Endpoints:        10.32.0.6:8080 # web-service의 엔드포인트
      
      
      # Web-pod.yaml
          
      apiVersion: v1
      kind: Pod
      metadata:
        name: webapp-mysql
        labels:
          app: example-app
          name: webapp-mysql
      ...생략
      

WEB pod 상태 확인

  • 파드가 잘 동작 중인지 확인한다.
    • 1
      2
      3
      4
      5
      
      $ kubectl get pod
        NAME      READY   STATUS      RESTARTS    AGE
        Web       1/1     Running     5           50m
      
      $ kubectl describe pod web
      
  • log 커맨드로 애플리케이션 로그를 확인한다.
    • 1
      
      $ kubectl logs web -f --previous
      

DB-Service 상태 확인

  • Web-Service와 마찬가지로 DB-Service를 확인한다.

DB pod 확인

  • Web pod와 마찬가지로 DB Pod를 확인한다.
This post is licensed under CC BY 4.0 by the author.