Kubernetes

Kubernetes for Developers - 3장 정리

Changby 2025. 7. 13. 17:15

쿠버네티스 아키텍처

쿠버네티스는 VM(또는 베어메탈 머신) 및 로드 밸런서와 같은 거수준으 ㅣ컴퓨팅 기본 요소 위의 워크로드 레벨에 위치하는 추상화 계층

쿠버네티스에서는 이 VM을 노드(Node), 클러스터(Cluster) 형태로 배포됨.

파드(Pod)라는 스케줄링 단위로 그룹화.

네트워킹은 서비스(Service)를 통해 구성.

디플로이먼트(Deployment)와 같은 고차원적인 빌딩 블록이 존재하여 파드를 보다 쉽게 관리.

쿠버네티스 클러스터는 컨테이너가 실행되는 컴퓨트 인스턴스인 노드의 집합.

각 노드는 Kubelet이라고 하는 쿠버네티스 프로세스 실행.

Kubelet은 Control Plane과 통신하고 컨테이너 런타임을 통해 노드에서 실행되는 컨테이너의 라이프사이클 관리를 담당.

OS, Kubelet, Container Runtime외에 자체 워크로드 및 로깅 및 모니터링을 담당하는 일부 시스템 구성요소를 포함한 나머지 프로세스는 컨테이너 형태로 실행.

 

Control Plane의 역할

- 쿠버네티스 명령행 인터페이스(CLI, Command Line Interface)와 같은 도구를 사용하여 클러스터와 상호작용할 수 있도록 API 실행

- 클러스터의 상태를 저장

- 클러스터 내의 모든 노드와 조정을 통해 컨테이너 스케줄링(시작, 중지, 재시작)

 

Kind를 이용한 Kubernetes 사용하기

1. WSL2 설치하기 - Internet 검색 후 설치

2. Kind, Kubectl, Helm 등등 설치하기

# 기본 사용자 디렉터리 이동
cd $PWD
pwd

#
sudo systemctl stop apparmor && sudo systemctl disable apparmor


sudo apt update && sudo apt-get install bridge-utils net-tools jq tree unzip kubectx kubecolor -y

# Install Kind
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.29.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kind --version

# Install kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv ./kubectl /usr/bin
sudo kubectl version --client=true

# Install Helm
curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
helm version

# Source the completion
source <(kubectl completion bash)
echo 'source <(kubectl completion bash)' >> ~/.bashrc

# Alias kubectl to k
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc

# Install Kubeps & Setting PS1
git clone https://github.com/jonmosco/kube-ps1.git
echo -e "source $PWD/kube-ps1/kube-ps1.sh" >> ~/.bashrc
cat <<"EOT" >> ~/.bashrc
KUBE_PS1_SYMBOL_ENABLE=true
function get_cluster_short() {
  echo "$1" | cut -d . -f1
}
KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
KUBE_PS1_SUFFIX=') '
PS1='$(kube_ps1)'$PS1
EOT

# .bashrc 적용을 위해서 logout 후 터미널 다시 접속 하자
exit

3. Kind 실행하기

# 클러스터 배포 전 확인
docker ps

# Create a cluster with kind
kind create cluster

# 클러스터 배포 확인
kind get clusters
kind get nodes
kubectl cluster-info

# 노드 정보 확인
kubectl get node -o wide

# 파드 정보 확인
kubectl get pod -A
kubectl get componentstatuses

# 컨트롤플레인 (컨테이너) 노드 1대가 실행
docker ps
docker images

# kube config 파일 확인
cat ~/.kube/config
혹은
cat $KUBECONFIG # KUBECONFIG 변수 지정 사용 시

# nginx 파드 배포 및 확인 : 컨트롤플레인 노드인데 파드가 배포 될까요?
kubectl run nginx --image=nginx:alpine
kubectl get pod -owide

# 노드에 Taints 정보 확인
kubectl describe node | grep Taints
Taints:             <none>

# 클러스터 삭제
kind delete cluster

# kube config 삭제 확인
cat ~/.kube/config
혹은
cat $KUBECONFIG # KUBECONFIG 변수 지정 사용 시

 

'Kubernetes' 카테고리의 다른 글

Kubernetes for Developers - 2장 정리  (3) 2025.07.13
Kubernetes for Developers - 1장 정리  (0) 2025.07.13