Infra/Kubernetes
Kubernates Overview
최-코드
2025. 5. 5. 22:10
- Kubernates에서 한 서버는 마스터로, 그 외에 서버는 노드라고 한다. 한 마스터에 여러 노드들이 연결된다. 이렇게 연결이 되면 하나의 Kubernates 클러스터라는 개념으로 묶이게 된다.
- 마스터는 Kubernates의 전반적인 기능들을 컨트롤하는 역할이고 노드는 자원을 제공하는 역할이다.
- 따라서 클러스터 전체 자원을 늘리고 싶다면 노드들을 계속 추가하면 된다.
- 마스터에 의해 pod가 생성되고, pod가 생성되는 위치는 노드이다.
- 클러스터 안에는 네임스페이스라는 객체가 Kubernates 오브젝트(service, controller, ..)들을 독립된 공간으로 분리되게 만들어준다.
- 네임스페이스에는 Kubernates 최소 배포 단위인 Pod들이 있고, 이 Pod들에게 외부로부터 연결이 가능하도록 IP를 할당해주는 서비스가 있어서 외부에서 연결할 수 있다.
- 서로 다른 네임스페이스에 있는 파드는 서비스를 연결할 수 없다.
- Pod 안에는 여러 컨테이너가 있다. 컨테이너 하나당 하나의 앱이 동작하기 때문에, 결국 Pod에는 여러 앱들이 돌아갈 수가 있다.
- Pod에 문제가 생겨서 재생성 되면 해당 Pod에 있던 데이터들이 사라진다. 따라서 볼륨을 만들어서 파드에 연결하면 데이터는 이 볼륨에 별도로 저장할 수 있어 파드가 재생성되어도 데이터가 사라지는 문제를 해결할 수 있다.
- 네임스페이스에 리소스 쿼터와 리미트 레인지를 달아서 한 네임스페이스에서 사용할 자원의 양을 한정시킬 수 있다.
- 파드의 개수, CPU, 메모리 제한 등
- ConfigMap, Secret을 통해 파드 생성 시에 컨테이너 안에 환경 변수 값을 넣어주거나 파일을 바운딩해줄 수 있다.
- 컨트롤러는 파드들을 관리해주는 일을 한다.
- Replication Controller, ReplicaSet : 가장 기본적인 컨트롤러로, 파드가 죽으면 감지해서 다시 살려준다든지 파드의 개수를 늘렸다가 줄이는 역할을 한다.
- Deplyment : 배포 후에 파드들을 새 버전으로 업그레이드 해주는 역할로, 업그레이드 하는 중에 문제가 생기면 롤백을 다시 쉽게 하도록 도와준다.
- DaemonSet : 한 노드마다 파드가 하나씩만 유지되도록 해준다.
- Job : 파드가 어떤 특정 작업만 하고 종료되도록 해준다.
- CronJob : Job을 주기적으로 실행해야할 때 사용한다.
- 네임스페이스에는 Kubernates 최소 배포 단위인 Pod들이 있고, 이 Pod들에게 외부로부터 연결이 가능하도록 IP를 할당해주는 서비스가 있어서 외부에서 연결할 수 있다.