쿠버네티스 노드 복제 및 클러스터 IP 설정

본 포스트는 「실무까지 한 번에 끝내는 DevOps를 위한 Docker & Kubernetes feat. AWS EKS 초격차 패키지 Online」 강의를 학습하며 정리한 내용을 다룹니다.
Recap
지난 시간에는 쿠버네티스 실습을 위해 VirtualBox 환경을 설정하고, 필요한 도구와 패키지를 설치했습니다.
쿠버네티스는 다수의 서버를 일괄적으로 관리하기 위해 사용되는 인프라 도구입니다. 이를 실습하기 위해 여러 개의 VM을 생성하고, 쿠버네티스 도구를 활용해 각 서버를 관리하는 실습을 진행할 예정입니다. 따라서 앞으로 생성할 VM 서버에도 쿠버네티스에 필요한 환경 설정과 도구, 패키지를 동일하게 설치해야 합니다.
이번 시간에는 여러 노드를 처음부터 다시 설정하지 않기 위해, 이전에 생성한 k8s-master 서버를 VirtualBox의 복제 기능으로 복제합니다. 이후 각 서버와 Master 서버가 서로 통신할 수 있도록 IP를 설정해보겠습니다.
(1) Worker 노드 IP 작성
지난 시간에 만든 k8s-master 서버에 Remote Desktop Manager를 통해 접속합니다. 아직 서버가 없다면 위 포스팅을 따라 VirtualBox에 master 노드를 준비합니다.
sudo vi /etc/hosts
# 아래 내용을 vim을 통해 추가합니다.
127.0.0.1 localhost
127.0.1.1 k8s-master
192.168.56.100 k8s-master
192.168.56.101 k8s-node1
192.168.56.102 k8s-node2
192.168.56.103 k8s-node3
...이번 실습에 사용하는 노드는 총 4가지입니다. /etc/hosts에 작성된 저 주소들은 클러스터 노드의 IP 주소와 호스트 이름을 직접 매핑한 목록입니다. /etc/hosts에 추가해줍니다.
- k8s-master : 쿠버네티스 클러스터 관리자(마스터) 노드
- k8s-node1,2,3 : 클러스터 worker 노드
Linux는 DNS 서버가 없다면 k8s-node1이라는 이름이 어떤 IP를 의미하는지 알 수 없습니다. 그래서 /etc/hosts 파일에 서버 이름과 IP 주소를 직접 등록해두면, Kubernetes 클러스터를 구성할 때 여러 서버가 서로의 이름을 통해 쉽게 통신할 수 있습니다.
이전 실습에서 생성한 VM은 어댑터 2를 통해 호스트와 통신할 수 있도록 192.168.56.100 IP를 k8s-master 노드에 설정했습니다.
앞으로 생성할 3개의 Worker 노드는 각각 192.168.56.101, 192.168.56.102, 192.168.56.103으로 설정할 예정입니다. 이렇게 IP 주소에 규칙성을 두면 여러 노드를 구성하더라도 실습 과정에서 각 서버를 구분하기 쉽습니다.
$ sudo shutdown -h now설정이 끝났으면, worker node 복제를 위해 shutdown을 합니다.
(2) Worker node1 복제

복제하고자 하는 k8s-master 노드에 마우스 오른쪽을 클릭한 후, [ 복제 ]를 클릭합니다.

위와 같이 이름, 경로, MAC 주소 정책 등을 동일하게 설정합니다.
- 이름 : k8s-node1
- 경로 : "저는 k8s-master 폴더가 있는 디렉토리에 k8s-node1 폴더를 만들어서 경로를 설정했습니다."
- Clone Type : 완전한 복제
- MAC 주소 정책 : 모든 네트워크 어탭터의 새 MAC 주소 생성
MAC 주소 란?
MAC 주소는 네트워크 카드의 고유 식별자입니다. IP 주소가 네트워크에서 사용하는 논리적인 주소라면, MAC 주소는 같은 네트워크 안에서 장비를 구분하는 하드웨어 주소에 가깝습니다.
예를 들면 이런 형태입니다. 08:00:27:aa:bb:cc
VM을 복제하면 원본 VM의 설정이 그대로 복사됩니다. 원본이 k8s-master이고, 복제해서 k8s-node1을 만든다고 하면 네트워크 어댑터 설정도 같이 복사됩니다. 이때 MAC 주소까지 동일하면 네트워크 입장에서는 문제가 생깁니다.
k8s-master
- IP: 192.168.56.100
- MAC: 08:00:27:aa:bb:cc
k8s-node1
- IP: 192.168.56.101
- MAC: 08:00:27:aa:bb:cc ← 같으면 문제같은 네트워크 안에 MAC 주소가 같은 장비가 2개 있으면, 스위치나 ARP 캐시가 헷갈릴 수 있습니다. 결과적으로 이런 문제가 생길 수 있습니다.
- SSH 접속이 불안정함
- ping이 됐다 안 됐다 함
- 특정 노드로 접속했는데 다른 노드로 연결되는 것처럼 보임
- DHCP IP 할당이 꼬임
- Kubernetes 노드 간 통신이 불안정함
그래서 VM을 복제할 때는 보통 새 MAC 주소 생성을 선택합니다.


작성이 완료되면, k8s-node1가 VirtualBox 목록에 생깁니다. 실행해주고, 로그인을 진행합니다.
복제된 VM이기 때문에, 비밀번호는 k8s-master와 동일한 'k8spass#' 입니다.


설정에 들어가서 Ethernet (enp0s9)를 설정해줍니다. k8s-master 노드를 복제했기 때문에, 192.168.56.100으로 설정된 IP를 192.168.56.101로 수정합니다.
설정이 완료되면 Ethernet (enp0s9) 토글 버튼을 두번 클릭하여 껏다 켜줍니다.
$ sudo hostnamectl set-hostname k8s-node1
마찬가지로, hostname 또한 k8s-master를 복제했기에 k8s-node1로 수정해줍니다. 위 명령어 입력 후, 터미널을 끄고 다시 키면 위 이미지 처럼 호스트명이 k8s-node1로 바뀐걸 확인할 수 있습니다.
$ sudo vi /etc/hosts
이번 포스트 첫번째 단계에서 k8s-master 노드에 IP를 기록했었습니다. 그것 또한 그대로 복제됬으니, k8s-node1로 수정해줍니다.

명령어 "ifconfig"를 사용해서 위에서 설정한 enp0s9 IP가 잘 적용됬는지 확인합니다.
$ sudo reboot설정된 내용이 정상적으로 반영될 수 있도록 서버를 리부팅해줍니다.
$ date
Mon May 4 09:27:26 PM KST 2026리부팅이 되면 서버에 다시 들어가서, "date" 명령어를 통해 ntpsec 서버로 통일 시킨 서버의 시간을 확인합니다. 한국시간으로 잘 자오는걸 보니, 설정이 잘된것 같습니다.
$ ssh student@k8s-masterssh 명령어를 통해 k8s-master 서버에 접속을 시도합니다.

최초의 접속 시도를 하면 설정된 비밀번호를 기반으로 ssh key 파일을 생성합니다. 이후에, cluster의 모든 노드 간의 ssh 통신을 하기 위함입니다.
"student@k8s-master" DNS는 /etc/hosts 에 미리 작성해뒀기 때문에, DNS 서버를 입력하도 192.168.56.100 으로 접속을 시도합니다.
student@k8s-master:~$ exit
logout
Connection to k8s-master closed.
student@k8s-node1:~$접속이 확인됬으면 "exit"를 입력하여 다시 k8s-node1로 돌아옵니다.
$ cat ~/.ssh/known_hosts
|1|hbBlilU1osPCzb0iTjFLa9N3Gyk=|kyoTzeWgl2cqCHW/yfDkMLg9cV0= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG6sjozYhImUy6mkCwrqJRuFEL6qg5Kjtu8neowkK+P9
|1|8SpK8uJPEX2KaUFB/n/DxKrj14g=|wzzHWj1JLpGnaXnm8nIDV8f1qwU= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDG12Nwlq+2RIoZ1xiLBP/gSTmdZ0vP1vqooBFAC5Gm5Wt7cNNskzEXocF0LuttC3u9SePDrVUWcnf85bHzkrY65vE2Glg6lRWHVdTaU3LjJZDh3sZD7uAXXkV0FcTWNgGlCumHjkUE/yE6gXlEk1abckZyR3VjJVFL3/HhpQPDlgsnS9KIy16OI0FF5MNht7uZHJHSKlEsgbLb2KFiGFNrcDII8Tz2iahjO2toJoTg7U4JBGLQznqDttsLvCt3ZpiPX17ITVmOPwaqXavBwUHYinNedSEeGEbnJ8PEksJaypZau9e2kskQnlSyCAUkBjW5qUiF5GPmpQZgwRfpGy48Pt0Zt8xtr2qFSCqUxAqNtZHArr/6mxZyqZshgU+/xWbr4iqRcppswt4bm5xweqywTs6vSloFUlm6w8RYIv9Vzli6ZV1reLmcZTHGO2ORXrc5yh6pv5wWelsihEapqlShzeoIn0LTmMuX6/hbmTFFS+MQfdFRsgpXf95OJAPaYXs=
|1|vz6MlztW1fWkGFxPXogqJZmVFyI=|4Z4cGX03E1QO2Pfim5cTDU2Nadc= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNzZt6knxUvuCNUnSImczphDuNJzcxWHX8NOuAdhs2P8u3ZyRjcrvvuwWSMxjovSOIs+Qbpk7ODpQu4jYTp1g28=실제로 k8s-master에 접속하기 위한 ssh key는 ~/.ssh/known_hosts에 저장됩니다. 잘 저장되었는지 확인해봅시다.
(3) Worker node2,3 복제

지금까지 k8s-master를 복제해서 k8s-node2 서버를 만들어봤습니다. 앞으로 실습을 위해 2개 이상의 서버가 필요하니, 2개 더 만들어줍니다. 만약 메모리, 디스크 성능이 부족하다면 k8s-master, k8s-node1, k8s-node2 3개만 만들어서 실습을 진행해도 괜찮다고 합니다.

Remote Desktop Manager 또한 생성한 서버를 미리 세션을 추가해줍시다. 만약, Remote Desktop Manager에 세션을 추가하는 방법이 기억안난다면 위 포스트를 한번 읽고 오시면 좋을것 같습니다.
마무리
지금까지 쿠버네티스 실습을 위한 환경을 조성해봤습니다.
앞으로 지금까지 구축한 k8s-master 노드를 통해 k8s-node1,2,3 노드와 통신을 하면서 클러스터를 구축하며 쿠버네티스를 직접 사용해보는 실습을 진행해보겠습니다.