1. Virtual Box Ubuntu 설치
  2. Docker 설치
  3. Kubernetes 설치
  4. Kubernetes cluster 구성
    • Master 1대, Worker 1대

1. Virtual Box Ubuntu 설치

  • 구현환경 : Window 10
    • 현재 Mac m1 에서는 Virtual Box 가 동작하지 않음

1.1 Virtual Box 설치

공식 홈페이지:

https://www.virtualbox.org/wiki/Downloads

  • PC 환경에 맞게 다운로드

1.2 Ubuntu 이미지 다운로드

1.3 Virtual Box 설정

  • Virtual Box 실행
  • 머신 > 새로 만들기
    • 이름: master
    • 머신 폴더: 디폴트 설정
    • 종류: Linux
    • 버전: Ubuntu 64bit
  • 메모리, 하드디스크 설정
    • 메모리 크기: 4096MB
    • 하드 디스크: 지금 새 가상 하드 디스크 만들기
    • 하드 디스크 파일 종류: VDI(VirtualBox Disk Image)
    • 고정크기
    • 20.00 GB
  • VM 생성 후 Network 및 프로세서 설정
    • 머신 선택 > 마우스 우클릭 > 설정
      • 시스템 > 프로세서
        • 프로세서 개수 : Kubernetes 구동을 위해 최소 2개
      • 시스템 > 저장소
        • 컨트롤러: IDE 에서 다운로드 받은 Ubuntu ISO 파일 선택
      • 시스템 > 네트워크
        • 어댑터1
          • 어댑터에 브리지
        • 어댑터2
          • 호스트 전용 어댑터
            • 이 설정으로 외부에서 ssh 접속이 가능해짐

1.4 Ubuntu 설치

  • VM(master) 실행
  • 언어 설정 후 Ubuntu 설치 버튼 클릭
  • 업데이트 및 기타 소프트웨어
    • 일반 설치
    • Ubuntu 설치 중 업데이트 다운로드
    • 계속하기
  • 설치 형식
    • 디스크를 지우고 Ubuntu 설치
    • 지금 설치
    • Popup 창: 계속하기
  • 계정 정보
    • 이름: master

1.5 Ubuntu 설정

  • VM 재실행 후 로그인
  • 나오는 설정은 모두 건너뛰기, 다음
  • 터미널 실행 후 아래 명령 수행
$ sudo -i
$ apt update
$ apt install openssh-server
$ apt install net-tools
$ ufw disable
$ apt-get install vim
  • 편의기능 사용을 위해 장치 > 게스트 확장 CD 이미지 삽입
    • 비밀번호 입력 후 순차적으로 진행
    • 장치 > 클립보드 공유 > 양방향
    • 재시작 후부터 적용
  • 네트워크 설정을 위해 $ vi /etc/hosts 입력 후 아래 내용 추가
192.168.72.101 master
192.168.72.102 worker
  • Host Only Ethernet 설정
$ cd /etc/netplan
$ vi 01-network-manager-all.yaml
  • 아래와 같이 수정
network:
version: 2
render: NetworkManager
ethernets:
    enp0s8:
        dhcp6: no
        addresses:
        - 192.168.72.101/24
        gateway4: 192.168.72.1
        nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
  • $ netplan apply 실행
    • $ reboot

2. Docker 설치

  • 도커 설치
$ sudo -i
$ apt install docker.io
  • 설치확인을 위해 nginx 이미지 실행
$ docker run -d -p 80:80 --rm --name nginx nginx
  • Brower에서 localhost로 접속
  • 실행 확인 후 이미지 삭제
$ docker stop nginx
$ docker rmi nginx

3. Kubernetes 설치

  • swap off, 재부팅 후에도 유지되도록 설정
$ swapoff -a
$ sed -i '/ swap / s/^\\\\(.*\\\\)$/#\\\\1/g' /etc/fstab
  • Kubeadm, kubelet, kubectl 설치
$ 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 kubeadm=1.18.13-00 kubelet=1.18.13-00 kubectl=1.18.13-00
$ sudo apt-mark hold kubelet kubeadm kubectl
$ systemctl daemon-reload
$ systemctl restart kubelet
$ systemctl enable kubelet
  • kubeflow 와 버전 호환 문제로 1.18.13. 버전 설치

4. Kubernetes cluster 구성

4.1 Worker 노드 생성

  • Master VM 종료 후 VM 복제
    • (권장) 복사하기 전에 스냅샷 저장
  • 새 머신의 이름과 경로
    • 이름: worker
    • MAC 주소정책: 모든 네트워크 어댑터의 새 MAC 주소 생성
  • 복제방식: 완전한 복제
  • 스냅샷: 현재 머신 상태

4.2 worker 노드 설정

  • worker VM 실행 후 환경설정
$ sudo -i
$ hostnamectl set-hostname worker
$ cd /etc/netplan
$ vi 01-network-manager-all.yaml

##
addresses:
- 192.168.72.102/24 로 수정
##

$ reboot

4.3 Cluster 구성

  • master VM 접속 후 cluster 구성
$ kubeadm init
  • connection refused error가 발생할 경우 아래 설정 추가
$ cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
}
EOF
  • $ kubeadm reset 후 재부팅, 다시 $ kubeadm init
  • 정상적으로 init이 되었다면 root, 일반 계정 모두에서 아래 명령 수행
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • kubectl 명령을 수행할 수 있는 권한을 주는 설정
  • kubeadm join ... 내용 복사
  • worker VM 접속 후 복사한 명령 수행
$ kubeadm join ...
  • $ kubeadm init 때와 같은 에러가 발생한다명 "exec-opts": ["native.cgroupdriver=systemd"] 설정 추가
  • $ kubeadm reset 후 재부팅, $ kubeadm join ...
    • This node has joined the cluseter이 나왔는지 확인
  • $ kubectl get nodes 로 노드가 연결이 되었는지 확인
    • 아직 CNI를 설치하지 않았기 때문에 NonReady 상태

4.3 CNI 설치

  • 포드간의 통신을 위한 네트워크 인터페이스
  • master VM 접속 후 Weave Net CNI 설치
$ kubectl apply -f "<https://cloud.weave.works/k8s/net?k8s-version=$>(kubectl version | base64 | tr -d '\\\\n')"
  • 잠깐 기다렸다가 $ kubectl get nodes 로 모든 노드가 Ready 상태인지 확인
  • 정상작동 확인
$ kubectl create deploy nginx-deploy --image=nginx
$ kubectl get pods -o wide

# 확인 후 종료

$ kubectl delete deploy nginx-deploy

'6. 아무거나' 카테고리의 다른 글

논문 레퍼런스 추출하기  (0) 2022.10.25
랜덤 시드 조정  (0) 2022.10.20

+ Recent posts