쿠버네티스 – 메뉴얼 작성
○ 쿠버네티스 설치 진행
시험 준비를 위한 CKS,CKAD 간단한 클러스터 구성 진행을 해보았다.
가상머신 스펙은 아래와 같습니다. 가상머신 구성은 vSphere에서 진행하였습니다.
▶ 필수 요구조건
- ubuntu 22.04 서버 설치
- 최소 메모리 2GB 이상
- CPU는 최소 2코어 이상
- DISK 최소 20G 이상
- 각각의 노드가 인터넷에 연결 필수
▶ 가상머신 스펙
| k8s-master | k8s-worker1 | k8s-worker2 | |
|---|---|---|---|
| CPU | 2 | 2 | 2 |
| Memory | 4 | 4 | 4 |
| DISK | 30 | 30 | 30 |
| OS | ubuntu22.04 | ubuntu22.04 | ubuntu22.04 |
진짜 기본적인 기능만 실험 해보기 위해 간단히 구성된 서버이다.
※ LAB 구성
- 마스터 노드: 192.168.1.108 –
k8s-master - 워커노드 #1: 192.168.1.41 –
k8s-worker1 - 워커노드 #2: 192.168.1.98 –
k8s-worker2
위와 같은 정보로 가상머신이 구성 된 이 후 인제 실질적인 설치 진행하겠습니다.
준비된 노드는 이미 ubuntu22.04가 설치 된 상태여야 합니다.
그리고 모든 명령어는 root 에서 사용하는 것을 가정으로 합니다.
○ 설치시작
1) 각각의 노드에 호스트 네임 설정 – 모든 노드에 설정
- 각각의 노드에 접속한 후 아래 명령어를 입력
$ hostnamectl set-hostname <node name>
# example
$ hostnamectl set-hostname k8s-master
2) 스왑메모리 설정 해제 및 커널 파라미터 추가 – 모든 노드에 설정
스왑메모리 설정을 사용해제 하지 않으면 중간에 설치가 되었어서도 컨테이너가 생성되지 않아 쿠버네티스가 정상작동 하지 않게 된다.
스왑메모리 설정 해제는 필수 이다.
# 스왑메모리 즉시 해제 명령어
$ swapoff -a
# 스왑메모리 fstab에서 제거하는 명령어
$ sudo sed -i '/ swap / s/^\\(.*\\)$/#\\1/g' /etc/fstab
아래는 커널 설정이다. 이 설정도 하지 않으면 애초에 kubeadm init이 실행 되지 않으니 필수적으로 입력해야한다.
- 컨테이너 설정
$ tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
$ modprobe overlay
$ modprobe br_netfilter
- 쿠버네티스 설정
$ tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
$ modprobe overlay
$ modprobe br_netfilter
이후 설정 적용을 위하여 아래 명령어를 입력
$ sysctl --system
3) 컨테이너 런타임 설치 – 모든 노드에 설정
컨테이너 런타일 설치를 위한 사전에 필요한 패키지를 먼저 설치 진행
$ apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
- 도커 레포지토리 추가
$ curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
$ add-apt-repository "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable"
$ apt update
$ apt install -y containerd.io
- containerd를 cgroup을 사용하여 시작되도록 구성
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sed -i 's/SystemdCgroup \\= false/SystemdCgroup \\= true/g' /etc/containerd/config.toml
- apt 명령어를 통한 containerd 설치
$ systemctl restart containerd
$ systemctl enable containerd
4) 쿠버네티스 설치를 위한 레포지토리 추가 – 모든 노드에 설정
쿠버네티스 설치를 위한 레포지토리 추가가 필요하다.
- curl 명령어를 통한 gpg키 다운로드
$ curl -s <https://packages.cloud.google.com/apt/doc/apt-key.gpg> | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/kubernetes-xenial.gpg
- 레포지토리 추가 진행
$ apt-add-repository "deb <http://apt.kubernetes.io/> kubernetes-xenial main"
5) kubeadm,kubectl,kubelet 설치 – 모든 노드에 설정
위에 레포지토리를 설치하면 위에 3개 패키지를 설치 진행 가능
$ apt update
$ apt install -y kubelet kubeadm kubectl
$ apt-mark hold kubelet kubeadm kubectl
6) kubeadm을 통한 쿠버네티스 클러스터 초기화 진행 – 마스터 노드에서 진행
클러스터 초기화를 진행하는 과정이다. 반드시 마스터노드에서만 진행해야 한다.
$ kubeadm init --apiserver-advertise-address <Master Node IP>
# example
$ kubeadm init --apiserver-advertise-address 192.168.1.108
초기화가 완료되면 아래 아래 통해 노드조회가 가능하다.
※ root 계정을 통한 진행을 할 예정이므로 export KUBECONFIG=/etc/kubernets/admin.conf 명렁어를 꼭 입력한 후 진행
아래에 명령어를 입력하면 쿠버네티스 클러스터 정보 및 노드에 대한 정보확인 가능
# 클러스터 정보
$ kubectl cluster-info
# 노드에 대한 정보
$ kubectl get nodes


Ready가 아마 ‘NotReady’로 되어 있을 것이다.
7) worker node 추가하기
# master node에서 토큰 생성후 join command 생성하기
kubeadm token create --print-join-command
# 각각의 worker node에서 join-command를 통해 생성 된 문장 실행
kubeadm join 192.168.1.108:6443 --token lgb6sq.6apxcwalwxx3pj5s --discovery-token-ca-cert-hash sha256:bbe70e75b854adf884096d4d99673d152b939746cbfb4873f60f520c11cd0d64
8) Calico Network Plugin 설치 – 마스터 노드에서 진행
네트워크 플러그인을 설치 해야 만 노드가 정상적으로 구성 된다. Calico Network plugin은 마스터 노드에서만 진행
$ kubectl apply -f <https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml>
kube-system namespace에서 확인 가능
$ kubectl -n kube-system get pod

아래와 같이 모든 노드 출력되면 설치 완료
