분류 전체보기

    [K8s] 쿠버네티스 ReplicaSet의 개념

    ReplicaSet은 Pod 복제본을 생성하고 관리한다 더 이상 N개의 Pod을 생성하기 위해 생성명령을 N번실행할 필요가 없다 ReplicaSet오브젝트를 정의하고 원하는 Pod의 개수를 replicas속성으로 선언한다 클러스터관리자대신 Pod수가부족하거나 넘치지 않게 Pod 수를 조정 레플리카셋을 사용하는 시기 쿠버네티스 공식 docs에서 말하는 레플리카셋은 지정된 수의 파드 레플리카가 항상 실행되도록 보장한다. 그러나 디플로이먼트는 레플리카셋을 관리하고 다른 유용한 기능과 함께 파드에 대한 선언적 업데이트를 제공하는 상위 개념이다. 따라서 우리는 사용자 지정 오케스트레이션이 필요하거나 업데이트가 전혀 필요하지 않은 경우라면 레플리카셋을 직접적으로 사용하기보다는 디플로이먼트를 사용하는 것을 권장한다...

    [K8s] 쿠버네티스 Label과 Selector

    Label 쿠버네티스 오브젝트를 식별하기 위한 key:value 쌍의 메타데이터이다 Selector Label을 이용해 쿠버네티스 리소스를 필터링하고 원하는 리소스 집합을 구하기 위한 label query이다 그렇다면 언제 필요한가 한번 아래의 그림으로 설명해보겠다쿠버네티스 상에서 실행되고 있는 모든 Pod라고 할 때 사실 이 Pod들의 구분은 경계가 없다 그래서 예를 들어보면 내가 주문요청을 지정된 주문 Pod으로만 리다이렉트 하고 싶다 할 때 어떤 Pod이 주문 Pod인지 정의할 수 있어야 한다 일종의 주문 Pod의 집합이라고 생각하면 되겠다 또한 똑같이 주문요청이 있다면 배달 요청도 있을 텐데 똑같이 배달 Pod 들의 경계 즉 집합을 만들어주면 된다 이런 식으로 쿠버네티스에 많은 리소스들이 있는데..

    [K8s] 쿠버네티스 Pod간의 네트워크

    1. Pod안에 서로 다른 컨테이너끼리 localhost로 통신한다 하나의 Pod에 서로 다른 포트로 컨테이너 2개를 선언 2. 서로 다른 Pod끼리 Pod IP로 통신한다. Pod A에 있는 컨테이너 -> Pod B에 있는 컨테이너로 요청 전송/응답 확인 (파드 안에서 실행될 컨테이너는 준비되어있는 이미지이다) 진행 순서를 다시 한번 확인해 보자면 Pod 선언과 환경변수 설정 Pod 생성/배포 Pod IP 할당 및 컨테이너 실행 확인 컨테이너 환경변수 목록 확인 컨테이너 간 localhost 통신 다른 Pod의 Pod IP로 통신 포트포워딩을 통해 각 컨테이너로 요청/응답 확인 컨테이너 안에서의 엔드포인트 응답은 /sky, /tree, /rose, /hello 4개의 엔드포인트로 확인해볼 거다 총 실행..

    [K8s] 쿠버네티스 Pod의 개념과 환경변수

    파드(Pod)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 파드 (고래 떼(pod of whales)나 콩꼬투리(pea pod)와 마찬가지로)는 하나 이상의 컨테이너의 그룹이다. 이 그룹은 스토리지 및 네트워크를 공유하고, 해당 컨테이너를 구동하는 방식에 대한 명세를 갖는다. 파드의 콘텐츠는 항상 함께 배치되고, 함께 스케줄 되며, 공유 콘텍스트에서 실행된다. 파드는 애플리케이션 별 "논리 호스트"를 모델링한다. 여기에는 상대적으로 밀접하게 결합된 하나 이상의 애플리케이션 컨테이너가 포함된다. 클라우드가 아닌 콘텍스트에서, 동일한 물리 또는 가상 머신에서 실행되는 애플리케이션은 동일한 논리 호스트에서 실행되는 클라우드 애플리케이션과 비슷하다. 쿠버네티스 공식 docs..

    [DevOps] 데이터베이스 정규화

    정규화 설명 정규화는 데이터베이스의 데이터를 구성하는 프로세스이다. 이 프로세스에는 중복성 및 일치하지 않는 종속성을 제거하여 데이터베이스의 유연성을 높이는 동시에 데이터를 보호하도록 설계된 규칙에 따라 테이블을 만들고 해당 테이블 간의 관계를 설정하는 작업이 포함됩니다. 데이터가 중복되면 디스크 공간이 낭비되며 유지 관리상의 문제가 발생하게된다. 여러 위치에 있는 데이터를 변경해야 하는 경우에는 모든 위치에서 데이터를 정확히 동일한 방식으로 변경해야 한다. 고객 주소 데이터가 Customers 테이블에만 저장되어 있고 데이터베이스의 다른 위치에는 없다면 고객 주소 변경을 구현하기가 훨씬 쉬워질 것입니다. 그렇다면 "일치하지 않는 종속성"이란 무엇일까? 특정 고객의 주소를 찾으려는 사용자는 자연스럽게 C..

    [Linux] NGINX 개념과 각 환경에서 설치방법

    '엔진 엑스' 로 발음되는 NGINX 는 널리 사용되는 오픈 소스 웹 서버 소프트웨어이다. 2002년 Igor Sysoev가 시작한 프로젝트였으며 2004년 10월에 공식적으로 출시되었다. 동시에 10,000개의 연결을 관리해야 하는 과제로 정의되는 C10k의 문제를 해결하기 위해 만들어졌다. Apache 서버 아파치 서버는 1995년에 나왔으며 nginx는 2002년에 출시됐다 왜 nginx를 사용하는지 왜 1등이되었는지 를 알기위해서는 아파치 서버가 만들어진 1995년부터 내려가보자 그당시에는 유닉스 기반으로 만들어진 최초의 웹서버 NCSA HTTPd 가 있었다 하지만 이 웹서버는 버그가 굉장히 많아서 개발자들이 수정하면서 변경하고 기능도 추가해서 만든게 아파치 서버다. 아파치 서버는 요청이 들어오면..

    [K8s] GKE(구글 쿠버네티스 엔진) 세팅 방법

    Google Kubernetes Engine(GKE)를 사용하는 방법을 알아보자. 클라우드를 사용하기위해서 옆의 주소로 들어가자 https://cloud.google.com/ 오른쪽에 무료로 시작하기 버튼을 누르고 회원가입하고 개인정보를 입력했다면 무료평가판이 시작되고 300$가 지급이되는데 90일 동안 사용가능하다는점 유의하길 바란다 만들었다면 쿠버네티스 클러스터를 만들어보자 만들기 누르고 표준 모드를 선택해주자 선택을 했으면 이름은 자유롭게 정하고 노드수는 3개로 해주고 만들기를 해주면 클러스터 구성은 완료된거다. 이제 구글 쿠버네티스 클러스터를 로컬과 연결해보자 로컬 환경에서 gcloud CLI를 사용하기위해서 설치해보자 https://cloud.google.com/sdk/docs/install 필..

    [Docker] docker 이미지 생성하기

    docker 이미지 Layer 구조 위의 그림에서 왼쪽은 docker image이고 오른쪽은 docker container이다 도커 이미지가 총 3가지 있는 것을 확인할 수 있는데 왼쪽부터 ubuntu, nginx 그리고 web app 이렇게 구성이 되어있다 여기서는 이해가 쉽게 nginx는 ubuntu이미지 기반으로 만들어졌다고 가정하고 web app는 nginx 이미지 기반으로 만들어졌다고 가정을 해보자 ubnutu 이미지를 보면 A, B, C 3가지의 Layer로 구성되어있다 실제로 docker image는 Layer 아키텍처라고 새로운 환경이 계속 쌓이는 구조로 되어있다 그렇기 때문에 nginx 이미지는 ubuntu 기반으로 만들어졌기 때문에 ubuntu Layer가 그대로 있는 상태에서 ngin..