일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- heapq
- 도커
- String
- Python
- programmers
- DP
- 분산처리
- 그래프
- 오블완
- Apache Spark
- 아파치 카프카
- 이진탐색
- 코딩테스트
- 하둡
- leetcode
- Apache Hadoop
- BFS
- 아파치 스파크
- 분산
- Kubernetes
- 티스토리챌린지
- 리트코드
- 아파치 하둡
- docker
- 알고리즘
- 쿠버네티스
- apache kafka
- 파이썬
- 우선순위큐
- 프로그래머스
- Today
- Total
래원
[Kubernetes] Kubernetes 설치 본문
이번 글에서는 Kubernetes를 설치한 과정에 대해 정리할 예정이다.
Kubernetes 설치 방법은 Minikube, kubeadm, kubernetes 공식 클라우드 배포 방법 등 다양한데 나는 kubeadm을 사용했다.
APT 패키지 업데이트 및 필수 패키지 설치
먼저 apt 패키지 업데이트 및 필수 패키지를 설치한다.
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
Kubernetes APT 저장소 키 추가
다음으로 kubernetes apt 저장소 키를 추가한다.
# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # helps tools such as command-not-found to work correctly
Kubernetes 패키지 설치
Kubernetes 클러스터를 구성하기 위해 필요한 kubectl, kubelet, kubeadm을 모두 설치한다.
sudo apt-get update
sudo apt-get install -y kubectl kubelet kubeadm
다음으로 자동으로 패키지가 업데이트도지 않도록 버전을 고정해준다.
sudo apt-mark hold kubelet kubeadm kubectl
다음 명령어를 통해 잘 설치 되었는지 확인할 수 있다.
sudo kubectl vesrion
Kubernetes 클러스터 초기화
Swap 비활성화
Kubernetes는 노드에서 메모리를 효율적으로 관리하기 위해 swap이 비활성화된 상태를 요구한다.
노드의 메모리 부족 시 swap 영역을 사용하는 경우, Kubernetes의 스케줄러와 kubelet이 리소스를 관리하는 데 혼란이 생기고, 안정적인 클러스터 운영에 문제가 발생할 수 있기 때문이다. 또한, Kubelet은 기본적으로 swap이 활성화된 상태에서는 동작을 제한하므로, 클러스터 초기화를 위해 swap을 비활성화해야 한다.
# 모든 서버
sudo swapoff -a
Kubeadm으로 클러스터 초기화
# Master Node에서만
sudo kubeamd init
init이 완료되면 위와 같은 결과를 얻을 수 있다. 위 그림에서 시키는대로 진행하면 된다.
# Master Node에서만
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# root 유저라면
export KUBECONFIG=/etc/kubernetes/admin.conf
다음으로 위 그림에서 kubeadm join ~~~~~ 라인이 있을텐데 이를 복사하여 worker node에 접속하여 붙여넣기 통해 Master Node와 연결을 시켜주면된다.
# Master Node를 제외한 다른 Node들에서
kubeadm join ~~~~
다음과 같은 명령어로 서로 잘 연결되었는지 확인할 수 있다.
# Master Node에서
kubectl get nodes
CNI 설정
Kubernetes 클러스터에서 네트워크 구성을 위해 CNI 플러그인을 설정해야한다.
대표적으로 Calico와 Flannel이 있는데, 나는 calico를 사용했다.
다음과 같이 적용할 수 있다.
# 마스터 노드에서
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
적용을 확인하기 위해서 다음 명령어를 사용했다.
calico 관련 pod들이 Running 상태로 표시되면 정상적으로 적용한 것이라 볼 수 있다.
kubectl get pods -n kube-system
테스트용 pod 생성
클러스터가 잘 구성되었는지 확인하기 위해 테스트용 pod를 생성하였다.
kubectl run test-pod --image=nginx --restart=Never
kubectl get pod
정상적으로 동작함을 확인하고 pod를 지워주었다.
kubectl delete pod <pod 이름>
마무리
이번 글에서는 kubernetes 설치 과정에 대해 정리해보았다.
kubernetes 클러스터도 구성되었으니 다음 글에서부터는 kubernetes 구성 요소의 대한 내용과 이를 직접 사용해본 내용을 포스팅할 예정이다.
'Docker 및 Kubernetes > Kubernetes' 카테고리의 다른 글
[Kubernetes] Kubernetes 기본 오브젝트 - Service (0) | 2025.02.06 |
---|---|
[Kubernetes] Kubernetes 기본 오브젝트 - Pod (0) | 2025.02.04 |
[Kubernetes] Kubernetes Dashboard 설정 (0) | 2025.01.23 |
[Kubernetes] Kubernetes란? (0) | 2025.01.22 |