Infra

    2022년 개지니어(개발자 + 엔지니어) 콩니의 회고

    2022년 개지니어에게 일어난 일을 정리해 보는 회고 시간입니다. 🤔2022년 개지니어 콩니에게는 무슨 일이 있었나? 파트별로 들어가기 전, 총평이라는 것을 하자면 변화의 시기였습니다. 2021년에 생각했던 2022년 말의 제 모습과 지금의 제 모습 간에는 상당한 차이가 있네요. 지금 생각하는 2023년 말의 저도 지금의 제가 상상하기 어려운 모습일까요? 기대가 됩니다! 좋은 변화든, 나쁜 변화든요. ⌨️ 개발 뭘 했어야 제대로 된 반성을… 샘플 코드나 개인 생활에 필요한 매크로용 코드 정도만 작성하였습니다… 그나마 하던 것들까지 싸그리 까먹을 판이라, 내년에는 꼭 소규모이더라도 서비스를 개발해 보도록 하겠습니다. 내새끼 둥가둥가 하면서 서비스를 키워 보고 장애대응도 해 보고 마이그레이션도 해 보아야 실..

    [Kubernetes] AKS 쿠버네티스 Multi-AZ(Availability Zone) 환경에 PV를 사용할 때, 주의하자! volume node affinity conflict

    [Kubernetes] AKS 쿠버네티스 Multi-AZ(Availability Zone) 환경에 PV를 사용할 때, 주의하자! volume node affinity conflict

    꽤 지난 이야기이긴 한데, 테스트 클러스터에서 겪었던 일이라 소규모 클러스터, 그 중에서도 statefulset을 사용하는 클러스터를 운영하는 경우 마주칠 수 있는 상황이라 공유합니다. 증상 커피를 마시고 왔는데, 테스트 클러스터의 statefulset으로 올려진 애플리케이션이 pending 상태로 전환되어 있다. 뭐야 왜지? 에서 출발한 의문. 로그를 확인해 보니, FailedScheduling 이 해당 애플리케이션에서 발생하였는데, 원인은 1 Insufficient cpu, 1 Too many pods, 1 node(s) had volume node affinity conflict 였습니다. 시스템 노드를(Master Plane 말고.. 요거는 매니지드 쿠버네티스로 띄워둔거라 마스터노드는 내가 관리하..

    [이럴땐이렇게] Kubernetes(쿠버네티스)에서 namespace 삭제가 안 될 때 강제 삭제하기

    [이럴땐이렇게] Kubernetes(쿠버네티스)에서 namespace 삭제가 안 될 때 강제 삭제하기

    안녕하세요~ 요즘 집이나 회사나 처리할 일이 많아서ㅜㅜ 짬이 통 나질 않네요.. 금요일 오후 늦게부터는 시간이 좀 되니까 Multi-AZ 환경에서의 statefulset 배포시 주의점이나 아니면 Rancher 연동으로 꼭! 찾아오겠습니다. 짧게라도 ... Kubernetes에서 kubectl delete ns ${NAME} 이런식으로 namespace를 삭제하실 때 행이 걸리고 namespace는 삭제되지 않은 채 kubectl get ns ${NAME} 이런식으로 확인해 보면 terminating 상태로 계속 대기중인 경우가 종종 있습니다. 이 경우 finalizer를 비워 주시면 되는데요, finalizer를 비워주시는 방법은 API를 이용한 방법이 아래에 소개드릴 방법보다 더 정석이라고 생각해서 먼..

    DNS 레코드 삭제 후 재생성 시 도메인 질의가 되지 않는 문제 해결하기

    🤔 당황스러우면서도 누군가는 저처럼 겪게 될 일이라 대충 정리해서 공유합니다. 저희 회사는 퍼블릭 클라우드에 매니지드 K8S Cluster를 올려 두고 사용하고 있는데요, K8S 환경에 올라간 서비스들을 도메인으로 접근합니다. 그런데 매번 DNS 레코드 추가 요청을 담당 부서에 요청할 수는 없기 때문에 (할 수는 있지만 서로 번거로움) externalDNS 라는 오픈소스를 이용하여 저희 DNS와 연동, 레코드를 자동으로 생성/수정/삭제하도록 운영해 오고 있습니다. (물론 기존 서비스 도메인에 영향을 주지 않도록, 정책과 구분자를 잘 부여하는 작업이 선행되어야겠죠) 서비스들을 잘 사용하고 있었는데, 뭘 테스트 한다고 서비스를 삭제했다가 거의 곧바로 서비스를 재생성할 일이 생겨서 삭제-재생성을 했는데 도메인..

    ARP Protocol은 어떻게 맥 어드레스를 쿼리하고 수신할까?

    ARP Protocol은 어떻게 맥 어드레스를 쿼리하고 수신할까?

    ARP 프로토콜 동일 네트워크 대역 내에서 통신하기 위해 IP 주소를 이용, MAC address를 찾아주는 프로토콜 아래와 같은 방식으로 값을 담아서 보냄 Hardware type: 2계층에서 사용할 프로토콜 타입. 대부분의 경우 ethernet이므로 0 0 0 1 로 값이 (거의) 고정 Protocol type: 상위 계층에서 사용할 프로토콜 타입. 업무할땐 IPv4 가 절대다수이므로 0 8 0 0 (사실상) 고정 Hardware length: H/W address의 길이. MAC 어드레스(맥주소) 이므로 6바이트, 그래서 0 6 Protocol length: Protocol address의 길이. IPv4 쓰므로 4바이트, 그래서 0 4 Operation: OP code. 질의이냐 응답이냐를 구분함..

    [이럴땐이렇게] Jenkins 스케쥴(Crontab) 간격 설정 unexpected token / 발생할 때 (Build periodically error, cron trigger error)

    오늘 겪은 젠킨스 관련 에러 ... 젠킨스 잡에 크론트리거(Build periodically) 를 걸어야 하는데 n분부터 n분 간격, 예를 들어서 매시간 2분부터 4분 간격이라고 하면 2분, 6분, 10분, ... 이런식으로 2분~59분 사이에 4분 인터벌로 스케쥴이 돌아야 하는 상황이었다. Crontab 문법으로 생각해 봤을 때는 3/5 * * * * 로 하면 되겠지만, 저렇게 적용했더니 Unexpected token /