쿠버네티스 아키텍처
쿠버네티스는 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 |