본문 바로가기
반응형

쿠버네티스32

[TIL] : 154 일일 배움을 위한 Today I Learned ! 소경관 개인 프로젝트를 진행하기 전에 서류 작업을 먼저 하게 되었는데 이제 곧 마무리가 될 것 같다. 당장 이번주 목요일 부터는 발표가 잡혀있다. 2022.03.29 - [Project/소경관] - [소경관] : 화면 설계서 마무리 단계에 돌입했다. CS 지식 Array와 Linked List에 대해서 확실한 복습과 학습을 진행하고 있다. 공부를 하고 같이 공부하는 동기에게 설명하면서 공부하고 있는데 역시 이런 방법이 제일 좋다. 2022.03.29 - [노트/CS 노트] - [CS 노트] : Array와 Linked List를 비교하면 어떤가? Spring Boot 멜론 차트 크롤링하는 토이 프로젝트를 만들고 있다 지금 데이터 전체를 가져오는 것 까지 .. 2022. 3. 29.
[TIL] : 149 일일 배움을 위한 Today I Learned ! Spring Boot 멜론 차트 1~ 100순위를 MongoDB에 저장하는 프로젝트를 진행하고 있다. 아직 코드를 다 작성하지 못 해서 설명을 남기진 못 했으나 내일 안으로 완성해서 코드를 적어 올릴 예정이다. 강연 및 세미나 OKKY에서 주최하는 세미나에 참여했다. 이제는 거의 주기적으로 매 번 참여하는 것 같다. 개인적으로 최신 기술에 대한 정보나 내가 원하는 것에 대한 정보를 얻을 때 잡지를 많이 봤는데 요즘에는 영상이나 이런 세미나 참여 기회가 잦아지면서 질의응답이 실시간으로 가능한 매체를 추구하게 되었다. 2022.03.24 - [발전소/강연 및 세미나] - [강연 및 세미나] : 서비스 개발자로 커리어 전환하기 by 와이즐리컴퍼니 현철 CTO .. 2022. 3. 24.
[Kubernetes] : Configmap과 Secret 쿠버네티스 YAML 파일과 설정값을 분리할 수 있는 Configmap과 secret이라는 오브젝트가 있다. Configmap에서는 설정 값을 저장하고, Secret에서는 노출되면 안 되는 값을 저장한다. 이 두 개를 사용하면 애플리케이션과 설정값을 별도로 분리해 관리할 수 있는 장점이 생기게 된다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 24.
[Kubernetes] : 네임스페이스 사용하기 네임스페이스는 YAML 파일에 정의해 사용이 가능하다. apiCersion: v1 kind: Namespace metadata: name: production YAML 파일을 적어준다. kubectl apply -f production-namespace.yaml kubectl create namespace production 둘 중 하나의 명령어로 생성이 가능하다. kubectl get ns | grep production production이라는 네임스페이스가 정상 생성이 되었는지 체크한다. kubectl get pods --all-namespaces 모든 네임스페이스의 리소스를 확인할 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 24.
[TIL] : 148 일일 배움을 위한 Today I Learned ! 소경관 이제 본격적으로 프로젝트를 시작하기 앞서 먼저 개발 설계 산출물을 작성하고 있다. 학교에서 프로젝트로 평가를 진행하는데 중간고사 전 까지 개발 산출물 작성이 목표이다. 또, 어떤 글을 읽어보니 이런 설계를 잘 해야 코딩하는 시간도 줄어들고 코드의 질도 높아진다고 해서 천천히 작성하면서 실 개발 시작 전 까지 내용을 업그레이드 할 생각이다. 2022.03.23 - [Project/소경관] - [소경관] : 개발 설계 산출물 작성(1) 멘토링 학교 후배에게 멘토링 수업을 진행했다. 부탁 받은 것은 Java 기초부터 배열까지였고 오늘은 과제를 체크하고 Scanner 사용법에 대해 알려주었다. 다음 주에 마지막이 될 것 같다. R 데이터 프레임을 다뤄보고.. 2022. 3. 23.
[Kubernetes] : 네임스페이스 기본 이해 네임스페이스를 간단하게 사용해 본다. 네임스페이스는 쿠버네티스에서 namespace 또는 ns라는 이름으로 사용할 수 있고 kubectl get namespaces 명령어로 확인이 가능하다. kubectl get namespaces kubectl get ns 둘 중 아무거나 사용해도 상관없다. 기본적으로 네임스페이스는 생성하지 않아도 3개가 존재한다. 각 논리적인 리소스 공간이라서 각 네임스페이스에는 포드, 레플리카셋, 서비스 같은 리소스가 따로 존재한다. kubectl get pods --namespace default default라는 이름의 네임스페이스에 생성된 포드를 확인해 본다. 이 default 네임스페이스는 쿠버네티스를 설치하면 자동으로 사용되도록 설정되어 있는 네임스페이스이다. —names.. 2022. 3. 23.
[Kubernetes] : 네임스페이스(Namespace) 언급. 도커, 도커 스웜 모드는 컨테이너를 논리적으로 구분하는 방법이 없었다. 용도에 따라 컨테이너와 그에 관련된 리소스를 구분해 관리할 수 있는 논리적 그룹이 있으면 좀 더 편할 것이다. 쿠버네티스에서 이런 일을 네임스페이스(Namespace)가 해준다. 네임스페이스는 포드, 레플리카셋, 디플로이먼트, 서비스와 같은 쿠버네티스 리소스들이 묶여 있는 하나의 가상 공간이나 그룹으로 이해하면 된다. 여러 개의 네임스페이스를 사용하면 마치 하나의 클러스터에서 여러 개의 가상 클러스터들을 동시에 사용하는 것 처럼 느낄 수 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 23.
[TIL] : 147 일일 배움을 위한 Today I Learned ! JPA 영속성 컨텍스트에 대해 코딩하며 공부하고 있다. 처음 접해보는 기술이라 한 번에 이해가 되지는 않는다. 추가로 책을 구매해서 살펴봐야 할 것 같다. 2022.03.22 - [Data Base/JPA] - [JPA] : JPA 영속성 컨텍스트(2) Kubernetes Service 종류마다 설정하는 법을 읽고 온프레미스 환경에서 LoadBalancer 타입의 서비스를 사용할 수 있다는 것을 캐치했다. 2022.03.22 - [Server & System/Kubernetes] - [Kubernetes] : 온프레미스 환경에서 LoadBalancer 타입의 서비스 사용 오류 노트 MongoDB를 외부접속하여 사용하려고 하다 오류가 생겨 기록했다. 202.. 2022. 3. 22.
[TIL] : 146 일일 배움을 위한 Today I Learned ! Kubernetes 디플로이먼트 사용법에 대해 알아보고 Service 종류 중 자주 사용하는 것을 체크해 봤다. 2022.03.21 - [Server & System/Kubernetes] - [Kubernetes] : 디플로이먼트 사용하기 2022.03.21 - [Server & System/Kubernetes] - [Kubernetes] : 디플로이먼트를 사용하는 간단한 이유 2022.03.21 - [Server & System/Kubernetes] - [Kubernetes] : Service : 포드를 연결하고 외부에 노출하기 2022.03.21 - [Server & System/Kubernetes] - [Kubernetes] : Service 종류 .. 2022. 3. 21.
[Kubernetes] : Service 종류 포드에 접근할 수 있는 규칙을 정의하는 서비스 리소스를 생성해야 하는데 어떻게 접근할 것인지에 따라 종류가 여러 개로 세분화 된다. 자주 사용되는 서비스 타입은 아래와 같다. ClusterIP 타입 쿠버네티스 내부에서만 포드에 접근할 때 사용한다. 외부에 노출하지 않아 클러스터 내부에서 사용되는 포드에 적합하다. NodePort 타입 포드에 접근할 수 있는 포트를 클러스터의 모든 노드에 동일하게 개방해 외부에서 포드에 접근할 수 있다. 접근 가능한 포트는 랜덤이고 특정 포트로 접근하게 설정도 할 수 있다. LoadBalancer 타입 클라우드 플랫폼에서 제공하는 로드 밸런서를 동적으로 프로비저닝해 포드에 연결한다. 외부에서 포드에 접근할 수 있지만 AWS, GCP 등 클라우드 플랫폼에서만 사용이 가능하다.. 2022. 3. 21.
[Kubernetes] : Service : 포드를 연결하고 외부에 노출하기 디플로이먼트를 통해 생성된 포드에 접근하기 위해 kubectl describe 명령어로 포드의 내부 IP를 직접 확인해 포드로 직접 접근을 할 수 있었지만 문제가 있다. 먼저, 로컬 개발 환경이나 쿠버네티스 클러스터 내부에서만 사용할 수 있다는 점하고 영속적이지 않아 항상 변할 수 있따는 점이다. 때문에 여러 개의 디플로이먼트를 하나의 애플리케이션으로 연동하기 위해 서로를 발견(Discovery)할 수 있는 방법이 필요하다. YAML 팡리 중 containerPort 항목이 포드 애플리케이션이 사용할 내부 포트를 정의하는데 이 항목을 정의했다고 해서 포드가 외부로 노출되는 것은 아니다. 노출되기 위해서는 Service 오브젝트를 생성해야 한다. 이 Service 오브젝트는 여러 기능이 있지만 핵심 기능은.. 2022. 3. 21.
[Kubernetes] : 디플로이먼트를 사용하는 간단한 이유 디플로이먼트를 사용하는 이유는 애플리케이션의 업데이트와 배포를 편리하게 하기 위함이다. 디플로이먼트는 컨테이너 애플리케이션을 배포하고 관리하는 역할을 담당한다. 쿠버네티스에서도 공식적으로 디플로이먼트를 사용할 것을 권장하고 있다. 📖 ← [ 시작하세요! 도커/쿠버네티스 ] 책을 참고하여 공부하였습니다. 2022. 3. 21.
[Kubernetes] : 디플로이먼트 사용하기 레플리카셋으로 마이크로서비스 구조의 컨테이너를 구성할 수 있을 것 같지만 실제 쿠버네티스 운영 환경에서 레플리카셋을 YAML 파일에서 사용하는 경우는 거의 없다. Deployment라는 오브젝트를 YAML 파일에 정의해서 사용한다. 이 디플로이먼트 오브젝트는 레플리카셋의 상위 오브젝트여서 생성 시 이에 대응하는 레플리카셋도 생성된다. kubectl get deploy 생성된 디플로이먼트의 목록을 확인한다. kubectl get replicasets kubectl get pods 포드 개수를 유지시켜주는 것은 레플리카셋이다. 디플로이먼트와 같이 레플리카셋이 생성된 것임을 알 수 있다. kubectl delete deploy my-nginx-deployment 디플로이먼트를 삭제하면 레플리카셋과 포드도 삭제.. 2022. 3. 21.
[TIL] : 144 일일 배움을 위한 Today I Learned ! JPA Spring Boot MVC2편 강의를 끝내고 JPA강의를 수강한다. 2022.03.19 - [Data Base/JPA] - [JPA] : SQL 중심 개발의 문제와 JPA에 대해서.. 2022.03.19 - [Data Base/JPA] - [JPA] : JPA 사용을 위한 프로젝트 셋팅과 간단 설명 Kubernetes 레플리카셋에 대해서 공부하고 있다. 전에 학교에서 실습할 때 잠시 사용해 본 경험은 있지만.. 따라서 해 본 것에 불과하기 때문에 정식으로 사용하기 위해서는 더 깊은 공부가 필요하다. 2022.03.19 - [Server & System/Kubernetes] - [Kubernetes] : 레플리카셋의 동작 원리 2022.03.19 .. 2022. 3. 19.
[Kubernetes] : 레플리케이션 컨트롤러 vs 레플리카셋 이전 쿠버네티스에서는 레플리카셋이 아니라 레플리케이션 컨트롤러(Replication Controller)라는 오브젝트를 통해 포드의 개수를 유지했다. 하지만 지금은 레플리카셋을 사용한다. 이 두 오브젝트의 차이는 표현식 기반의 라벨 셀럭터를 사용할 수 있다는 것이다. 예를 들면 아래와 같다. selector: matchExpressions: - key: app values: - my-nginx-pods-label - your-nginx-pods-label operator: In template: ... key가 app인 라벨을 가지고 있는 포드들 중 values 항목에 정의돈 값들이 존재(In)하는 포드들을 대상으로 한다는 의미이다. app: my-nginx-pods-label 라벨을 가지는 포드뿐만 아.. 2022. 3. 19.
[TIL] : 143 일일 배움을 위한 Today I Learned ! Spring Boot 파일을 올리고, 올린 파일을 다운로드하는 실습 코딩을 진행했다. 간단히 파일을 올린다고 생각했지만 서버에 저장되는 이름이 같으면 충돌이 나는 문제는 떠올려 보지 못 한 부분이다. 2022.03.18 - [Framework/Spring Boot] - [Spring Boot] : 파일 업로드, 파일 다운로드 구현하기 Kubernetes 레플리카셋 사용을 적용해 봤다. 2022.03.18 - [Server & System/Kubernetes] - [Kubernetes] : 레플리카셋 사용 2022. 3. 18.
[Kubernetes] : 레플리카셋 사용 Nginx 포드를 생성하는 레플리카셋을 만들어본다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: replicaset-nginx spec: replicas: 3 selector: matchLabels: app: my-nginx-pods-label template: metadata: name: my-nginx-pod labels: app: my-nginx-pods-label spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 replicaset-nginx.yaml 파일을 작성한다. 리소스의 고유한 이름은 쿠버네티스 오브젝트에서도 설정이 가능하다. kubectl apply.. 2022. 3. 18.
[TIL] : 142 일일 배움을 위한 Today I Learned ! Kubernetes 레플리카 셋과 pod에 대해 공부하기 시작했다. 전에 레플리카 셋을 학교에서 실습해 본 적이 있는데 아직은 잘 모르겠다. 2022.03.17 - [Server & System/Kubernetes] - [Kubernetes] : 완전한 애플리케이션으로서의 pod 2022.03.17 - [Server & System/Kubernetes] - [Kubernetes] : Replica Set, 레플리카 셋을 사용하는 이유 CentOS CentOS에 MongoDB를 설치하고 로그 저장 위치 수정이나 방화벽 등 설정 셋팅을 진행했다. Robo 3T를 통해 외부 접속도 성공했지만 Studio 3T로 해 볼 예정이다. 2022.03.17 - [Ser.. 2022. 3. 17.
[Kubernetes] : Replica Set, 레플리카 셋을 사용하는 이유 포드는 여러 컨테이너를 추상화해 하나의 애플리케이션으로 동작하게 하는 컨테이너 묶음이다. YAML에 포드만 정의해 생성하면 이 포드의 Lifecycle은 어떻게 될까? kubectl delete -f nginx-pod-ubuntu.yaml kubectl get pods kubectl delete pods my-nginx-pod 포드를 삭제하면 그 포드의 컨테이너도 삭제되어 쿠버네티스에서 영원히 사라지게 된다. 이렇게 YAML에 정의해 생성하면 오직 쿠버네티스 사용자에 의해 관리된다. 하지만 외부 사용자의 요청을 처리해야 하는 마이크로 서비스 구조의 포드면 이런 방식을 사용하기 어렵다. 이렇게 YAML 파일에 정의해 사용하는 것은 여러 문제와 한계가 있고 이런 점을 해결해 사용하기 위해 replica se.. 2022. 3. 17.
[Kubernetes] : 완전한 애플리케이션으로서의 pod 완전한 애플리케이션으로서의 포드 K8s는 1개의 컨테이너로 구성된 포드를 사용하는 경우가 많다. 그렇다면 왜 하나의 포드에 여러 개의 컨테이너가 포함되어야 하는지 의문점이 생기게 된다. 여기서 유의점은 하나의 포드는 하나의 완전한 애플리케이션이라는 점이다. Nginx 컨테이너는 그 자체로 완전한 애플리케이션이다. 떄문에 하나의 포드에 2개의 Nginx 컨테이너가 정의되는 것은 옳지 못 하다. 하지만 Nginx 컨테이너가 실행되기 위해 부가적인 기능이 필요하다면 추가 컨테이너를 포드에 포함시킬 수 있다. 이렇게 포드에 정의된 부가적인 컨테이너를 Sidecar(사이드카) 컨테이너라고 한다. 사이드카 컨테이너는 포드 내 다른 컨테이너와 네트워크 환경을 공유한다. 포드에 포함된 컨테이너들은 모두 같은 워커 노드.. 2022. 3. 17.
[TIL] : 141 일일 배움을 위한 Today I Learned ! Spring Boot 포맷터 사용에 대해 공부하고 코딩했다. 2022.03.16 - [Framework/Spring Boot] - [Spring Boot] : Formatter, 포맷터 적용하기 2022.03.16 - [Framework/Spring Boot] - [Spring Boot] : 포맷터를 지원하는 컨버젼 서비스 2022.03.16 - [Framework/Spring Boot] - [Spring Boot] : 포맷터를 웹 애플리케이션에 적용하기 2022.03.16 - [Framework/Spring Boot] - [Spring Boot] : Spring이 제공하는 기본 포맷터 Kubernetes 포드에 대해 알아봤다. 2022.03.16 - [.. 2022. 3. 16.
반응형