공식 문서를 기준 kubeadm 설치보자 (필자의 경우.. 1 Master Node + 3 Work Node로 구성할 생각)
https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
설치전 자신의 환경이 충족하는지 먼저 확인하자.
(최소사양만 확인해도 대부분 무난하다.)
- 2 GB 이상의 메모리
- 2 개이상의 CPU
컨테이너 런타임(Container Runtime) 설치
containerd를 사용해 설치를 진할 예정이다. 공식문서의 설치과정을 따라가도록한다.
https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd
필수 요소들 설치 및 구성을 먼저하고
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 필요한 sysctl 파라미터를 설정하면, 재부팅 후에도 값이 유지된다.
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 재부팅하지 않고 sysctl 파라미터 적용하기
sudo sysctl --system
설치 과정을 따라가자.
https://github.com/containerd/containerd/blob/main/docs/getting-started.md
공식적인 설치 옵션언 3가지
1. Offial binaries 받아 수동설치
2. Docker 를 이용한 설치
3. 소스코드를 이용한 설치
2번 방법으로 가자..
The containerd.io packages in DEB and RPM formats are distributed by Docker (not by the containerd project). See the Docker documentation for how to set up apt-get or dnf to install containerd.io packages:
DEB 및 RPM 형식의 containerd.io 패키지는 컨테이너드 프로젝트가 아닌 Docker에서 배포한다. containerd.io 패키지를 설치하기 위해 apt-get 또는 dnf를 설정하는 방법은 Docker 설명서를 참조하세요
링크된 곳은 Docker 설치 Doucment
https://docs.docker.com/engine/install/debian/
설치 명령어를 차례로 입력
필요한 패키지를 먼저 설치하고
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
Docker GPG Key도 입력하고
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Docker apt repo도 추가하고..
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
한번 더 업데이트 후 설치
아마 404 에러가 뜨는 분들도 있을 것인데
https://download.docker.com/linux/ubuntu대신 https://download.docker.com/linux/debian 이 되도록 수정하자.
sudo sed -i 's/debian/ubuntu/g' /etc/apt/sources.list.d/docker.list
sudo apt update
설치를 계속 진행.
sudo apt-get update && \
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
기본설정을 적용
https://github.com/containerd/containerd/blob/main/docs/getting-started.md#customizing-containerd
containerd config default > /etc/containerd/config.toml
라고 나와있지만 root권한이 아니면 안되니까..
containerd config default | sudo tee /etc/containerd/config.toml
sytsemd cgroup 드라이버 환경 설정하자
sudo vi /etc/containerd/config.toml
아래 항목처럼 SystemdCgroup을 true로 바꾸면된다.
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
125번째 줄에 있네..
저장하고
containerd를 재시작 해주자
sudo systemctl restart containerd
kubeadmin, kubelet, kubectl 설치
가이드문서를 그대로 따라간다.
https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
apt 색인 업이트, 필요 패키지 설치
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
공개 키 다운로드
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
레포추가
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
설치 / 패키지 버전 고정
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
귀찮으니 스샷은 한방에..
마스터 노드와 워커노드는 동일하게 여기까지 작업해주면된다. :)
마스터 노드
calico로 CNI를 설정할 예정이라 192.168.0.0/16으로 pod-network-cidr을 사용했다.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
사용하기 쉽도록 conf는 현재 계정으로 복사되도록 가이드를 따라가자.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
일단은 한번 노드상태를 보고..
kubectl get node
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
Container Network Interface를 설치하지 않으면 어차피 동작하지 않는다. (worker node 설치 후 Calico를 설치할 예정)
워커 노드
워커노드 설정은, 마스터노드 설치시 워커노드가 조인하는 명령어를 출력해주는데 그대로 복사해서 사용하면된다.
sudo kubeadm join <마스터노드 IP>:6443 --token <토큰> --discovery-token-ca-cert-hash sha256:<hash값>
만약 토큰을 기억하지 못한다면
마스터노드에서 다음 명령을 실행해서 찾자..
# Token 값
sudo kubeadm token list
# Hash 값
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
워커노드는 반복해서 설치하면 된다.
워커노드 설치 후 일단 NotReady로 나올 것이다. CNI 설치가 아직안됐기 때문..
Calico CNI 설치
https://docs.tigera.io/calico/3.25/getting-started/kubernetes/self-managed-onprem/onpremises
공식메뉴얼대로 따라 치기만 하면된다.
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml -O
kubectl create -f custom-resources.yaml
설치하고..
kubectl get node
노드 상태를 확인하면..?
정상! (제대로 하고 있는지 확인을 위해서 클러스터를 초기화 해서.. age가..)
구성 끝!
'Kubernetes' 카테고리의 다른 글
[EKS] EKS IAM USER 추가 (0) | 2024.01.12 |
---|---|
Istio 설치 (0) | 2023.02.20 |
Metal LB 설치하기 (0) | 2023.02.20 |
댓글