Home Hyper-v 환경에서 k8s 클러스터 구성을 위한 provisioning
Post
Cancel

Hyper-v 환경에서 k8s 클러스터 구성을 위한 provisioning

0. 개요


  • 1개의 마스터와 2개의 워커로 구성된 쿠버네티스 클러스터를 구축하는 것이 목표
  • 환경
    • Host OS: Window11
    • Hyper-v OS: Rocky-9.1-x86_64-minimal.iso

1. Hyper-v 설정


1) Hyper-V 켜기

  1. 실행 창 켜기: Windows Key + R
  2. 명령어 입력: OptionalFeatures
  3. Hyper-V 켜기

    Untitled

  4. 재부팅

2) Hyper-V Network Adapter 생성

Public Network

로컬 PC를 브릿지로 사용하여 외부랑 통신하기 위한 Public Network 스위치 구축

  1. Hyper-v 관리자 열어서 네트워크 생성
  2. pc 이름 우클릭 → 가상스위치 관리자
1
![Untitled](/assets/img/2023-03-29-post230329/Untitled%201.png)
  1. 새 가상 네트워크 스위치 → 외부 → 가상 스위치 만들기

    Untitled

  2. 가상 스위치 설정: 연결 형식 → 외부 네트워크 → 연결되어 있는 네트워크 선택 → 확인

    Untitled

  3. [경고] 보류 중인 변경 내용은 네트워크 연결을 방해할 수 있습니다 →

    • 주의: 네트워크가 한 번 끊기고 다시 연결됨. 새로 생성된 네트워크 디바이스에 DNS 설정을 다시 해줘야 함.

    Untitled

2. VM 생성


1) 배포 이미지 다운로드

  • Rocky-9.1-x86_64-minimal.iso

2) Hyper-v 관리자에서 가상 컴퓨터 생성

Untitled

  • 가상 컴퓨터 이름 설정

    Untitled

  • 1세대는 legacy 모델 이므로 2세대 선택

    Untitled

  • 메모리 할당 (주의! : 동적메모리 체크 해제)

    Untitled

  • Default Switch를 선택
    • Default Switch는 폐쇄망 구축 시 사용할 예정. gateway 역할을 하는 하나의 노드만 외부망으로 연결하고 나머지 노드는 Default Switch의 내부망으로 통신함
    • 본 글에서는 스터디를 위하여 편의상 모든 노드에 외부망을 연결함

      Untitled

  • 가상 하드 디스크 만들기

    Untitled

  • OS ISO 파일을 마운트 하고 다음을 클릭하여 진행

    Untitled

  • 마침

    Untitled

  • k8s-worker-node도 위와 동일한 방법으로 생성

    Untitled

3) 생성된 VM 설정 변경

  • 프로세서 개수 변경

    Untitled

  • 외부 통신을 위해 public network 추가

    Untitled

    Untitled

  • 검사점 유형 변경

    Untitled

  • 보안 부팅 사용 안함

    Untitled

  • 실행

    Untitled

3. 서버 설정


각 노드에서 설정

1) 계정 생성 및 sudoer 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# useradd woobin
[root@localhost ~]# printf "%s:%s" "woobin" "woobin" | chpasswd
Changing password for user woobin.
passwd: all authentication tokens updated successfully.

[root@localhost ~]# cat /etc/passwd | grep woobin
woobin:x:500:500::/home/woobin:/bin/bash

[root@localhost ~]# touch /etc/sudoers.d/woobin
[root@localhost ~]# echo 'woobin ALL=NOPASSWD:ALL' >> /etc/sudoers.d/woobin
[root@localhost ~]# cat /etc/sudoers.d/woobin
woobin ALL=NOPASSWD:ALL

exit
localhost login: woobin
  • 사용자명 ALL=NOPASSWD: ALL → 여기서 NOPASSWD:를 빼면 sudo 실행시 자신의 패스워드를 입력해야만 함
  • 사용자명 ALL=NOPASSWD: 명령어1, 명령어2 → 지정한 명령어들만 sudo 사용가능
  • 계정 삭제 시, userdel -r ${user}
    • -r 없이 userdel userid만 하게 되면 같은 아이디의 유저를 생성하게 될 경우 Creating mailbox file: File exists 에러를 만날 수 있다.

2) 필수 패키지 설치

1
2
3
4
5
6
7
8
9
sudo dnf -y update
sudo dnf install -y epel-release
sudo dnf install -y openssh-server NetworkManager vim jq net-tools

# sshd 상태 확인
sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
   Active: active (running)

3) Hostname 변경

1
sudo hostnamectl set-hostname <VM 이름>

4) 네트워크 설정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 현재 network 연결 확인
nmcli

CONNECTION_NAME='eth1'
PUBLIC_IP='192.168.25.220' # 192.168.25.220-192.168.25.222

# network 삭제
nmcli con delete ${CONNECTION_NAME}

# network 추가
nmcli con add con-name ${CONNECTION_NAME} autoconnect yes \
ipv4.address ${NETWORK_IP}/20 \
ipv4.gateway 192.168.20.1 \
ipv4.dns 168.126.63.1,168.126.63.2 \
ipv4.method manual \
type ethernet \
ifname eth1

# 변경 사항 반영
nmcli con up eth1

exit

이제부터 터미널 클라이언트(윈도우 터미널, putty, 모바엑스텀 등)로 ssh 접속하여 작업하면 편리하다.

This post is licensed under CC BY 4.0 by the author.