
쿠버네티스를 가지고 다양한 실습을 해보기 위해 VM하나를 만들고 해당 VM에 쿠버네티스를 설치해보기로 했다.
아래 작업들을 root계정으로 진행해야 하기 때문에 root 계정으로 로그인한다
su -
그 다음 vm에 설치되어있는 우분투 패키지를 업데이트를 해줘야 한다.
apt update -y && apt upgrade -y
마지막으로 SWAP 메모리를 해제해줘야 한다.
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
swapoff -a
이유는 쿠버네티스는 리소스 관리를 위해 리소스 요청과 제한을 설정이 된다. 이때 메모리 사용량이 swap을 포함하지 않고 물리적인 RAM만을 기준으로 계산이 되고 이때 Swap 메모리가 활성화된 경우, 시스템은 메모리 부족 시 디스크에 데이터를 스왑 아웃하게 되어 응답 속도가 느려질 수 있습니다. 이는 Kubernetes가 리소스를 조정할 때 예기치 않은 동작을 초래할 수 있다고 한다.
쿠버네티스는 컨테이너를 관리해주는 서비스이기 때문에 도커 컨테이너를 설치해줄 건데 우리는 container.d, cri-o 등이 있지만 .. container.d를 설치할 것이다.
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
위 패키지들은 https를 통해 도커 저장소에 접근해야해서 그에 필요한 패키지들이다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
그 다음으로 위 코드로 도커 공식 GPG key를 등록한다.
그 후 도커 Repository를 설정해야한다.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
마지막으로 도커 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
도커 설치가 완료되었으면 도커가 사용하는 드라이브를 쿠버네티스가 권장하는 systemd로 설정해야한다.
sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
설정을 완료했으면 도커 재시작 및 부팅시 시작 설정해준다.
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
도커는 실질적으로 container.d를 런타임으로 사용한는데 기본적으로 CRI가 비활성화 되어있어서 이를 k8s에서 사용할 수 있게 활성화 해줄 수 있게 처리가 필요하다.
vi /etc/containerd/config.toml

위 명령어를 입력해 해당 파일을 수정모드로 열고 빨간 블럭 부분을 주석 처리하면된다.
그 후 마지막으로 containerd를 재시작
systemctl restart containerd
아래 작업은 각 노드간의 통신을 위해 방화벽 설정을 진행하는 것이다.
modprobe overlay
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
쿠버네티스 명령어
kubeadm: 클러스터를 부트스트랩하는 명령이다.
kubelet: 클러스터의 모든 머신에서 실행되는 파드와 컨테이너 시작과 같은 작업을 수행하는 컴포넌트이다.
kubectl: 클러스터와 통신하기 위한 커맨드 라인 유틸리티이다.
우선 패키지 업디이트 및 필요한 패키지를 다운로드 한다.
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
그리고 구글 키를 다운받을 폴더를 생성해주고
sudo mkdir -p -m 755 /etc/apt/keyrings
그 다음으로 구글 공식 키를 다운받아 준다.
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
구글 respository를 추가해준다.
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
처음에는 위 respository를 추가할 때 위 명령어 말고 kubernetes-xenial, kubernetes-focal, kubernetes-jammy를 사용해서 다운받는 명령어를 입력했다가 apt get-update 명령어를 치자 404 not found에러가 발생하는 것을 볼 수 있었다.
확인해보니 쿠버네티스 공식 레포지토리 경로가 변경되어서 그렇다고 하니 잘못된 경로를 다운받은 사람이 있다면 아래 명령어로 삭제 후 다시 다운 받으면 될것이다!sudo rm /etc/apt/sources.list.d/kubernetes.list
마지막으로 kubelet, kubeadm, kubectl 설치
sudo apt-get update
apt-get install -y kubelet kubeadm kubectl
설치가 완료되면 아래의 명령어를 쳐서 설치가 잘되었는지 버전을 확인해보면 된다.
kubectl version --client
kubelet --version
kubeadm version
설치는 이렇게 마무리 되었고 다음에는 해당 쿠버네티스로 컨테이너를 어떻게 관리하고 배포할 수 있는지 시도해보는 그런 게시글을 올려보도록 하겠습니다.
https://aoc55.tistory.com/53
https://www.inflearn.com/community/questions/1219874/the-repository-x27-https-apt-kubernetes-io-kubernetes-xenial-release-x27-d?srsltid=AfmBOopnRC1_vV4gd4RI9Hxcn3TNxT2mjmn7H85Fc58YO-x1grpIIwex