검색

7.4. 가상 머신에 대한 SSH 액세스 구성

download PDF

다음 방법을 사용하여 VM(가상 머신)에 대한 SSH 액세스를 구성할 수 있습니다.

  • virtctl ssh 명령

    SSH 키 쌍을 생성하고 VM에 공개 키를 추가하고 개인 키로 virtctl ssh 명령을 실행하여 VM에 연결합니다.

    런타임 시 RHEL(Red Hat Enterprise Linux) 9 VM에 공개 SSH 키를 추가하거나 먼저 cloud-init 데이터 소스를 사용하여 구성할 수 있는 게스트 운영 체제를 사용하여 VM에 부팅할 수 있습니다.

  • virtctl port-forward 명령

    virtctl port-foward 명령을 .ssh/config 파일에 추가하고 OpenSSH를 사용하여 VM에 연결합니다.

  • Service

    서비스를 생성하고 서비스를 VM과 연결하고 서비스에서 노출하는 IP 주소 및 포트에 연결합니다.

  • 보조 네트워크

    보조 네트워크를 구성하고 VM(가상 머신)을 보조 네트워크 인터페이스에 연결한 다음 DHCP 할당된 IP 주소에 연결합니다.

7.4.1. 액세스 구성 고려 사항

VM(가상 머신)에 대한 액세스를 구성하는 각 방법에는 트래픽 로드 및 클라이언트 요구 사항에 따라 장단점이 있습니다.

서비스는 우수한 성능을 제공하며 클러스터 외부에서 액세스하는 애플리케이션에 권장됩니다.

내부 클러스터 네트워크가 트래픽 로드를 처리할 수 없는 경우 보조 네트워크를 구성할 수 있습니다.

virtctl sshvirtctl port-forwarding 명령
  • 간편한 구성.
  • VM 문제 해결에 권장됩니다.
  • virtctl port-forwarding 은 Ansible을 사용한 VM의 자동 구성에 권장됩니다.
  • 동적 공용 SSH 키를 사용하여 Ansible을 사용하여 VM을 프로비저닝할 수 있습니다.
  • API 서버의 부하 때문에 Rsync 또는 Remote Desktop Protocol과 같은 트래픽이 많은 애플리케이션에는 권장되지 않습니다.
  • API 서버는 트래픽 로드를 처리할 수 있어야 합니다.
  • 클라이언트는 API 서버에 액세스할 수 있어야 합니다.
  • 클라이언트에는 클러스터에 대한 액세스 자격 증명이 있어야 합니다.
클러스터 IP 서비스
  • 내부 클러스터 네트워크는 트래픽 부하를 처리할 수 있어야 합니다.
  • 클라이언트는 내부 클러스터 IP 주소에 액세스할 수 있어야 합니다.
노드 포트 서비스
  • 내부 클러스터 네트워크는 트래픽 부하를 처리할 수 있어야 합니다.
  • 클라이언트는 하나 이상의 노드에 액세스할 수 있어야 합니다.
로드 밸런서 서비스
  • 로드 밸런서를 구성해야 합니다.
  • 각 노드는 하나 이상의 로드 밸런서 서비스의 트래픽 로드를 처리할 수 있어야 합니다.
보조 네트워크
  • 트래픽이 내부 클러스터 네트워크를 통과하지 않기 때문에 우수한 성능.
  • 네트워크 토폴로지에 대한 유연한 접근 방식을 허용합니다.
  • VM이 보조 네트워크에 직접 노출되므로 게스트 운영 체제를 적절한 보안으로 구성해야 합니다. VM이 손상되면 침입자가 보조 네트워크에 액세스할 수 있습니다.

7.4.2. virtctl ssh 사용

공용 SSH 키를 VM(가상 머신)에 추가하고 virtctl ssh 명령을 실행하여 VM에 연결할 수 있습니다.

이 방법은 쉽게 구성할 수 있습니다. 그러나 API 서버에 부담을 주기 때문에 트래픽이 많은 로드에는 권장되지 않습니다.

7.4.2.1. 정적 및 동적 SSH 키 관리 정보

처음 부팅 시 또는 런타임 시 동적으로 공용 SSH 키를 VM(가상 머신)에 정적으로 추가할 수 있습니다.

참고

RHEL(Red Hat Enterprise Linux) 9만 동적 키 삽입을 지원합니다.

정적 SSH 키 관리

cloud-init 데이터 소스를 사용하여 구성을 지원하는 게스트 운영 체제를 사용하여 VM에 정적으로 관리되는 SSH 키를 추가할 수 있습니다. 키는 처음 부팅할 때 VM(가상 머신)에 추가됩니다.

다음 방법 중 하나를 사용하여 키를 추가할 수 있습니다.

  • 웹 콘솔 또는 명령줄을 사용하여 단일 VM에 키를 추가합니다.
  • 웹 콘솔을 사용하여 프로젝트에 키를 추가합니다. 이후 이 프로젝트에서 생성한 VM에 키가 자동으로 추가됩니다.

사용 사례

  • VM 소유자는 새로 생성된 모든 VM을 단일 키로 프로비저닝할 수 있습니다.
동적 SSH 키 관리

RHEL(Red Hat Enterprise Linux) 9가 설치된 VM에 대해 동적 SSH 키 관리를 활성화할 수 있습니다. 나중에 런타임 중에 키를 업데이트할 수 있습니다. 키는 Red Hat 부팅 소스와 함께 설치된 QEMU 게스트 에이전트에 의해 추가됩니다.

보안상의 이유로 동적 키 관리를 비활성화할 수 있습니다. 그런 다음 VM은 생성된 이미지의 키 관리 설정을 상속합니다.

사용 사례

  • VM에 대한 액세스 권한 부여 또는 취소: 클러스터 관리자는 네임스페이스의 모든 VM에 적용되는 Secret 오브젝트에서 개별 사용자의 키를 추가하거나 제거하여 원격 VM 액세스 권한을 부여하거나 취소할 수 있습니다.
  • 사용자 액세스: 생성 및 관리하는 모든 VM에 액세스 자격 증명을 추가할 수 있습니다.
  • Ansible 프로비저닝:

    • 작업 팀 구성원으로 Ansible 프로비저닝에 사용되는 모든 키가 포함된 단일 시크릿을 생성할 수 있습니다.
    • VM 소유자는 VM을 생성하고 Ansible 프로비저닝에 사용되는 키를 연결할 수 있습니다.
  • 키 교체:

    • 클러스터 관리자는 네임스페이스의 VM에서 사용하는 Ansible 프로비저너 키를 순환할 수 있습니다.
    • 워크로드 소유자는 관리하는 VM의 키를 회전할 수 있습니다.

7.4.2.2. 정적 키 관리

OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 VM(가상 머신)을 생성할 때 정적으로 관리되는 공용 SSH 키를 추가할 수 있습니다. VM이 처음 부팅되면 키가 cloud-init 데이터 소스로 추가됩니다.

웹 콘솔을 사용하여 VM을 생성할 때 프로젝트에 공개 SSH 키를 추가할 수도 있습니다. 키는 시크릿으로 저장되며 사용자가 생성한 모든 VM에 자동으로 추가됩니다.

참고

프로젝트에 보안을 추가한 다음 VM을 삭제하면 네임스페이스 리소스이므로 보안이 유지됩니다. 시크릿을 수동으로 삭제해야 합니다.

7.4.2.2.1. 템플릿에서 VM을 생성할 때 키 추가

OpenShift Container Platform 웹 콘솔을 사용하여 VM(가상 머신)을 생성할 때 정적으로 관리되는 공개 SSH 키를 추가할 수 있습니다. 키는 처음 부팅할 때 VM에 cloud-init 데이터 소스로 추가됩니다. 이 방법은 cloud-init 사용자 데이터에 영향을 미치지 않습니다.

선택 사항: 프로젝트에 키를 추가할 수 있습니다. 나중에 이 키는 프로젝트에서 생성하는 VM에 자동으로 추가됩니다.

사전 요구 사항

  • ssh-keygen 명령을 실행하여 SSH 키 쌍을 생성했습니다.

프로세스

  1. 웹 콘솔에서 가상화 카탈로그 로 이동합니다.
  2. 템플릿 타일을 클릭합니다.

    게스트 운영 체제는 cloud-init 데이터 소스의 구성을 지원해야 합니다.

  3. VirtualMachine 사용자 지정을 클릭합니다.
  4. 다음을 클릭합니다.
  5. 스크립트 탭을 클릭합니다.
  6. 프로젝트에 공개 SSH 키를 아직 추가하지 않은 경우 인증된 SSH 키 옆에 있는 편집 아이콘을 클릭하고 다음 옵션 중 하나를 선택합니다.

    • Use existing: 시크릿 목록에서 시크릿을 선택합니다.
    • 새 추가:

      1. SSH 키 파일을 찾아보거나 키 필드에 파일을 붙여넣습니다.
      2. 시크릿 이름을 입력합니다.
      3. 선택 사항: 이 프로젝트에서 생성한 새 VirtualMachine에 자동으로 이 키 적용을 선택합니다.
  7. 저장을 클릭합니다.
  8. VirtualMachine 생성을 클릭합니다.

    VirtualMachine 세부 정보 페이지에는 VM 생성 진행률이 표시됩니다.

검증

  • 구성 탭에서 스크립트 탭을 클릭합니다.

    시크릿 이름은 인증된 SSH 키 섹션에 표시됩니다.

7.4.2.2.2. 웹 콘솔을 사용하여 인스턴스 유형에서 VM을 생성할 때 키 추가

OpenShift Container Platform 웹 콘솔을 사용하여 인스턴스 유형에서 VM(가상 머신)을 생성할 수 있습니다. 기존 스냅샷을 복사하거나 VM을 복제하여 웹 콘솔을 사용하여 VM을 생성할 수도 있습니다. OpenShift Container Platform 웹 콘솔을 사용하여 인스턴스 유형에서 VM(가상 머신)을 생성할 때 정적으로 관리되는 SSH 키를 추가할 수 있습니다. 키는 처음 부팅할 때 VM에 cloud-init 데이터 소스로 추가됩니다. 이 방법은 cloud-init 사용자 데이터에 영향을 미치지 않습니다.

프로세스

  1. 웹 콘솔에서 가상화 카탈로그 로 이동하여 InstanceTypes 탭을 클릭합니다.
  2. 다음 옵션 중 하나를 선택합니다.

    • 부팅 가능한 볼륨을 선택합니다.

      참고

      부팅 가능한 볼륨 테이블에는 instancetype.kubevirt.io/default-preference 레이블이 있는 openshift-virtualization-os-images 네임스페이스의 볼륨만 나열됩니다.

      • 선택 사항: 별 아이콘을 클릭하여 부팅 가능한 볼륨을 즐겨 찾기로 지정합니다. 지정된 부팅 가능한 볼륨이 볼륨 목록에 먼저 표시됩니다.
    • 볼륨 추가 를 클릭하여 새 볼륨을 업로드하거나 기존 PVC(영구 볼륨 클레임), 볼륨 스냅샷 또는 데이터 소스를 사용합니다. 그런 다음 저장을 클릭합니다.
  3. 인스턴스 유형 타일을 클릭하고 워크로드에 적합한 리소스 크기를 선택합니다.
  4. 프로젝트에 공개 SSH 키를 아직 추가하지 않은 경우 VirtualMachine details 섹션에서 인증된 SSH 키 옆에 있는 편집 아이콘을 클릭합니다.
  5. 다음 옵션 중 하나를 선택합니다.

    • Use existing: 시크릿 목록에서 시크릿을 선택합니다.
    • 새 추가:

      1. 공개 SSH 키 파일을 찾아보거나 키 필드에 파일을 붙여넣습니다.
      2. 시크릿 이름을 입력합니다.
      3. 선택 사항: 이 프로젝트에서 생성한 새 VirtualMachine에 자동으로 이 키 적용을 선택합니다.
      4. 저장을 클릭합니다.
  6. 선택 사항: YAML 및 CLI 보기를 클릭하여 YAML 파일을 확인합니다. CLI 를 클릭하여 CLI 명령을 확인합니다. YAML 파일 콘텐츠 또는 CLI 명령을 다운로드하거나 복사할 수도 있습니다.
  7. VirtualMachine 생성을 클릭합니다.

VM이 생성되면 VirtualMachine 세부 정보 페이지에서 상태를 모니터링할 수 있습니다.

7.4.2.2.3. 명령줄을 사용하여 VM을 생성할 때 키 추가

명령줄을 사용하여 VM(가상 머신)을 생성할 때 정적으로 관리되는 공용 SSH 키를 추가할 수 있습니다. 키는 처음 부팅할 때 VM에 추가됩니다.

키가 VM에 cloud-init 데이터 소스로 추가됩니다. 이 방법은 cloud-init 사용자 데이터의 애플리케이션 데이터와 액세스 자격 증명을 구분합니다. 이 방법은 cloud-init 사용자 데이터에 영향을 미치지 않습니다.

사전 요구 사항

  • ssh-keygen 명령을 실행하여 SSH 키 쌍을 생성했습니다.

프로세스

  1. VirtualMachine 오브젝트 및 Secret 오브젝트에 대한 매니페스트 파일을 생성합니다.

    매니페스트 예

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: example-namespace
    spec:
      dataVolumeTemplates:
        - metadata:
            name: example-vm-volume
          spec:
            sourceRef:
              kind: DataSource
              name: rhel9
              namespace: openshift-virtualization-os-images
            storage:
              resources: {}
      instancetype:
        name: u1.medium
      preference:
        name: rhel.9
      running: true
      template:
        spec:
          domain:
            devices: {}
          volumes:
            - dataVolume:
                name: example-vm-volume
              name: rootdisk
            - cloudInitNoCloud: 1
                userData: |-
                  #cloud-config
                  user: cloud-user
              name: cloudinitdisk
          accessCredentials:
            - sshPublicKey:
                propagationMethod:
                  noCloud: {}
                source:
                  secret:
                    secretName: authorized-keys 2
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: authorized-keys
    data:
      key: c3NoLXJzYSB... 3

    1
    cloudInitNoCloud 데이터 소스를 지정합니다.
    2
    Secret 오브젝트 이름을 지정합니다.
    3
    공개 SSH 키를 붙여넣습니다.
  2. 다음 명령을 실행하여 VirtualMachineSecret 오브젝트를 생성합니다.

    $ oc create -f <manifest_file>.yaml
  3. 다음 명령을 실행하여 VM을 시작합니다.

    $ virtctl start vm example-vm -n example-namespace

검증

  • VM 구성을 가져옵니다.

    $ oc describe vm example-vm -n example-namespace

    출력 예

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: example-namespace
    spec:
      template:
        spec:
          accessCredentials:
            - sshPublicKey:
                propagationMethod:
                  noCloud: {}
                source:
                  secret:
                    secretName: authorized-keys
    # ...

7.4.2.3. 동적 키 관리

OpenShift Container Platform 웹 콘솔 또는 명령줄을 사용하여 VM(가상 머신)에 동적 키 삽입을 활성화할 수 있습니다. 그런 다음 런타임 시 키를 업데이트할 수 있습니다.

참고

RHEL(Red Hat Enterprise Linux) 9만 동적 키 삽입을 지원합니다.

동적 키 삽입을 비활성화하면 VM은 생성된 이미지의 키 관리 방법을 상속합니다.

7.4.2.3.1. 템플릿에서 VM을 생성할 때 동적 키 삽입 활성화

OpenShift Container Platform 웹 콘솔을 사용하여 템플릿에서 VM(가상 머신)을 생성할 때 동적 공개 SSH 키 삽입을 활성화할 수 있습니다. 그런 다음 런타임 시 키를 업데이트할 수 있습니다.

참고

RHEL(Red Hat Enterprise Linux) 9만 동적 키 삽입을 지원합니다.

키는 RHEL 9와 함께 설치된 QEMU 게스트 에이전트에 의해 VM에 추가됩니다.

사전 요구 사항

  • ssh-keygen 명령을 실행하여 SSH 키 쌍을 생성했습니다.

프로세스

  1. 웹 콘솔에서 가상화 카탈로그 로 이동합니다.
  2. Red Hat Enterprise Linux 9 VM 타일을 클릭합니다.
  3. VirtualMachine 사용자 지정을 클릭합니다.
  4. 다음을 클릭합니다.
  5. 스크립트 탭을 클릭합니다.
  6. 프로젝트에 공개 SSH 키를 아직 추가하지 않은 경우 인증된 SSH 키 옆에 있는 편집 아이콘을 클릭하고 다음 옵션 중 하나를 선택합니다.

    • Use existing: 시크릿 목록에서 시크릿을 선택합니다.
    • 새 추가:

      1. SSH 키 파일을 찾아보거나 키 필드에 파일을 붙여넣습니다.
      2. 시크릿 이름을 입력합니다.
      3. 선택 사항: 이 프로젝트에서 생성한 새 VirtualMachine에 자동으로 이 키 적용을 선택합니다.
  7. 동적 SSH 키 삽입을 의 로 설정합니다.
  8. 저장을 클릭합니다.
  9. VirtualMachine 생성을 클릭합니다.

    VirtualMachine 세부 정보 페이지에는 VM 생성 진행률이 표시됩니다.

검증

  • 구성 탭에서 스크립트 탭을 클릭합니다.

    시크릿 이름은 인증된 SSH 키 섹션에 표시됩니다.

7.4.2.3.2. 웹 콘솔을 사용하여 인스턴스 유형에서 VM을 생성할 때 동적 키 삽입 활성화

OpenShift Container Platform 웹 콘솔을 사용하여 인스턴스 유형에서 VM(가상 머신)을 생성할 수 있습니다. 기존 스냅샷을 복사하거나 VM을 복제하여 웹 콘솔을 사용하여 VM을 생성할 수도 있습니다. OpenShift Container Platform 웹 콘솔을 사용하여 인스턴스 유형에서 VM(가상 머신)을 생성할 때 동적 SSH 키 삽입을 활성화할 수 있습니다. 그런 다음 런타임에 키를 추가하거나 취소할 수 있습니다.

참고

RHEL(Red Hat Enterprise Linux) 9만 동적 키 삽입을 지원합니다.

키는 RHEL 9와 함께 설치된 QEMU 게스트 에이전트에 의해 VM에 추가됩니다.

프로세스

  1. 웹 콘솔에서 가상화 카탈로그 로 이동하여 InstanceTypes 탭을 클릭합니다.
  2. 다음 옵션 중 하나를 선택합니다.

    • 부팅 가능한 볼륨을 선택합니다.

      참고

      부팅 가능한 볼륨 테이블에는 instancetype.kubevirt.io/default-preference 레이블이 있는 openshift-virtualization-os-images 네임스페이스의 볼륨만 나열됩니다.

      • 선택 사항: 별 아이콘을 클릭하여 부팅 가능한 볼륨을 즐겨 찾기로 지정합니다. 지정된 부팅 가능한 볼륨이 볼륨 목록에 먼저 표시됩니다.
    • 볼륨 추가 를 클릭하여 새 볼륨을 업로드하거나 기존 PVC(영구 볼륨 클레임), 볼륨 스냅샷 또는 데이터 소스를 사용합니다. 그런 다음 저장을 클릭합니다.
  3. 인스턴스 유형 타일을 클릭하고 워크로드에 적합한 리소스 크기를 선택합니다.
  4. Red Hat Enterprise Linux 9 VM 타일을 클릭합니다.
  5. 프로젝트에 공개 SSH 키를 아직 추가하지 않은 경우 VirtualMachine details 섹션에서 인증된 SSH 키 옆에 있는 편집 아이콘을 클릭합니다.
  6. 다음 옵션 중 하나를 선택합니다.

    • Use existing: 시크릿 목록에서 시크릿을 선택합니다.
    • 새 추가:

      1. 공개 SSH 키 파일을 찾아보거나 키 필드에 파일을 붙여넣습니다.
      2. 시크릿 이름을 입력합니다.
      3. 선택 사항: 이 프로젝트에서 생성한 새 VirtualMachine에 자동으로 이 키 적용을 선택합니다.
      4. 저장을 클릭합니다.
  7. VirtualMachine details 섹션에서 동적 SSH 키 삽입을 의 로 설정합니다.
  8. 선택 사항: YAML 및 CLI 보기를 클릭하여 YAML 파일을 확인합니다. CLI 를 클릭하여 CLI 명령을 확인합니다. YAML 파일 콘텐츠 또는 CLI 명령을 다운로드하거나 복사할 수도 있습니다.
  9. VirtualMachine 생성을 클릭합니다.

VM이 생성되면 VirtualMachine 세부 정보 페이지에서 상태를 모니터링할 수 있습니다.

7.4.2.3.3. 웹 콘솔을 사용하여 동적 SSH 키 삽입 활성화

OpenShift Container Platform 웹 콘솔을 사용하여 VM(가상 머신)에 동적 키 삽입을 활성화할 수 있습니다. 그런 다음 런타임 시 공용 SSH 키를 업데이트할 수 있습니다.

키는 RHEL(Red Hat Enterprise Linux) 9와 함께 설치된 QEMU 게스트 에이전트에 의해 VM에 추가됩니다.

사전 요구 사항

  • 게스트 운영 체제는 RHEL 9입니다.

프로세스

  1. 웹 콘솔에서 가상화 VirtualMachines 로 이동합니다.
  2. VM을 선택하여 VirtualMachine 세부 정보 페이지를 엽니다.
  3. 구성 탭에서 스크립트를 클릭합니다.
  4. 프로젝트에 공개 SSH 키를 아직 추가하지 않은 경우 인증된 SSH 키 옆에 있는 편집 아이콘을 클릭하고 다음 옵션 중 하나를 선택합니다.

    • Use existing: 시크릿 목록에서 시크릿을 선택합니다.
    • 새 추가:

      1. SSH 키 파일을 찾아보거나 키 필드에 파일을 붙여넣습니다.
      2. 시크릿 이름을 입력합니다.
      3. 선택 사항: 이 프로젝트에서 생성한 새 VirtualMachine에 자동으로 이 키 적용을 선택합니다.
  5. 동적 SSH 키 삽입을 의 로 설정합니다.
  6. 저장을 클릭합니다.
7.4.2.3.4. 명령줄을 사용하여 동적 키 삽입 활성화

명령줄을 사용하여 VM(가상 머신)에 동적 키 삽입을 활성화할 수 있습니다. 그런 다음 런타임 시 공용 SSH 키를 업데이트할 수 있습니다.

참고

RHEL(Red Hat Enterprise Linux) 9만 동적 키 삽입을 지원합니다.

키는 RHEL 9와 함께 자동으로 설치되는 QEMU 게스트 에이전트에 의해 VM에 추가됩니다.

사전 요구 사항

  • ssh-keygen 명령을 실행하여 SSH 키 쌍을 생성했습니다.

프로세스

  1. VirtualMachine 오브젝트 및 Secret 오브젝트에 대한 매니페스트 파일을 생성합니다.

    매니페스트 예

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: example-namespace
    spec:
      dataVolumeTemplates:
        - metadata:
            name: example-vm-volume
          spec:
            sourceRef:
              kind: DataSource
              name: rhel9
              namespace: openshift-virtualization-os-images
            storage:
              resources: {}
      instancetype:
        name: u1.medium
      preference:
        name: rhel.9
      running: true
      template:
        spec:
          domain:
            devices: {}
          volumes:
            - dataVolume:
                name: example-vm-volume
              name: rootdisk
            - cloudInitNoCloud: 1
                userData: |-
                  #cloud-config
                  runcmd:
                  - [ setsebool, -P, virt_qemu_ga_manage_ssh, on ]
              name: cloudinitdisk
          accessCredentials:
            - sshPublicKey:
                propagationMethod:
                  qemuGuestAgent:
                    users: ["cloud-user"]
                source:
                  secret:
                    secretName: authorized-keys 2
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: authorized-keys
    data:
      key: c3NoLXJzYSB... 3

    1
    cloudInitNoCloud 데이터 소스를 지정합니다.
    2
    Secret 오브젝트 이름을 지정합니다.
    3
    공개 SSH 키를 붙여넣습니다.
  2. 다음 명령을 실행하여 VirtualMachineSecret 오브젝트를 생성합니다.

    $ oc create -f <manifest_file>.yaml
  3. 다음 명령을 실행하여 VM을 시작합니다.

    $ virtctl start vm example-vm -n example-namespace

검증

  • VM 구성을 가져옵니다.

    $ oc describe vm example-vm -n example-namespace

    출력 예

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: example-namespace
    spec:
      template:
        spec:
          accessCredentials:
            - sshPublicKey:
                propagationMethod:
                  qemuGuestAgent:
                    users: ["cloud-user"]
                source:
                  secret:
                    secretName: authorized-keys
    # ...

7.4.2.4. virtctl ssh 명령 사용

virtcl ssh 명령을 사용하여 실행 중인 VM(가상 머신)에 액세스할 수 있습니다.

사전 요구 사항

  • virtctl 명령줄 툴을 설치했습니다.
  • VM에 공개 SSH 키를 추가했습니다.
  • SSH 클라이언트가 설치되어 있어야 합니다.
  • virtctl 툴을 설치한 환경에는 VM에 액세스하는 데 필요한 클러스터 권한이 있습니다. 예를 들어 oc login 을 실행하거나 KUBECONFIG 환경 변수를 설정합니다.

프로세스

  • virtctl ssh 명령을 실행합니다.

    $ virtctl -n <namespace> ssh <username>@example-vm -i <ssh_key> 1
    1
    네임스페이스, 사용자 이름 및 SSH 개인 키를 지정합니다. 기본 SSH 키 위치는 /home/user/.ssh 입니다. 키를 다른 위치에 저장하는 경우 경로를 지정해야 합니다.

    예제

    $ virtctl -n my-namespace ssh cloud-user@example-vm -i my-key

작은 정보

VirtualMachines 페이지의 VM 옆에 있는 옵션 kebab 메뉴에서 SSH 명령 복사를 선택하여 웹 콘솔에서 virtctl ssh 명령을 복사할 수 있습니다.

7.4.3. virtctl port-forward 명령 사용

로컬 OpenSSH 클라이언트와 virtctl port-forward 명령을 사용하여 실행 중인 VM(가상 머신)에 연결할 수 있습니다. 이 방법을 Ansible과 함께 사용하여 VM 구성을 자동화할 수 있습니다.

이 방법은 컨트롤 플레인을 통해 포트 전달 트래픽이 전송되므로 트래픽이 적은 애플리케이션에 권장됩니다. 이 방법은 API 서버에 많은 부담을 주기 때문에 Rsync 또는 원격 데스크탑 프로토콜과 같은 트래픽이 많은 애플리케이션에 권장되지 않습니다.

사전 요구 사항

  • virtctl 클라이언트를 설치했습니다.
  • 액세스하려는 가상 머신이 실행 중입니다.
  • virtctl 툴을 설치한 환경에는 VM에 액세스하는 데 필요한 클러스터 권한이 있습니다. 예를 들어 oc login 을 실행하거나 KUBECONFIG 환경 변수를 설정합니다.

프로세스

  1. 클라이언트 머신의 ~/.ssh/config 파일에 다음 텍스트를 추가합니다.

    Host vm/*
      ProxyCommand virtctl port-forward --stdio=true %h %p
  2. 다음 명령을 실행하여 VM에 연결합니다.

    $ ssh <user>@vm/<vm_name>.<namespace>

7.4.4. SSH 액세스에 서비스 사용

VM(가상 머신)에 대한 서비스를 생성하고 서비스에서 노출하는 IP 주소 및 포트에 연결할 수 있습니다.

서비스는 우수한 성능을 제공하며 클러스터 외부에서 또는 클러스터 내에서 액세스하는 애플리케이션에 권장됩니다. Ingress 트래픽은 방화벽에 의해 보호됩니다.

클러스터 네트워크가 트래픽 로드를 처리할 수 없는 경우 VM 액세스를 위해 보조 네트워크를 사용하는 것이 좋습니다.

7.4.4.1. 서비스 정보

Kubernetes 서비스는 클라이언트의 네트워크 액세스를 포드 세트에서 실행되는 애플리케이션에 노출합니다. 서비스는 추상화, 로드 밸런싱 및 NodePortLoadBalancer 유형의 경우 외부 세계에 노출을 제공합니다.

ClusterIP
내부 IP 주소에 서비스를 노출하고 클러스터 내의 다른 애플리케이션에 DNS 이름으로 노출합니다. 단일 서비스는 여러 가상 머신에 매핑할 수 있습니다. 클라이언트가 서비스에 연결하려고 하면 사용 가능한 백엔드 간에 클라이언트 요청이 부하 분산됩니다. ClusterIP 는 기본 서비스 유형입니다.
NodePort
클러스터에서 선택한 각 노드의 동일한 포트에 서비스를 노출합니다. NodePort 를 사용하면 노드 자체에 클라이언트에서 외부에서 액세스할 수 있는 한 클러스터 외부에서 포트에 액세스할 수 있습니다.
LoadBalancer
현재 클라우드에 외부 로드 밸런서를 생성하고(지원되는 경우) 고정 외부 IP 주소를 서비스에 할당합니다.
참고

온프레미스 클러스터의 경우 MetalLB Operator를 배포하여 로드 밸런싱 서비스를 구성할 수 있습니다.

7.4.4.2. 서비스 생성

OpenShift Container Platform 웹 콘솔, virtctl 명령줄 툴 또는 YAML 파일을 사용하여 VM(가상 머신)을 노출하는 서비스를 생성할 수 있습니다.

7.4.4.2.1. 웹 콘솔을 사용하여 로드 밸런서 서비스 생성 활성화

OpenShift Container Platform 웹 콘솔을 사용하여 VM(가상 머신)에 대한 로드 밸런서 서비스 생성을 활성화할 수 있습니다.

사전 요구 사항

  • 클러스터에 대한 로드 밸런서를 구성했습니다.
  • cluster-admin 역할의 사용자로 로그인되어 있습니다.

프로세스

  1. 가상화 개요 로 이동합니다.
  2. 설정 탭에서 클러스터를 클릭합니다.
  3. 일반 설정SSH 구성 을 확장합니다.
  4. LoadBalancer 서비스를 통한 SSH 를 on으로 설정합니다.
7.4.4.2.2. 웹 콘솔을 사용하여 서비스 생성

OpenShift Container Platform 웹 콘솔을 사용하여 VM(가상 머신)에 대한 노드 포트 또는 로드 밸런서 서비스를 생성할 수 있습니다.

사전 요구 사항

  • 로드 밸런서 또는 노드 포트를 지원하도록 클러스터 네트워크를 구성했습니다.
  • 로드 밸런서 서비스를 생성하려면 로드 밸런서 서비스 생성을 활성화했습니다.

프로세스

  1. VirtualMachines 로 이동하여 가상 머신을 선택하여 VirtualMachine 세부 정보 페이지를 확인합니다.
  2. 세부 정보 탭의 SSH 서비스 유형 목록에서 LoadBalancer를 통한 SSH 를 선택합니다.
  3. 선택 사항: 복사 아이콘을 클릭하여 SSH 명령을 클립보드에 복사합니다.

검증

  • 세부 정보 탭에서 서비스 창을 선택하여 새 서비스를 확인합니다.
7.4.4.2.3. virtctl을 사용하여 서비스 생성

virtctl 명령줄 툴을 사용하여 VM(가상 머신)에 대한 서비스를 생성할 수 있습니다.

사전 요구 사항

  • virtctl 명령줄 툴을 설치했습니다.
  • 서비스를 지원하도록 클러스터 네트워크를 구성했습니다.
  • virtctl 을 설치한 환경에는 VM에 액세스하는 데 필요한 클러스터 권한이 있습니다. 예를 들어 oc login 을 실행하거나 KUBECONFIG 환경 변수를 설정합니다.

프로세스

  • 다음 명령을 실행하여 서비스를 생성합니다.

    $ virtctl expose vm <vm_name> --name <service_name> --type <service_type> --port <port> 1
    1
    ClusterIP,NodePort 또는 LoadBalancer 서비스 유형을 지정합니다.

    예제

    $ virtctl expose vm example-vm --name example-service --type NodePort --port 22

검증

  • 다음 명령을 실행하여 서비스를 확인합니다.

    $ oc get service

다음 단계

virtctl 을 사용하여 서비스를 생성한 후 VirtualMachine 매니페스트의 spec.template.metadata.labels 스탠자에 special: key 를 추가해야 합니다. 명령줄을 사용하여 서비스 생성을 참조하십시오.

7.4.4.2.4. 명령줄을 사용하여 서비스 생성

명령줄을 사용하여 서비스를 생성하고 VM(가상 머신)과 연결할 수 있습니다.

사전 요구 사항

  • 서비스를 지원하도록 클러스터 네트워크를 구성했습니다.

프로세스

  1. VirtualMachine 매니페스트를 편집하여 서비스 생성 레이블을 추가합니다.

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      namespace: example-namespace
    spec:
      running: false
      template:
        metadata:
          labels:
            special: key 1
    # ...
    1
    spec.template.metadata.labels 스탠자에 special: key 를 추가합니다.
    참고

    가상 머신의 라벨은 Pod로 전달됩니다. special: 키 레이블은 서비스 매니페스트의 spec.selector 속성의 레이블과 일치해야 합니다.

  2. VirtualMachine 매니페스트 파일을 저장하여 변경 사항을 적용합니다.
  3. VM을 노출하는 서비스 매니페스트를 생성합니다.

    apiVersion: v1
    kind: Service
    metadata:
      name: example-service
      namespace: example-namespace
    spec:
    # ...
      selector:
        special: key 1
      type: NodePort 2
      ports: 3
        protocol: TCP
        port: 80
        targetPort: 9376
        nodePort: 30000
    1
    VirtualMachine 매니페스트의 spec.template.metadata.labels 스탠자에 추가한 라벨을 지정합니다.
    2
    ClusterIP,NodePort 또는 LoadBalancer 를 지정합니다.
    3
    가상 머신에서 노출하려는 네트워크 포트 및 프로토콜 컬렉션을 지정합니다.
  4. 서비스 매니페스트 파일을 저장합니다.
  5. 다음 명령을 실행하여 서비스를 생성합니다.

    $ oc create -f example-service.yaml
  6. VM을 다시 시작하여 변경 사항을 적용합니다.

검증

  • Service 오브젝트를 쿼리하여 사용 가능한지 확인합니다.

    $ oc get service -n example-namespace

7.4.4.3. SSH를 사용하여 서비스에서 노출하는 VM에 연결

SSH를 사용하여 서비스에서 노출하는 VM(가상 머신)에 연결할 수 있습니다.

사전 요구 사항

  • VM을 노출하는 서비스를 생성하셨습니다.
  • SSH 클라이언트가 설치되어 있어야 합니다.
  • 클러스터에 로그인되어 있습니다.

프로세스

  • 다음 명령을 실행하여 VM에 액세스합니다.

    $ ssh <user_name>@<ip_address> -p <port> 1
    1
    클러스터 IP 서비스의 클러스터 IP, 노드 포트 서비스의 노드 IP 또는 로드 밸런서 서비스의 외부 IP 주소를 지정합니다.

7.4.5. SSH 액세스에 보조 네트워크 사용

보조 네트워크를 구성하고 VM(가상 머신)을 보조 네트워크 인터페이스에 연결한 다음 SSH를 사용하여 DHCP 할당된 IP 주소에 연결할 수 있습니다.

중요

보조 네트워크는 클러스터 네트워크 스택에서 트래픽을 처리하지 않기 때문에 우수한 성능을 제공합니다. 그러나 VM은 보조 네트워크에 직접 노출되며 방화벽에 의해 보호되지 않습니다. VM이 손상되면 침입자가 보조 네트워크에 액세스할 수 있습니다. 이 방법을 사용하는 경우 VM의 운영 체제 내에서 적절한 보안을 구성해야 합니다.

네트워킹 옵션에 대한 자세한 내용은 OpenShift Virtualization 튜닝 및 확장 가이드MultusSR-IOV 설명서를 참조하십시오.

사전 요구 사항

7.4.5.1. 웹 콘솔을 사용하여 VM 네트워크 인터페이스 구성

OpenShift Container Platform 웹 콘솔을 사용하여 VM(가상 머신)의 네트워크 인터페이스를 구성할 수 있습니다.

사전 요구 사항

  • 네트워크에 대한 네트워크 연결 정의를 생성했습니다.

프로세스

  1. 가상화 VirtualMachines 로 이동합니다.
  2. VM을 클릭하여 VirtualMachine 세부 정보 페이지를 확인합니다.
  3. 구성 탭에서 네트워크 인터페이스 탭을 클릭합니다.
  4. 네트워크 인터페이스 추가를 클릭합니다.
  5. 인터페이스 이름을 입력하고 네트워크 목록에서 네트워크 연결 정의를 선택합니다.
  6. 저장을 클릭합니다.
  7. VM을 다시 시작하여 변경 사항을 적용합니다.

7.4.5.2. SSH를 사용하여 보조 네트워크에 연결된 VM에 연결

SSH를 사용하여 보조 네트워크에 연결된 VM(가상 머신)에 연결할 수 있습니다.

사전 요구 사항

  • DHCP 서버를 사용하여 보조 네트워크에 VM을 연결했습니다.
  • SSH 클라이언트가 설치되어 있어야 합니다.

프로세스

  1. 다음 명령을 실행하여 VM의 IP 주소를 가져옵니다.

    $ oc describe vm <vm_name> -n <namespace>

    출력 예

    # ...
    Interfaces:
      Interface Name:  eth0
      Ip Address:      10.244.0.37/24
      Ip Addresses:
        10.244.0.37/24
        fe80::858:aff:fef4:25/64
      Mac:             0a:58:0a:f4:00:25
      Name:            default
    # ...

  2. 다음 명령을 실행하여 VM에 연결합니다.

    $ ssh <user_name>@<ip_address> -i <ssh_key>

    예제

    $ ssh cloud-user@10.244.0.37 -i ~/.ssh/id_rsa_cloud-user

참고
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.