공식 문서를 기준 kubeadm 설치보자 (필자의 경우.. 1 Master Node + 3 Work Node로 구성할 생각)
https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
kubeadm 설치하기
이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm으로 클러스터 생성하기 페이지를 참고한다.
kubernetes.io
설치전 자신의 환경이 충족하는지 먼저 확인하자.
(최소사양만 확인해도 대부분 무난하다.)
- 2 GB 이상의 메모리
- 2 개이상의 CPU
컨테이너 런타임(Container Runtime) 설치
containerd를 사용해 설치를 진할 예정이다. 공식문서의 설치과정을 따라가도록한다.
https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd
Container Runtimes
Note: Dockershim has been removed from the Kubernetes project as of release 1.24. Read the Dockershim Removal FAQ for further details. You need to install a container runtime into each node in the cluster so that Pods can run there. This page outlines what
kubernetes.io
필수 요소들 설치 및 구성을 먼저하고
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
GitHub - containerd/containerd: An open and reliable container runtime
An open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.
github.com
공식적인 설치 옵션언 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/
Install Docker Engine on Debian
docs.docker.com
설치 명령어를 차례로 입력
필요한 패키지를 먼저 설치하고
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
GitHub - containerd/containerd: An open and reliable container runtime
An open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.
github.com
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/
kubeadm 설치하기
이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm으로 클러스터 생성하기 페이지를 참고한다.
kubernetes.io
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/
Creating a cluster with kubeadm
Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pass the Kubernetes Conformance tests. kubeadm also supports other cluster lifecycle functions, su
kubernetes.io
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
Install Calico networking and network policy for on-premises deployments | Calico Documentation
Install Calico networking and network policy for on-premises deployments.
docs.tigera.io
공식메뉴얼대로 따라 치기만 하면된다.
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' 카테고리의 다른 글
Istio 설치 (0) | 2023.02.20 |
---|---|
Metal LB 설치하기 (0) | 2023.02.20 |
댓글0