본문 바로가기

⭐ Kubernetes & EKS/Kubernetes (쿠버네티스)

master 노드와 work 노드 생성, 클러스터 구성 및 쿠버네티스 테스트

728x90
반응형

# master 노드와 work 노드 생성

# 버추어 박스에서 복제 실행

- 새 MAC 주소로 생성

- 호스트 이름이 고유해야함

- 스왑 오프 해줘야 함

# 복제 수행

1. 가상머신 우측클릭 복제 선택

2. 이름을 work1이라고 입력 > 모든 네트워크 어댑터 MAC 주소 포함 > 복제

3. 이전에 kubeamd을 생성한 가상 머신의 이름을 master로 지정

4. 2번째 가상머신도 위와같이 생성하고 이름을 work2 라고 설정

# 마스터 노드의 스냅샷 생성

스냅샷 찍기 > kubeadm 설치 입력 후 저장 > 복원하면 최초 상태로 돌아감

# NAT 네트워크 구성으로 3개의 머신이 서로 통신하게끔 하나의 네트워크로 구성하기

환경설정 > 네트워크 > Natnetwork 추가 > 각각 가상머신의 설정에서 네트워크 구성 > 방금 생성한 Natnetwork로 설정

 # 호스트 이름 변경하기

3대를 순차적 부팅 

sudo gedit /etc/hostname

master로 변경

reboot

- 나머지도 동일하게 수정함

# 클러스터 구성 및 쿠버네티스 테스트

# 스왑 비활성화

sudo echo test

sudo swapoff -a

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 도커 cgourp 변경하기

# cgourp 이란?

# 현재 도커의 group를 확인하는 명령어

sudo docker info | grep -i cgroup

# 도커 데몬의 설정파일 구성

cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

service docker restart

# 변경된 cgroup 확인하기

sudo docker info | grep -i cgroup

> systemd 라고 구성된것을 확인가능

# 각 노드들의 ip 확인하기

ifconfig

ip addr

# ip가 모든 같은경우 다르게 변경 해줘야 한다.

버추어 박스의 노드들을 모두 종료 후 재 설정을 진행한다.

설정 > 네트워크 > 수동으로 설정하기 아이콘 클릭 후 mac 주소를 수동으로 설정한다.

mac 주소 설정아 완료되면 바로 부팅한다.

- 노드간에 서로 ping이 안되면 클러스터 구성이 안되기 때문에 구성 자체를 할 수가 없다.

# 마스터 노드와 통신이 되는지 확인한다.

ping [마스터노드 ip]

ping 10.0.2.4

# 마스터 노드를 초기화 후 연결 (마스터 노드에서 실행)

sudo kubeadm init

- 구성중 문제가 생길경우 (초기화 수행: join 및 init 등 문제 생길 경우)

sudo kubeadm reset

디렉토리나 파일을 삭제하는 명령어 : sudo rm -rf <겹치는 경로>

# 명령어 실행 (정상적으로 init되면 안내문구가 나오며 아래의 명령어를 실행하라고 나옴)

  mkdir -p $HOME/.kube

  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

  sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 쿠버네티스에 구성된 노드들의 현황보기

- 마그터 노드만 생성 했으므로 1개의 노드 즉 자신의 마스터 노드만 확인이 가능

kubectl get nodes

# init 후 master 노드의 참여 안내 명령어를 확인 후 안내된 kubeadm join 명령어를 워커노드에서 실행하여 워커를 참여시킴

sudo kubeadm join 10.0.2.4:6443 --token wgztr2.cqt1vyji0j5tn7hj \

--discovery-token-ca-cert-hash sha256:bff667370c59e22fa62175a78d54bc4c8aac93b39bf6cb6ba8d37f1300f70b16

# work 노드들이 참여했는지 확인하는 방법

마스터노드에서 kubectl get nodes 명령어 실행시키면 이전에 1개만 보였던 노드들이 3개가 보이는것을 확인 할 수 있다.

kubectl get nodes

# 네트워크 애플리케이션 설치

init 후 안내문구를 보면  아래의 링크 주소가 있음

https://kubernetes.io/docs/concepts/cluster-administration/addons/

우리는 위브넷(Weave Net)을 설치하도록 하겠다.

- 위의 링크사이트로 이동하면 설치 명령어 등 확인 가능하다.

- kubectl로 시작하는 명령은 마스터 노드에서 실행한다. 

- 아래의 명령어로 네트워크 드라이버? 를 설치해야 master node가 Ready로 변경됨.

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

# 네트워크 연결확인

kubectl get nodes

마스터노드와 워커노드 모두가 STATUS가 Ready로 변경되면 모두 통신이 가능하게 설정되어 있다고 봐야함.

kubectl get nodes -w : 워치 모드로 변경사항이 있을때마다 확인이 가능함.

# 최종확인

pod : 컨테이너의 그룹이라도 생각하면 편하다.

# 마스터 노드에서 실행

kubectl create deploy nginx --image=nginx

kubectl get pod

kubectl get pod -w

kubectl port-forward nginx-6799fc88d8-vvj5h 8080:80

해당 cmd 화면을 켜놓은 상태로 127.0.0.1:8080 으로 접근하면 nginx 기본화면이 출력되는것을 볼수 있다.

컨트롤 + c 로 서버를 종료 후 접속하면 접속이 안되는것을 확인 할 수 있다.

 

728x90
반응형