• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

node가 장애가 발생한 경우

20.10.12 17:36 작성 조회수 135

1

안녕하세요.

바쁘신 와중에 죄송합니다.

수업 수강후 테스트를 해보다가 

궁금한게 있어서 질문 올립니다.

node가 장애가 발생한 경우에 관련한 질문입니다만,

환경 : GKE

NODE : 3개(node1,node2,node3)

pod : node1에 올라가 있는 상태라고 가정

Service : loadbalancer사용

Deployment사용

replica는 1로 설정(일단 1로 설정 큰 이유는 없음)

readinessProbe 랑 livenessProbe 이하 처럼 사용

        readinessProbe:

          httpGet:

            path: /health

            port: 8080

          initialDelaySeconds: 5

          periodSeconds: 10

          successThreshold: 1

        livenessProbe:

          httpGet:

            path: /health

            port: 8080

          initialDelaySeconds: 5

          periodSeconds: 10

          failureThreshold: 3

위 상태에서 pod가 올라가있는 node1에 ssh접속을 후, 이하 명령어를 줘서 

echo c > /proc/sysrq-trigger 

node1상태가 정상이 아닌 상태로 만들면, 

제 예상으로는 livenessProbe의 설정으로 인해

 pod의 health체크된 후, 문제가 있다고 판단되서 

node1이 아닌 정상인 node2,3에 pod가 다시 생성되어야 된다고 생각을 했습니다만,

node1이 정상이 될때까지 기다린 다음에 node1에 pod가 재생성이 됩니다.

node1에 문제가 생긴 경우, 다른 node에 pod생성이 되도록 하려고 하면 따로 설정이 필요한가요?

그리고 강의자료에서 

failueThreshold 스펠링 수정이 필요할 것 같습니다!

failueThreshold → failureThreshold

답변 3

·

답변을 작성해보세요.

1

아 그렇군요!

답변 감사합니다! 확인해보겠습니다!

1

안녕하세요.

해당 문제해결에 대한 내용은 Node Scheduling 강의에 taint관련 기능을 이해하신후

디폴트로 node에는 어떤 taint 설정들이 있는지 확인하시면 말씀하신 동작에 대한 이해가 될꺼 같습니다.

결과적으로 노드 장애시 liveness와는 별개로 5분정도는 기다려줬다가 타 노드에 파드가 생성됩니다.

그렇기 때문에 5분내에 노드가 살아나면 그 노드에 파드가 그대로 생성되고요.

해당 강의를 보시고 이해가 안되시는 부분이 있으면 다시 질문 주시기 바랍니다.

Ps. 오타 확인 감사합니다

0

안녕하세요.

말씀주신 강의를 보고 다시한번 질문올립니다.

---

환경 : GKE

NODE : 3개(node1,node2,node3)

pod : node1에 올라가 있는 상태

-----

node1에서 장애가 났다고 가정을 하면

5분동안 gke자체 내에서 복구작업이 이뤄지며, 5분안에 노드가 살아나게 되면

그 노드에 파드가 그대로 생성이 됨.

하지만 5분 이상 장애가 지속이 되면 -> 옵션 NoExecute 의 taint가 장애 발생된 node1에 부여가 됨으로

특정 Tolerations를 지니지 않은 pod는 다운되며, 컨트롤러는 pod수가 설정 값보다 감소했음으로

다른 node에 생성이 된다. 

위의 workflow데로 흘러간다고 이해를 했습니다.

여기서 3가지 궁금증인데요.

1.  5분이라는 시간을 직접 사용자가 조정을 할 수 있는 방법이 있을까요.

2.  1번이 가능하지 않다면 5분동안 노드장애를 지속하고 싶은데, 방법이 있을까요.  

조언을 구하고 싶습니다.

(NoExecute 의 taint가 붙는 경우를 보고 싶습니다.)

3.  그리고 노드 장애인 경우 NoExecute 의 taint가 안붙는 경우도 있을까요. 

이러한 질문들 드리는 이유는

gke를 사용하는 프로덕션 환경에서 node장애가 5분 이상 발생을 한 경우가 있었는데, 

다른 node에 재생성이 되지 않은 경우가 있었습니다.

바쁘신 와중에 죄송합니다.

감사합니다.