쿠버네티스 13

쿠버네티스 - EKS 클러스터 생성 및 배포 실습

EKS 실습   EKS 클러스터 구성을 위해선느 역할이 필요하다. 권장 역할 생성을 누르면 자동으로 EKS 역할을 생성할 수 있다. 간단하게 구성할 것이기 때문에 나머지는 다 기본 설정으로 한다. EKS도 5분에서 10분 정도 소요된다. 클러스터가 생성되면 노드를 추가해줘야 한다!첫번째로는 노드 그룹을 추가해야 한다.  노드 그룹을 구성하기 위해서는 클러스터를 생성했을 때처럼 IAM 역할이 필요하다.  권장 역할을 생성하여 노드 IAM 역할을 선택한다.기본 노드 그룹은원하는 크기/최소 크기/최대 크기가 모두 2로 설정되어 있다. 노드 그룹이 활성화되면 설정한 노드의 개수가 자동으로 생성된다.  EKS를 로컬 콘솔에서 작동하게 만들기 위해서는 아래의 도큐먼트를 확인하고 AWS CLI를 설치해야 한다!htt..

쿠버네티스 2024.11.20

쿠버네티스 - GKE 클러스터 생성 및 배포 실습

이전 포스팅에서 제작한 강아지 vs 고양이 투표 웹 사이트를 GKE로 배포해보겠다... GKE 망해버린 실습 ...Autopilot 클러스터로 생성해서 노드 설정을 따로 하지,,, 않았다.  강의에서 기본 Node가 3개라고 뜨는 장면이 화면이 있었는데... 나는 없어서 조금 이상하다고 생각했었다...그리고 내가 처음 클러스터를 생성할 때 Autopilot- Cluster라고 떠있었는데,,, GCP를 처음 접해봤기도 하고, 업데이트 돼서 그런 줄 알았다... 하지만 아래의 문서를 살펴보니 일반적인 클러스터와 Autopilot 클러스터는 다르다는 것을 알아버렸다... 다시 시작되는 GKE 실습클러스터를 생성할 때 우측 상단에 STANDARD 클러스터로 전환이라는 버튼이 있다... 이것을 누르면 노드 풀을 ..

쿠버네티스 2024.11.20

쿠버네티스 마이크로서비스 애플리케이션 이론

MicroServices Application에서의 마이크로서비스란 애플리케이션을 독립적인 여러 개의 서비스로 분리하여 개발하고 배포하는 것이다.프론트엔드/백엔드/인메모리캐시/데이터베이스 등...의 서비스로 나누어서 특정 기능을 수행한다. 마이크로서비스 애플리케이션을 설계하는 것이 중요한 이유는 각 서비스가 독립적으로 움직이기 때문에 배포 및 확장, 유지보수를 편하게 할 수 있다. 각 서비스는 서로 다른 프로그래밍 언어나 데이터베이스를 사용할 수 있다! 왜??? → 독립적으로 움직이기 때문에 한 서비스가 잠깐 고장나도 전체 시스템에 엄청난 영향을 주지 않기 때문이다. 넷플릭스나 아마존과 같은 회사들도 수많은 마이크로서비스를 통해 플랫폼의 기능을 독립적으로 관리하고 있다. [마이크로서비스 애플리케이션의 구..

쿠버네티스 2024.11.18

Kubernetes Services 2 - ClusterIP, Load Balancer

쿠버네티스 서비스에는 NodePort, ClusterIP, Load Balancer가 있다.NodePort에 대해 알고 싶다면 아래의 글을 참고하세요!Kubernetes Services 1 - NodePorthttps://wooinge.tistory.com/79  ClusterIP Pod는 기본적으로 IP 주소를 가지고 있다. 하지만 이 IP 주소는 고정되어 있는 것이 아니다. → IP에만 의존할 수 없는 노릇임그리고 사용자 트래픽에 따라 pod는 언제든지 종료될 수 있고, 새로운 pod가 생성될 수도 있다. 이런 과정에서 IP 주소는 계속 변경될 것이다.또한, 보통의 풀스택 애플리케이션 환경에서는 여러 개의 pod를 사용하여 고가용성 애플리케이션을 제공하기 때문에 서로 어떤 pod를 연결해야 할지 결정..

쿠버네티스 2024.11.14

Kubernetes Services 1 - NodePort

쿠버네티스 서비스 쿠버네티스 서비스는 애플리케이션 내부와 외부의 다양한 구성 요소 간의 통신을 가능하게 한다.애플리케이션을 사용자 또는 타 애플리케이션과 연결할 수 있도록 도운다.사용자-프론트엔드 애플리케이션 연결/프론트엔드-백엔드 Pod 통신/외부 데이터 소스 연결을 설정할 수 있으며, 서비스는 애플리케이션의 마이크로서비스 간 느슨한 결합을 가능하게 한다.   쿠버네티스 서비스는 총 3가지로 정리할 수 있다. 1. NodePort- 노드의 특정 포트를 통해 내부 Pod에 접근할 수 있도록 돕는 서비스2. ClusterIP- 클러스터 내에서 가상의 IP를 생성하여 프론트엔드 서버 그룹과 백엔드 서버 그룹 간 통신을 가능하게 하는 서비스3. Load Balancer- 여러 웹 서버에 부하를 분산할 수 있는..

쿠버네티스 2024.11.14

쿠버네티스의 네트워킹 기본 개념

단일 노드 쿠버네티스 클러스터 노드에는 기본적으로 IP 주소가 있다. IP 주소를 통해 쿠버네티스 노드에 접근할 수 있다. 혹은 SSH를 이용한 접근이 가능하다.쿠버네티스 설정 시 내부 네트워크가 10.244.0.0 대역으로 생성된다. 그리고 이 네트워크 대역으로 모든 Pod가 연결되어 여러 개의  pod를 배포하면 각각 별도의 IP가 할당되어 서로 통신할 수 있게 된다.* Docker의 경우, 컨테이너레에 항상 IP 주소가 자동으로 할당된다. 다중 노드 쿠버네티스 클러스터Node에 Pod를 생성하면 10.244.0.0 대역의 네트워크와 연결되고, 각 Pod는 해당 네트워크 대역의 IP를 할당받는다.그렇다면 다중 노드에서는 어떻게 작동할 것인가? 하나의 쿠버네티스 클러스터 안에 192.168.1.2(No..

쿠버네티스 2024.11.14

YAML 파일을 쿠버네티스에 적용하기 - Deployments

Deployment 프로덕션 환경에서 애플리케이션을 배포하고자 한다.여러 대의 서버 인스턴스가 돌아가는 애플리케이션을 어떤 식으로 배포해야 할까? 1. 배포할 때 모든 인스턴스를 한꺼번에 모두 업그레이드할 경우, 사용자가 애플리케이션에 접근할 때 영향을 줄 수 있으므로 하나씩 차근차근 업데이트하고자 할 것이다. → Rolling Update라고 한다. 2. 업그레이드 중에 문제가 발생할 경우 다시 예전 상태로 돌릴 수 있는 Rollback 기능을 이용한다. 3. 여러 가지 변경을 한 번에 적용하고자 할 때, 즉시 적용하는 것이 아니라 애플리케이션을 일시 정지한 뒤 모든 변경 사항을 한 번에 적용할 수 있도록 할 수도 있다. 위처럼 배포 시 필요한 기능(Rolling Update, Rollback, Pau..

쿠버네티스 2024.11.13

YAML 파일을 쿠버네티스에 적용하기 - ReplicaSet

ReplicaSet애플리케이션이 실행 중인 단일 pod를 가지고 있다고 했을 때, 애플리케이션이 중단되면 더 이상 애플리케이션에 접근할 수 없게 된다.그래서 애초에 애플리케이션의 고가용성(High Availability)를 위해 여러 개의 Pod나 인스턴스를 실행하는 것이 좋다. → 하나가 먹통이 되어도 다른 pod나 인스턴스가 계속 실행되기 때문에 애플리케이션을 이용하는 데 문제가 생기지 않는다.pod를 run 명령어나 create 명령어를 사용하여 생성할 경우, 1개만 생성된다. 이때, 레플리카셋을 이용하면 쿠버네티스 클러스터에서 단일 Pod의 여러 인스턴스를 실행할 수 있다. 그래서 결국 레플리카셋(ReplicaSet)은 무엇이냐? 복제를 설정하는 기술이다. 몇 개 복제할 것인지? 어떤 pod를 복..

쿠버네티스 2024.11.12

YAML 파일을 쿠버네티스에 적용하기 - Pod

쿠버네티스에는 Pod, Replica, Deployment, Service 등과 같은 객체를 YAML 파일을 사용하여 생성할 수 있다. 쿠버네티스 YAML 파일에 필수로 들어가야 하는 항목이 총 4가지 있다. 1. apiVersion: 생성하려는 객체에 대해 사용하는 쿠버네티스 API 버전을 나타낸다. v1, apps/v1beta1, extensions/v1beta1 등의 값으로 설정할 수 있다.2. kind: 생성하려는 객체 유형의 이름을 작성하면 된다.3. metadata: 객체 이름(name), 라벨(labels)과 같은 데이터를 작성하는 필드로, 딕셔너리 형태로 작성해야 한다. 예를 들어 수백 개의 pod가 프론트엔드 애플리케이션, 백엔드 애플리케이션, 데이터베이스를 실행하고 있을 때 각각 fro..

쿠버네티스 2024.11.11

YAML 파일이란?

YAML 파일은 XML, JSON과 같이 데이터를 나타내기 위해 사용된다. [YMAL 예시] 1. 키-값 쌍 데이터를 정의할 때 콜론(:)으로 정의한다. 콜론 다음에 스페이스를 꼭 해줘야 한다는 것을 주의해야 한다.Fruit: AppleVegetable: CarrotLiquid: WaterMeat: Chicken 2. 리스트 혹은 배열은 대시(-)를 사용하여 정의한다.Fruits:- Orange- Apple- BananaVegetables:- Carrot- Cauliflower- Tomato 3. 딕셔너리 혹은 맵Banana: Calories: 105 Fat: 0.4 g Carbs: 27g Grapes: Calories: 62 Fat: 0.3 g Carbs: 16g  4..

쿠버네티스 2024.11.11