전체 글
-
14. 파드의 컴퓨팅 리소스 관리카테고리 없음 2024. 3. 25. 21:54
1. 파드 컨테이너의 리소스 요청 파드를 생성할 때 컨테이너가 필요로 하는 CPU와 메모리 양 제한을 지정할 수 있다 파드의 요청과 제한은 파드에 속한 컨테이너 요청과 제한의 합이다 1.1 리소스 요청을 갖는 파드 생성하기 # 리소스 요청을 갖는 파드 apiVersion: v1 kind: Pod metadata: name: requests-pod spec: containers: - image: busybox command: ["dd", "if=/dev/zero", "of=/dev/null"] name: main resources: requests: cpu: 200m memory: 10Mi 컨테이너 요청에 cpu 200m과 memory 10Mi를 지정했다 cpu를 지정하지 않으면 이미 cpu자원이 많이 할..
-
[부록1] 각 리소스가 연결되는 방식infrastructure/쿠버네티스 인 액션 2023. 4. 9. 17:58
** 클러스터마다 연결방식이 상이할 수 있다. 클라이언트와 Ingress Controller(Pod) 도메인은 Ingress Node의 IP를 매핑했다. 즉, 노드포트로 들어온 클라이언트의 요청이 Ingress Controller라는 파드로 간다. (이것만 확인하면 됨) Ingress Controller와 Ingress $ kubectl describe ingresses poi-ingress 명령어로 확인해보면 Ingress의 Annotations를 확인할 수 있는데 여기서 kubernetes.io/ingress.class: poi라는 key value가 ingress-controller의 레이블에 있어야 한다. 반드시 key가 kubernetes.io/ingress.class에 대응하는 value가 같..
-
도커 빌드 오류(arm vs amd)infrastructure/도커 2023. 4. 8. 20:20
문제 상황 새로 받은 맥북에서 신나는 마음으로 간단한 웹서버를 빌드한 뒤 도커이미지를 만들어 배포했다. 그다음 컨테이너를 실행하는 파드를 만들었는데 위처럼 계속 파드 생성에 실패했다. 생각 정리 - 도커를 실행하는 환경 : amd - 도커를 빌드한 환경 : arm 빌드할 환경을 실행할 환경으로 맞춰줘야 겠구나! 해결 $ docker buildx build --platform=linux/amd64 -t poistargram/port . $ docker inspect poistargram/port 빌드할 때 실행환경인 amd 기반으로 빌드하도록 옵션을 넣어준다!(간단) arm VS amd M1칩은 arm 기반, Intel칩이 amd 기반이다. 이름도 비슷해서 매우 헷갈릴 것 같다. 간단하게 해결한 것처럼 적..
-
Spring @RequestScope 빈 스코프spring/core 2022. 8. 7. 16:48
스프링에서 관리하는 빈의 스코프는 기본값이 싱글톤이다. 웹애플리케이션을 운영하는 경우 사용자마다 다른 데이터를 갖고 서버에 진입할 수 있고 다른 데이터를 갖는다면 싱글턴빈으로는 그 값을 표현할 수 없다. 사용자마다 다른 데이터를 갖는 빈을 마치 스프링이 관리하는 싱글턴 빈처럼 사용할 수는 없을까? @RequestScope 사용 @Component @RequestScope @Setter @Getter public class HttpRequest{ private String headerMessage; private int count; } @Slf4j @RequiredArgsConstructor @RequestMapping @RestController public class TestController { pr..
-
1장 쿠버네티스 소개infrastructure/쿠버네티스 인 액션 2022. 6. 29. 22:35
컨테이너의 이해 가상머신 작은 단위의 애플리케이션에 각각의 가성머신을 제공 애플리케이션의 개수가 많아지면서 하드웨어 리소스, 관리 리소스가 같이 커짐 리눅스 컨테이너 동일한 호스트 시스템에서 여러개의 서비스를 실행 서로 다른 환경이지만 가상머신에 비해 리소스가 훨씬 적음 도커 개념 이해 도커는 애플리케이션을 패키징, 배포, 실행하기 위한 플랫폼 애플리케이션을 전체 환경과 함께 패키징 도커의 주요 개념 - 이미지 : 애플리케이션과 환경을 패키징 - 레지스트리 : 도커 이미지를 공유하는 클라우드 - 컨테이너 : 도커 기반 컨테이너 이미지에서 생성된 리눅스 컨테이너 1. 개발자는 생성한 이미지를 레포지토리로 전송 2. 다른 개발자는 만들어진 이미지를 로컬로 다운 3. 로컬의 도커를 이용해 다운 받은 이미지로 ..
-
[mac] java 터미널 버전 변경하기java 2022. 3. 27. 12:20
들어가며 사내에서 사용하는 java 버전은 1.8과 11이다. 각 프로젝트마다 java 버전을 설정해 컴파일할 수 있도록 intellij가 옵션을 제공해서 큰 불편함 없이 사용할 수 있다. 최근에 이러한 걸 크게 신경쓰지 않고 개발하다가 운영환경에서 빌드 할 때 에러를 맛보았다. 바로 프로젝트 빌드 결과물을 외부 저장소에 올릴 때 생긴 문제였다. 로컬에서 컴파일한 .jar파일을 외부에 올리는데 이때 컴파일하는 건 터미널에 설정된 java버전으로 하게 된다. 1.8로 빌드해야할 프로젝트를 11버전으로 빌드한 후 외부저장소에 올리고 그걸 다운받아 사용하는 프로젝트에서 버전이 맞지 않아 컴파일 오류가 발생하게 된 것이다. 서론이 길었는데 시스템의 java 버전을 확인하고 바꾸는 방법을 남겨보자. 버전 확인하기..
-
Gradle 기본 꿀팁 정리카테고리 없음 2022. 3. 12. 14:10
gradle 버전 확인하기 - gradlew가 있는 디렉토리 경로에서 ./gradlew --version 입력 후 확인 gradle의 캐싱 프로젝트를 실행할 때 gradle은 내부적으로 두 가지 캐시를 먼저 참조한다. 첫번째로 외부라이브러리에 대한 캐시인데 우리가 외부레파지토리에서(nexux, mavenRepository...) 의존성을 다운받은 라이브러리다. 보통 [~/.gradle/cache/modules-2/files-2.1] 경로에 쫙 있는 걸 확인할 수 있다. 다음으로는 내가 작성한 자바파일의 컴파일된 버전이다. 위 설정에서 build and run using을 intelliJ IDEA 또는 Gradle로 설정할 수 있는데 intellij로 설정할 경우 프로젝트 디렉토리 하위에 out디렉토리가..
-
[java] 슈퍼타입토큰(super type token)java 2022. 1. 1. 16:25
모든 글은 토비의 봄 채널을 보며 작성하였습니다. https://www.youtube.com/watch?v=01sdXvZSjcI&t=1973s&ab_channel=TobyLee 배경 RestTemplate를 사용하다보면 파라미터바인딩을 위한 타입토큰을 넘겨주는 부분에서 생소한 ParameterizedTypeReference를 사용한 걸 볼 수 있다. 클래스 이름과 생김새를 보면 대충 아 바인딩 되길 원하는 타입을 저 안에 넣고 요청을 날리면 되겠구나 싶다. 근데 이상한 건 생성자로 성성했는데 왜 마지막에 {}가 붙냐는 것이다. 이번 기회에 파헤쳐보자. 타입토큰(Type Token) RestTemplate을 통해 요청을 보낼 때 그 반환 타입을 타입토큰 형식으로 넘겨주는 걸 볼 수 있다. RestTempl..