클러스터는 네트워크에 연결된 물리적 or 가상 머신의 집합이며, 클러스터는 마스터와 노드로 구성된다.
일반적으로 프로덕션 환경의 경우 하나 이상의 마스터가 존재한다.
Master
마스터의 컴포넌트는 api-server, stcd, controller-manager, scheduler로 구성된다.
api-server: 클라이언트가 클러스터와 대화하고 워크로드를 생성할 수 있는 API-서버
etcd (et-c-d): 클러스터 데이터를 저장할 분산 키 값 저장소
controller-manager: 워크로드/노드 등을 지속적으로 모니터링하는 프로세스
scheduler: 워크로드 스케줄러
Node
노드의 컴포넌트는 kubelet, container runtime (docker), kube-proxy 로 구성된다.
kubelet: 컨테이너를 만들고 모니터링하는 에이전트
container runtime (docker): 컨테이너를 만들기 위해 컨테이너 런타임이 깔려있어야 한다. (docker)
kube-proxy: 클러스터 내 워크로드 간의 통신을 위해 노드의 네트워크 규칙을 유지
kubectl 설치
예시는 linux이다.
link: https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-linux/
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
설치 확인
kubectl version --client --output=yaml
kind 설치
이 글에서는 kind를 사용해서 학습을 진행한다.
link: https://kind.sigs.k8s.io/docs/user/quick-start/
# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-linux-amd64
# For ARM64
[ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.25.0/kind-linux-arm64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
설치 확인
kind version
클러스터 생성
1. kind cluster 구성 파일 01-cluster.yaml 을 만든다.
# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: dev-cluster
nodes:
- role: control-plane
- role: worker
- role: worker
2. 클러스터 생성
kind create cluster --config 01-cluster.yaml
3. 확인
docker ps -a
4. cat ~/.kube/config 를 쳐보면 구성파일을 확인해볼수 있다. server 를 보면 열려있는 포트를 확인할 수 있다.
5. kubectl version --client --output=yaml 명령어를 통해 서버의 version도 확인할 수 있다.
6. 노드 확인
kubectl get nodes
# 결과
NAME STATUS ROLES AGE VERSION
dev-cluster-control-plane Ready control-plane 118m v1.31.2
dev-cluster-worker Ready <none> 118m v1.31.2
dev-cluster-worker2 Ready <none> 118m v1.31.2
클러스터 내부 확인
Master 확인
1. 마스터에 shell로 접속한다
docker exec -it [마스터 컴포넌트ID] /bin/bash
2. 설정 파일들이 저장되어 있는 곳으로 이동한다.
cd /etc/kubernetes/manifests/
3. yaml들이 있는걸 확인 할 수 있다.
ls -al
4. 이 yaml file들은 실제로 실행되고 있는 프로세스이다.
ps -aux
Node 확인
1. node에 shell로 접속한다.
docker exec -it [node 컴포넌트ID] /bin/bash
2. 마찬가지로 프로세스를 확인해보면 node에서 사용하는 프로세스들이 돌고 있는것을 확인할수 있다.
학습이 끝나면 자원확보를 위해 클러스터를 삭제해주자
kind delete cluster --name [클러스터 이름]
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Deployment (0) | 2024.12.16 |
---|---|
[Kubernetes] ReplicaSet (0) | 2024.12.12 |
[Kubernetes] Pod 기초 - 2 (1) | 2024.12.06 |
[Kubernetes] Pod 기초 - 1 (0) | 2024.11.27 |
[K8S] 쿠버네티스 기본 개념 (1) - 파드(Pod) (0) | 2023.03.18 |