SystemEngineering
-
Deployment RollBackSystemEngineering/kubernetes 2021. 11. 29. 15:42
개요 운영을 하면서 배포 이미지에 문제가 생길 경우 빠르게 롤백해야 하는 상황이 생긴다. 롤백 방법을 자주 까먹어 정리하여 글을 쓴다. 리비전 확인 롤백 가능한 리비전을 아래 명령어로 확인 할 수 있다. $ kubectl rollout history deployment srebgk-deployment deployment.apps/srebgk-deployment REVISION CHANGE-CAUSE 63 64 65 66 67 68 69 70 71 72 73 리비전 상세정보 롤백이 필요할 때 리비전의 상세정보를 확인하여 이미지 버전 및 파드의 상세정보를 확인 가능하다. $ kubectl rollout history deploy srebgk-deployment --revision=64 설정 변경 롤백 릴리즈..
-
PodDisruptionBudget을 이용한 Pod 재배치SystemEngineering/kubernetes 2021. 9. 7. 22:11
개요 쿠버네티스 환경을 운영하다 보면 클러스터의 노드를 변경해야 하는 순간이 온다. 이럴 때 교체 대상이 되는 노드를 drain 한다. drain은 노드 위에서 운영되고 있는 Pod를 다른 노드로 재 배치하고 Schedule을 중지시킨다는 내용이다. 하지만 drain을 무작정하게 되면 모든 파드가 동시에 재배치 되거나 헬스 체크를 통과하기 전에 다음 파드의 재배치가 시작되어 정상적인 파드가 하나도 없는 상태가 될 가능성이 있다. 이러한 현상을 예방해보자. 문제 상황 서비스되고 있는 Deployment가 드레인 상태의 노드에 스케줄링되어있을 경우 Node A 에서 drain을 하게 되면 service 1에 묶여있는 deployment는 동시에 재 배치되므로 이러한 경우에는 Node B와 Node C에 배치..
-
Kubernetes 환경 서비스 무중단 배포SystemEngineering/kubernetes 2021. 8. 5. 20:09
개요 사내에서 팀원들이 사용하는 웹사이트를 운영 중에 있다. 혼자서 개발하고 배포하고 하는데 이상하게 배포할 때마다 1~2초 정도 503 Error가 발생한다. 분명 Deployment로 롤링업데이트를 진행한다고 이해하고 있었는데 이상하다. 그렇게 무중단 배포가 아닌 채로 운영을 하다가 아래 카카오 기술 블로그의 글을 읽었다. kubernetes를 이용한 서비스 무중단 배포 Kubernetes는 컨테이너 오케스트레이션 영역에서 거의 표준으로 자리 잡은 오픈소스 시스템입니다. kubernetes를 사용하게 되면 여러대의 노드를 하나의 클러스터로 묶어서 사용가능하게 됩니다. 클 tech.kakao.com 무중단 배포의 Key는 Pod의 readinessProbe이다. 배포를 막 마치고 pod가 올라올 때 애..
-
Nginx Error: upstream prematurely closed connection while reading response header from upstreamSystemEngineering/Web Application 2021. 7. 30. 21:18
개요 "백엔드에서 애플리케이션은 동작하는데 2분 정도가 지나면 502 Bad Gateway Error가 발생하면서 값을 프론트에서 수신받지 못합니다. Nginx 설정 값을 수정해 주세요"라는 문의가 들어왔다. 이게 과연 Nginx 문제일까? Nginx config 파일 2분 정도에 연결이 끊긴다는 것은 timeout 설정 값을 확인해 볼 필요가 있다. upstream은 nodejs이고 proxy로 둔 nginx의 각 timeout은 300s이다. ... 생략 upstream nodejs { server 127.0.0.1:8081; keepalive 1024; } server { listen 8080; # Increase proxy timeout # ------------------------ proxy_..
-
TCP KeepaliveSystemEngineering/Network 2021. 7. 12. 00:15
개요 특정 고객사에서 애플리케이션에서 Timeout Exception이 발생하고 RST 반환 개수가 많다는 문의가 들어왔다. 정리 하는 글이 이 고객사의 직접적인 원인은 아닌 것으로 판단되나, 공부한 김에 정리해 두려한다. HTTP Keepalive 갑자기 HTTP keepalive가 왜 나오는지 의아할 수 있다. 하지만 꽤 많은 사람이 tcp keepalive와 구분하지 못한다. 해당 되지 않는다면 건너뛰어도 좋은 내용이다. HTTP keepalive는 Apache / Nginx 등의 웹 애플리케이션의 keepalive timeout을 의미한다. TCP keepalive와는 다르게, timeout 설정 시간 동안 요청(Request)이 없으면 연결을 자발적으로 끊는다. → HTTP keepalive t..