본문 바로가기

전체 글

도커 네트워크 구성 네트워크 구성(가상 브리지/가상 NIC)개념Linux에 Docker을 설치하면, 서버의 물리 NIC가 docker0라는 가상 브리지 네트워크로 연결됩니다.이 docker0는 Docker를 실행 후 디폴트로 만들어집니다.Docker 컨테이너는 실행 시 컨테이너에 172.17.0.0/16라는 서브넷 마스크를 가진 프라이빗 IP 주소가 eth0로 자동 할당됩니다.그리고 가상 NIC는 OSI 참조 모델의 레이어 2인 가상 네트워크 인터페이스로, 페어링 NIC와 터널링 통신을 하게 됩니다.💡 가상 NIC(vethxxx)는 컨테이너에서 eth0로 보입니다. Docker 컨테이너와 외부 네트워크가 통신할 때에는 가상 브리지 docker0와 호스트 OS의 물리 NIC에서 패킷을 전송하는 장치가 필요합니다.Docker.. 더보기
쿠버네티스 및 jMetter를 사용한 서버 부하 테스트 With 가상스레드 jMeter를 사용한 부하테스를 해 보았습니다. 1000명의 사용자(Thread)가 각 10번(Loop)씩 1초(Ramp-up)동안 요청을 보내는 경우 아래와 같았습니다.💡 Spring Boot의 default 쓰레드 풀의 쓰레드 개수는 200개 요청과 동시에 쿠버네티스의 노드 상황을 top 명령어로 확인해 봤습니다.💡 각 노드는 t3.large 서버(2코어 8GB의 램) 서버의 종류는 8개, 레플리카셋은 2였고, 파드 하나당 리소스 제한은 아래와 같습니다.resources: requests: cpu: 250m memory: 512Mi limits: cpu: 400m memory: 768Mi 위와 같이 리소스 제한을 했었는데, 막상 확인해 보니 절반 정도의 리소스들이 사용되지.. 더보기
파드 리소스 조정으로 속도 향상 쿠버네티스 도입 후 심각한 속도 저하 발생, 18초 정도까지 본 적 있습니다. 찾아보니 지나친 리소스 제한은 처리 속도의 제약을 가져다 준다는 글을 보게 되었습니다.[번역] 쿠버네티스에서 쉽게 저지르는 10가지 실수 [번역] 쿠버네티스에서 쉽게 저지르는 10가지 실수쿠버네티스를 사용하면서 쉽게 저지르는 10가지 실수에 대한 번역글입니다. 원글을 읽고 공감가는 부분이 많아 기록으로 남기고자 번역하였습니다.coffeewhale.com 현재 t3.large(2코어 8기가램) 노드를 세 개 쓰고 있습니다.서버의 종류가 약 8개이고, 각 3개의 레플리카 셋이 만들어지도록 설정했기 때문에 24개의 파드가 만들어집니다. 모든 서버를 안전하게 띄우기 위해 각 파드의 리소스를 아래와 같이 설정했습니다.resources:.. 더보기
리소스 부족과 eks scale 수정 1. 파드의 레플리케이션을 2에서 3으로 늘렸습니다.spec: replicas: 2 -> 3 2. 그러니, pod가 pending로 유지되고 로그를 확인하니 메모리가 부족하다고 나왔습니다. 3. 기존의 노드의 개수는 2이고, eks 설정시 k8s가 노드를 최대 3개를 가지도록 했지만, desired는 2라서 이런 상황에서는 자동적으로 노드가 늘어나지는 않는듯 했습니다. 4. 아래 명령어를 통해 desired을 수정했습다.# eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupNameeksctl scale nodegroup --cluster=eks-work-cluster --nodes=2 --name=eks-w.. 더보기
EKS로 ALB Ingress생성 시, ADDRESS가 비어있는 에러 1. 아래 yaml파일로 인그레스를 생성했습니다.apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: alb-ingress annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/group.name: alb-group alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/backend-protocol: HTTP alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/certificate-a.. 더보기
Windows에서 Helm bitnami 레포지토리 추가 방법 1. Helm 다운로드choco install kubernetes-helmhttps://docs.aws.amazon.com/eks/latest/userguide/helm.html Using Helm with Amazon EKS - Amazon EKSIf you get a message that openssl must first be installed, you can install it with the following command. sudo yum install openssldocs.aws.amazon.com 2. 버전 확인helm version 3. Helm 레포지토리 설정 (stable) helm repo add stable https://charts.helm.sh/stable 4. 레포지토리에서 .. 더보기
Mongosh로 몽고DB 접속 및 루트 사용자 생성 1. mongosh 다운로드Welcome to MongoDB Shell (mongosh) Welcome to MongoDB Shell (mongosh) - MongoDB ShellThe MongoDB Shell , mongosh, is a JavaScript and Node.js REPL environment for interacting with MongoDB deployments in Atlas , locally, or on another remote host. Use the MongoDB Shell to test queries and interact with the data in your MongoDB database. Dowwww.mongodb.com2. mongosh 파일 bin위치로 이동 3. .. 더보기
Feign Client Decode Exception Feign Client로 요청을 보내는데, 디코딩을 할 수 없다는 예외가 발생했습니다.import com.sdi.work_order.client.response.JigItemResponseDto;import com.sdi.work_order.util.Response;@FeignClient(name = "jigItemClient", url = "${api-base-url}")public interface JigItemClient { @GetMapping("/jig-item") Response findBySerialNo(@RequestParam(name = "serial-no") String serialNo);}FeignClient는 기본 생성자가 필요합니다.JigItemResponseDto는 r.. 더보기