k8s 환경에서 batch 동시 작동 하지 않도록 하는 삽질기
·
Debug
백엔드에 배치가 함께있는 형태의 환경백엔드 pod는 2개가 떠있는 상황2개의 pod에서 동시에 실행되면 안되었음1개의 백엔드 pod 에서만 동작하도록 하는 방법 모색k8s에서 특정 pod이름으로 구분하여 배치를 동작하도록 하는 것은 어려워 보였음pod이름이 랜덤으로 생성되고 특정 1개의 pod중 어느것으로 동작할지 정해야하는 상황이었는데, k8s 환경 상 특정 pod에서만 돌도록 설정하는 것은 어려움이 있어보였음 -> statefulset 사용하면 되지 않을까?be-pod-0be-pod-1 statefulset의 네이밍은 순서대로 진행되니까 가능하지 않을까?0번에서만 배치가 돌도록?-> 0번이 죽으면 배치가 실패이중화 불가백엔드 실패 인지 배치 실패인지 확인하려면 일일이 로그 확인 필요결론 현실적으로 어..
413 Request entity too large : nginx 파일 업로드 용량 설정 (k8s ingress)
·
Debug
파일 업로드 기능 구현 후 업로드 진행 시413 Request entity too large 에러 발생# 해결 방법nginx.conf 에서 client max body size 관련 설정 진행 필요server { ... client_max_body_size 10M ...} BUT reverse proxy 서버의 nginx 설정을 진행했지만 동일한 문제 발생이유는 ingress도 nginx로 이루어져서 동일한 설정을 ingress에도 해주어야 했음# 해결 방법ingress yml에서annotations.nginx.ingress.kubernetes.io/proxy-body-size: 11M해결 완료
k8s cronjob으로 spring batch 작업 설정하기
·
DevOps
cronjob 사용주기마다 job 생성 -> pod 생성# 주기spec.schedule: "*/1 * * * *" -> 1분단위...배치마다 설정된 주기를 제대로 입력# Timezone 설정spec.timezone: "Asia/Seoul"배치는 지정 시간마다 동작함배치 설계시 어떤 시간을 기준으로 했는지에 따라 timezone 설정을 진행해줘야함사용하는 시스템의 기본 timezone이 UTC인지 KST인지 잘 확인하여 동일하게 설정해줘야 제대로 동작 가능기본 UTC# 중복 실행 방지spec.concurrencyPolicy: "Forbid"1분주기로 실행시켜야하는 배치가 있을 때 배치 실행 시간이 1분이상 걸리는 경우 발생 -> conflict 발생 concurrencyPolicy옵션으로 중복 실행 방지#..
K8s 에서 Client IP를 BE에 전달하기 : nginx ingress annotation 설정
·
Debug
X-forwarded-header 전달 옵션 설정 필요nginx.ingress.kubernetes.io/use-fowarded-headers: 'true'nginx.ingress.kubernetes.io/x-forwarded-for: $proxy_add_x_forwarded_forBUTSNAT 되면 client ip가 lb ip로 변경되어 진짜 client ip 알 수없음k8s cluster 환경 구성마다 다름 필자는 ingress 관련 expose가 nodeport 로 되어있고 lb를 사용하는 환경이므로 해결안되었음참고barisein.tistory.com/999sawaca96.tistory.com/18findstar.pe.kr/2021/08/22/nginx-ingress-controller-use-fo..
대상 서버의 특정 포트 열려있는지 확인하는 방법 (컨테이너 환경)
·
OS
기업 내부 폐쇄망 환경에서는 방화벽에 포트 오픈 요청을 진행한 뒤, 실제로 해당 포트가 열렸는지 확인하는 과정이 꼭 필요하다.특히 Kubernetes Pod 내부 컨테이너에서 포트 체크가 필요한 경우가 많았다. 다른 명령어들은 그래도 경험이 있지만,특히 pod 안의 컨테이너 환경에서 특정 포트가 열렸는지 확인하는 방법은 이번에 처음 접하게 되어 잊지 않도록 정리해본다. 1️⃣ Telnettelnet telnet 패키지 설치 필요접속 성공 시 검은 화면이 나타남종료: Ctrl + ] → quit 2️⃣ Netcat (nc)nc -v -z 단순하고 빠르게 포트 열림 여부 확인 가능-z: 데이터 전송 없이 스캔만 수행-v: 상세 출력 3️⃣ Bash /dev/tcpecho > /dev/tcp// && ec..
클라우드컴퓨팅 전공수업의 일일 강사가 되다..!
·
Experience
얼마 전, 대학교 시절 수강했던 ‘클라우드컴퓨팅’ 전공 수업의 교수님께 연락을 받았다.수업에 현직자를 초청하는 특강 형식으로, OpenStack 관련 실습 강의를 맡아줄 수 있겠냐는 내용이었다. 이 수업은 2년전 내가 클라우드 기술을 처음 접한 곳이자, 인프라 기술에 흥미를 가지게 된 나에게 뜻깊은 수업이었다.그 수업에서 학생 → 연사로의 전환. 감회가 새로웠다. 강의 구성이번 강의는 OpenStack을 처음 접하는 학생들을 대상으로,기본 개념과 실습 경험을 함께 전달하는 데 중점을 두었다.1. OpenStack 이론클라우드 컴퓨팅의 개념OpenStack의 역사와 등장 배경컴포넌트 구성: Nova, Neutron, Glance, Keystone, Horizon...Private Cloud와 OpenSt..