- Virtual Box Ubuntu 설치
- Docker 설치
- Kubernetes 설치
- 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 이미지 다운로드
- 공식 홈페이지: https://ubuntu.com/download/desktop
- 버전: Ubuntu 20.04 LTS
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
- 시스템 > 프로세서
- 머신 선택 > 마우스 우클릭 > 설정
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 |