분류 전체보기(93)
-
[Kubernetes] 6. 레플리카
Replica 지금까지 우리는 하나의 Pod에 하나의 컨테이너를 만들어왔습니다. 사실 단순하게 바라본다면 이렇게 만들어도 원하는 서비스를 구동하는 데 문제는 없습니다. 이 장에서 말하는 레플리카(replica)는 쉽게 말해 복제본입니다. 레플리카를 만들어야 하는 이유는 다음과 같습니다. Redundancy : 실패에 꽤나 관용적입니다. Scale : 규모를 확장하거나 축소하는 데 편리합니다. Sharding : 병렬 연산에 유용합니다. 사실 위에 언급한 이유는 어떤 어플리케이션을 구동하냐에 따라 레플리카를 만들지 말아야 하는 이유가 될 수 있습니다. 당연하게도 레플리카는 그 개수 만큼 시스템 자원을 사용하기도 하고, 극단적으로는 어플리케이션의 복제본을 100개 만든다고 해서 100배 좋은 게 아니기 때문..
2023.06.13 -
[Kubernetes] 5. 서비스 검색
Service Discovery 쿠버네티스는 우리가 원하는 서비스를 위해 다양한 형태로 Pod을 생성하고 실행하며, 때로는 재스케줄링도 해줍니다. 여기서 어떤 것이 어떤 서비스를 하고 있는 지 알아내는 게 중요한 데, 이를 서비스 디스커버리(service discovery)라고 합니다. 다른 장소에서 서비스 디스커버리의 전통적인 예시로는 도메인 이름 시스템, 즉 Domain Name System(DNS)이 있습니다. 간단하게는 서버의 IP 주소 및 포트를 우리가 이해하기 쉬운 주소로 바꿔주는 데 가령 https://www.google.com/ 는 원래 nslookup 더보기 > google.com Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative ..
2023.06.12 -
[Kubernetes] 4. POD
Pod이란 동일한 실행 환경에서 구동되는 컨테이너들을 모아놓은 컬렉션입니다. 클러스터에서 배포하는 최소 단위이기 때문에 Pod에 있는 컨테이너들은 언제나 동일한 기기에 위치해 있습니다. 따라서 Pod에 있는 컨테이너들은 많은 것을 공유하는데, IP 주소나 Port, 호스트 이름 뿐 아니라 심지어 IPC도 가능합니다. 반대로 다른 Pod들은 서로 독립적입니다. 그렇다면 Pod이라는 개념은 왜 만들어졌을까요? 위 이미지는 영화 다운로드 서비스를 위한 예시입니다. 하나는 영화 다운로드와 관련해서 사용자들과 상호작용할 수 있는 웹 서비스이고 하나는 영화 파일을 원격 저장소에서 가져오거나 또는 로컬 저장소에서 제거하는 동기화 서비스입니다. 이 두 컨테이너를 하나의 컨테이너로 통합하지 않고 왜 구분되어야 할까요? ..
2023.06.03 -
[Kubernetes] 3. 팁
Namespace 네임스페이스(namespace)는 편하게 그룹이라고 생각해도 됩니다. kubectl을 사용할 때, 별도의 네임스페이스를 지정하지 않으면 기본으로 default를 사용합니다. 만일 특정 네임스페이스를 지정하고 싶다면 --namespace=abc 처럼 만들면 되고, 전체 네임스페이스는 --all-namespaces 옵션을 사용합니다. 네임스페이스를 만들기 위해서 create 명령어를 사용합니다. kubectl create namespace {네임스페이스 이름} Context 매번 네임스페이스를 지정하기 귀찮다면, 컨텍스트(context)를 사용하면 됩니다. 예를 들어 abc 네임스페이스를 kubectl에 기본으로 사용하고 싶다면 kubectl config set-context abc-con..
2023.06.01 -
[Kubernetes] 2. 클러스터 배포하기
시작하면서 쿠버네티스 클러스터(cluster)를 배포하는 방법은 여러 가지가 있습니다. 사실 범용 서비스이자 어플리케이션 기반이니만큼 클라우드 서비스를 사용하는 게 좋습니다. (AWS, Azure...) 하지만 비용이 부담되고 처음 클러스터를 배포하는 입장에서는 그냥 집에 있는 컴퓨터에서 해보는 것도 좋습니다. 본 장은 컴퓨터와 kind를 활용해 쿠버네티스 클러스터를 배포하는 것을 설명하겠습니다. kubectl 사실 몇 줄 안되서, 아래에서 진행하면 됩니다. 필자는 우분투에서 진행하는데, 다른 OS를 사용한다면 그에 맞게 이동해주세요. Install and Set Up kubectl on Linux Before you begin You must use a kubectl version that is wit..
2023.06.01 -
[Kubernetes] 1. 컨테이너 생성 및 구동
시작하면서 쿠버네티스는 어플리케이션을 생성 - 배포 - 관리하는 플랫폼입니다. 먼저 컨셉을 이해하기 전에 어떻게 이게 가능할 것인지 스스로에게 질문을 하면 좋은데, 만약 우리가 신나게 프로그래밍하고 실행했다고 하면, 컴파일 후에 만들어진 바이너리(binary) 덩어리가 시스템 메모리 상에 올려져서 우리가 원했던 동작을 수행할 것입니다. 그렇다면 해당 바이너리 덩어리를 캡쳐해서 보관하고 있다가 필요할 때 꺼내서 시스템 메모리에 올려버리면 그게 1개든 10개든 동작할 것입니다. 그리고 일단 올리고 보면 그게 잘 동작하는 지 또는 얼마나 시스템 자원을 먹는 지 등 차차 궁금해집니다. 마찬가지로 뭔가 잘못되면 복구할 수도 있어야겠죠. 사실 모든 질문에 대한 답을 만들어가면 쿠버네티스의 컨셉을 이해하게 됩니다. ..
2023.05.31