8.4. 내부 FQDN을 사용하여 가상 머신에 액세스
헤드리스 서비스를 사용하여 안정적인 FQDN(정규화된 도메인 이름)의 기본 내부 pod 네트워크에 연결된 VM(가상 머신)에 액세스할 수 있습니다.
Kubernetes 헤드리스 서비스는 Pod 세트를 나타내는 클러스터 IP 주소를 할당하지 않는 일종의 서비스입니다. 서비스에 대한 단일 가상 IP 주소를 제공하는 대신 헤드리스 서비스는 서비스와 연결된 각 Pod에 대한 DNS 레코드를 생성합니다. 특정 TCP 또는 UDP 포트를 노출하지 않고도 FQDN을 통해 VM을 노출할 수 있습니다.
OpenShift Container Platform 웹 콘솔을 사용하여 VM을 생성한 경우 VirtualMachine 세부 정보 페이지의 개요 탭에서 네트워크 타일에 나열된 내부 FQDN을 찾을 수 있습니다. VM에 연결하는 방법에 대한 자세한 내용은 내부 FQDN을 사용하여 가상 머신에 연결을 참조하십시오.
8.4.1. CLI를 사용하여 프로젝트에서 헤드리스 서비스 생성
네임스페이스에서 헤드리스 서비스를 생성하려면 clusterIP: None
매개변수를 서비스 YAML 정의에 추가합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
프로세스
다음 예와 같이 VM을 노출하는
서비스
매니페스트를 생성합니다.apiVersion: v1 kind: Service metadata: name: mysubdomain 1 spec: selector: expose: me 2 clusterIP: None 3 ports: 4 - protocol: TCP port: 1234 targetPort: 1234
-
서비스
매니페스트 파일을 저장합니다. 다음 명령을 실행하여 서비스를 생성합니다.
$ oc create -f headless_service.yaml
8.4.2. CLI를 사용하여 가상 머신을 헤드리스 서비스에 매핑
FQDN(정규화된 도메인 이름)을 사용하여 클러스터 내에서 VM(가상 머신)에 연결하려면 먼저 VM을 헤드리스 서비스에 매핑해야 합니다. VM 구성 파일에서 spec.hostname
및 spec.subdomain
매개변수를 설정합니다.
하위 도메인과 일치하는 이름이 있는 헤드리스 서비스가 있으면 < vm.spec.hostname>.<vm.subdomain>.<vm.subdomain>.<vm.metadata.namespace>.svc.cluster.local
형식의 VM에 대한 고유한 DNS A 레코드가 생성됩니다.
프로세스
다음 명령을 실행하여
VirtualMachine
매니페스트를 편집하여 서비스 선택기 레이블 및 하위 도메인을 추가합니다.$ oc edit vm <vm_name>
VirtualMachine
매니페스트 파일의 예apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: vm-fedora spec: template: metadata: labels: expose: me 1 spec: hostname: "myvm" 2 subdomain: "mysubdomain" 3 # ...
- 변경 사항을 저장하고 편집기를 종료합니다.
- VM을 다시 시작하여 변경 사항을 적용합니다.
8.4.3. 내부 FQDN을 사용하여 가상 머신에 연결
FQDN(정규화된 도메인 이름)을 사용하여 VM(가상 머신)에 연결할 수 있습니다.
사전 요구 사항
-
virtctl
툴을 설치했습니다. -
웹 콘솔에서 VM의 내부 FQDN을 식별하거나 VM을 헤드리스 서비스에 매핑하여 확인했습니다. 내부 FQDN 형식은 <
vm.spec.hostname>.<vm.spec.subdomain>.<vm.metadata.namespace>.svc.cluster.local
입니다.
프로세스
다음 명령을 입력하여 VM 콘솔에 연결합니다.
$ virtctl console vm-fedora
요청된 FQDN을 사용하여 VM에 연결하려면 다음 명령을 실행합니다.
$ ping myvm.mysubdomain.<namespace>.svc.cluster.local
출력 예
PING myvm.mysubdomain.default.svc.cluster.local (10.244.0.57) 56(84) bytes of data. 64 bytes from myvm.mysubdomain.default.svc.cluster.local (10.244.0.57): icmp_seq=1 ttl=64 time=0.029 ms
이전 예에서
myvm.mysubdomain.default.svc.cluster.local
은 현재 VM에 할당된 클러스터 IP 주소인10.244.0.57
을 가리킵니다.