◈ Oracle VM VirtualBox 이용 ◈
◇ 노드 3개 : 마스터 노드, 워커 노드1, 워커 노드2 ◇
[ Master Node ]
● 도커 및 kubeadm 설치
sudo apt update
sudo apt install docker.io -y
# 아래와 같은 에러 발생 시 리부팅 : reboot
# E: /var/lib/dpkg/lock-frontend 잠금 파일을 얻을 수 없습니다 - open (11: 자원이 일시적으로 사용 불가능함)
# E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
# 설치 확인
docker<TAB>
● 쉘 스크립트 작성 & 실행
》 쿠버네티스 설치
# 쉘 스크립트 작성 : gedit install.sh
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
# 실행
sudo sh install.sh
# 설치 확인
kube<TAB>
● 추가 애플리케이션 설치 & 방화벽 해제
# 설치
sudo apt install vim net-tools curl -y
# 방화벽 해제
ufw disable
● 시스템 종료
init 0 또는 halt
● 스냅샷 작성 후 master 이름으로 변경
● 네트워크 설정
》 도구 > 네트워크 > NAT Networks > 만들기
》 설정 > 네트워크
[ Worker1 / Worker2 ]
● master 노드 복제하기
》 이름 : worker1 / worker2
》 완전한 복제
》 현재 머신 상태
》 모든 네트워크 어댑터의 새 MAC 주소 생성
● 연결 확인
# ip 확인
ip addr
# 연결 확인
ping [ip]
[ Master / Worker1 / Worker2 ]
● 호스트 이름 변경
》 변경 후 reboot 해야 적용
# master
sudo echo master > /etc/hostname
# worker1
sudo echo worker1 > /etc/hostname
# worker2
sudo echo worker2 > /etc/hostname
● Swap 기능 비활성화
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
● Cgroup 변경
》 도커 기본 Cgroup 인 cgroupfs 에서 systemd 로 변경
# 현재 도커의 Cgroup 확인
sudo docker info | grep -i cgroup
# 설정 파일 변경 (root 권한)
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 재시작
sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker
● 마스터 노드 초기화
kubeadm init
● 마스터 노드에서 새 터미널 창으로 설정 (일반유저 권한)
# 유저를 위한 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 네트워크 애플리케이션 설치
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
● 생성된 노드 정보 확인 시 마스터 정보만 출력되는 상태 : NotReady
》 마스터 노드에서 확인
kubectl get node
● 워커 노드 2대 참여시키기
》 마스터 노드에서 kubeadm init 시 출력되었던 kubeadm join ~ 워커 노드에 붙여넣기 (root 권한으로)
》 sudo systemctl restart docker
● 최종 상태 확인하기
kubectl get nodes
[ 실습 ]
● Nginx 웹 브라우저 띄워보기
》 생성된 NodePort 의 포트 번호로 Firefox 에서 접속
》 ClusterIP:NodePort
# nginx pod 생성
kubectl create deploy nginx --image=nginx
# 포트 번호 할당
kubectl expose deploy nginx --type=NodePort --port=80 --target-port=80
# 확인하기
kubectl get svc
'CLOUD > Docker&Kubernetes' 카테고리의 다른 글
[Kubernetes/Ubuntu] 쿠버네티스 워크로드 - Pod (0) | 2023.05.16 |
---|---|
[Kubernetes] K8S 구조 - K8S 네트워크 (0) | 2023.05.03 |
[Kubernetes] K8S 구조 - K8S 컴포넌트 (0) | 2023.05.03 |
[Kubernetes] Namespace (0) | 2023.05.01 |
[Kubernetes] MSA 실습하기 - Admin & Main MSA (0) | 2023.04.28 |