23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
올해 프로젝트는 온프레미스 환경에서의 도전 과제들이 많이 발생되고 있습니다.
그 중의 하나로 외부 네트워크를 통해서 호스트에 접속한 후에 호스트에 구성된 KVM 기반의 VM에 접속하는 불편을 해결하는 요구사항에 대한 과제입니다.
즉, 외부에서도 VM(가상머신)에 직접 접속할 수 있는 방법의 제시가 필요합니다.
브리지 네트워크는 KVM 기반 VM에 외부에서 접근할 때 일반적으로 선호되는 방식입니다.
직접적인 IP 할당 : 브리지 네트워크를 사용하면 VM이 호스트와 동일한 네트워크에 존재하게 되어, VM에 IP를 직접 할당할 수 있습니다.
이는 NAT(Network Address Translation) 방식과 달리, VM이 외부 네트워크와 직접 통신할 수 있게 해줍니다.
따라서, VM이 외부에서 접근할 때 더 간편하고 효율적입니다.
성능 향상 : 브리지 네트워크는 VM 간의 통신을 더 빠르고 효율적으로 처리할 수 있습니다.
NAT 방식에서는 패킷이 호스트를 통해 전달되기 때문에 추가적인 지연이 발생할 수 있지만, 브리지 네트워크는 VM이 직접 네트워크에 연결되어 있어 이러한 지연이 줄어듭니다.
이는 특히 대량의 데이터 전송이 필요한 경우에 유리합니다.
네트워크 관리 용이성 : 브리지 네트워크는 VM을 물리적 네트워크의 일부로 만들기 때문에, 네트워크 관리가 더 용이합니다.
예를 들어, DHCP 서버를 통해 IP 주소를 자동으로 할당받거나, 기존 네트워크 정책을 그대로 적용할 수 있습니다.
이는 NAT 방식에서는 구현하기 어려운 부분입니다.
접근성과 보안 : 브리지 네트워크는 VM이 동일한 서브넷에 위치하게 하여, 외부에서의 접근이 용이합니다.
NAT 방식에서는 포트 포워딩을 설정해야 하므로, 추가적인 보안 설정이 필요할 수 있습니다.
반면, 브리지 네트워크는 기본적으로 외부와의 연결이 가능하므로, 보안 설정이 간단해질 수 있습니다.
호스트와 VM의 네트워크 설정을 통해, 두 시스템이 동일한 네트워크에서 원활하게 통신할 수 있도록 구성할 수 있습니다.
호스트의 네트워크 인터페이스인 ens18f0와 브리지 br172를 예로 들어, KVM 환경에서의 네트워크 설정을 설명하겠습니다.
핵심 내용은 아래와 같습니다. (우분투 22.04 기준)
호스트 측면 : 호스트의 네트워크 설정에서 ethernets 파트가 아닌 bridges 파트에다 IP주소 할당
VM 측면 : 172-static.yaml 파일 추가를 통해 호스트와 동일한 네트워크용 네트워크 주소 설정을 시행
ens18f0 인터페이스를 br172 브리지로 전환하고, 해당 브리지에 IP를 할당하는 방법을 설명합니다.
ens18f0에는 직접 IP를 할당하지 않고, br172에 IP를 부여하여 호스트와 VM이 동일 네트워크에서 독립적으로 작동하도록 설정합니다.
호스트 시스템에 대한 관리자 권한이 필요합니다.
VM의 네트워크 설정을 변경할 수 있어야 합니다.
호스트에서 현재 NIC 상태를 확인합니다.
ip linknetplan 설정 파일을 엽니다. (파일 경로는 시스템에 따라 다를 수 있습니다.)
sudo nano /etc/netplan/01-network-manager-all.yaml아래와 같이 설정을 수정합니다:
network:
version: 2
renderer: NetworkManager
ethernets:
ens18f0:
dhcp4: no
ens18f1: {}
ens18f2: {}
ens18f3: {}
bridges:
br172:
interfaces: [ens18f0] # ens18f0를 브리지에 추가
addresses: [172.20.40.112/24] # 호스트용 정적 IP 주소 할당
routes:
- to: default
via: 172.20.0.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
parameters:
stp: false
netplan 설정을 적용합니다.
sudo netplan apply브리지와 NIC의 IP 주소를 확인하여 설정이 올바르게 적용되었는지 확인합니다.
ip addr show br172
ip addr show ens18f0호스트에 브리지 준비가 되었으며, virt-manager를 통해서 VM을 생성하면 됩니다.
VM을 생성할 때, 브리지 네트워크의 172점대와 NAT 네트워크의 192점대 NIC를 추가 합니다.
생성 후에 VM의 네트워크 설정 우분투 UI에서 172점대 IP를 할당합니다.(192점대는 자동할당을 사용할 수 있습니다.)
VM에 br172 브리지를 추가합니다. 아래 명령어에서 <VM이름>을 실제 VM 이름으로 변경합니다.
sudo virsh attach-interface --domain <VM이름> --type bridge --source br172 --model virtio --config --live예시:
sudo virsh attach-interface --domain test-ubuntu22.04 --type bridge --source br172 --model virtio --config --live아래와 같이 NIC가 device name: br172로 추가된 것을 볼 수 있습니다. (아직 IP할당 이전이라 IP는 Unknown으로 표시)
VM에 브리지 추가 방식에서는 172점대의 라우팅 우선 순위가 낮은 상황이 발생되며 라우팅 우선 순위 조정이 필요합니다.
아래의 명령어로 라우팅 조정이 가능합니다. 아래에서 Wired connection 1 이 192점대일 경우의 예시입니다.
sudo nmcli connection modify "Wired connection 1" ipv4.route-metric 200
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"
ip route show | grep default결과를 확인하면 아래와 같습니다.
라우팅 우선 순위에서 172점대가 높아졌습니다.
default via 172.20.0.1 dev enp9s0 proto static metric 101
default via 192.168.122.1 dev enp1s0 proto dhcp metric 20200삭제 후 설정하는 방법도 있습니다. 아래의 예시를 참고하세요.
# 현재의 라우팅 순위 확인 : 192점대가 높은 우선 순위임
dtp@wnode3:~$ ip route show | grep default
default via 192.168.122.1 dev enp1s0 proto dhcp metric 100
default via 172.20.0.1 dev enp9s0 proto static metric 101
dtp@wnode3:~$ # 192점대(NAT) default 경로 삭제
sudo ip route del default via 192.168.122.1 dev enp1s0
# 172점대(브리지) default 경로를 metric 50으로 추가
sudo ip route add default via 172.20.0.1 dev enp9s0 metric 50
# 결과 확인
ip route show | grep default
[sudo] password for dtp:
default via 172.20.0.1 dev enp9s0 metric 50
default via 172.20.0.1 dev enp9s0 proto static metric 101
# 네트워크 확인
dtp@wnode3:~$ cd /etc/NetworkManager/system-connections/
dtp@wnode3:/etc/NetworkManager/system-connections$ ls
'Wired connection 2.nmconnection'
# 영구 적용을 위한 적용
dtp@wnode3:/etc/NetworkManager/system-connections$
sudo nmcli connection modify "Wired connection 2" ipv4.route-metric 50
sudo nmcli connection down "Wired connection 2"
sudo nmcli connection up "Wired connection 2"
Connection 'Wired connection 2' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
dtp@wnode3:/etc/NetworkManager/system-connections$ ip route show |grep default
default via 172.20.0.1 dev enp9s0 proto static metric 50 리부팅을 통해서 172점대 IP와 192점대 IP까지 모두 잘 설정되었는지 확인합니다.
아래와 같이 192.168.122네트워크의 기존 IP와 새로 브리지 네트워크로 생성한 IP 172.20.40.114 가 확인됩니다.
ssh 접속이 가능하도록 VM에 SSH를 설치합니다.
sudo apt install ssh설정이 완료되면 외부에서 VM에 SSH로 접속해 봅니다.
ssh 172.20.40.114반드시 ens18f0에는 IP를 직접 할당하지 않고, br172에만 할당해야 네트워크가 정상 동작합니다.
기존 NAT 네트워크(192.168.122.xxx)는 그대로 유지되며, VM은 두 개의 NIC(내부 NAT, 외부 브리지)를 동시에 사용할 수 있습니다.
이 절차서를 따라 설정을 완료하면, 호스트와 VM이 동일 네트워크에서 독립적으로 작동할 수 있습니다.
온프레미스 환경에서 호스트 네트워크 주소 대역과 동일한 IP주소를 VM에 내부 Default 네트워크(192.168.122.)가 있는 상태에서
추가로 NIC를 할당하여 외부에서도 호스트에 접속하듯이 ssh 172.20.40.114 로 접속이 가능하게 구성하였습니다.
구성 과정에서 VM을 만들 때, 네트워크를 함께 구성하는 것이 좀 더 수월합니다.
VM이 만들어진 이후에 172점대를 추가할 경우에는 라우팅 우선 순위로 접속이 불가한 상황이 발생하였고, 우선 순위 조정 절차가 해결 방법이었습니다.
개발 환경 측면에서 작업 환경이 호스트 172 주소를 거쳐서 VM 192 주소로 접속해야 하는 번거러움이 해소되었습니다.
이런 요구사항 충족으로 인해 KVM 기반으로 master node, wnode1, wnode2 의 VM 구성으로 K8s를 구축할 수 있고,
master node VM에 호스트를 거치지 않고, 외부에서 직접 접속할 수 있는 환경으로 활용할 수 있어
K8s클러스터 접속과 관리가 개발자 로컬 PC에서 가능하여 높은 생산성으로 보답할 수 있을 것을 기대됩니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.