데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      AKS usecase : k8s로 VM제공하기 ‘kubevirt’

      broccoli 23.07.04
      2,663 11 1

      AKS로 쿠버네티스 시작하기 수행 내용 리뷰

      아래의 내용으로 AKS로 쿠버네티스 시작하기를 진행하였다.

      AKS에서 CI/CD가 가능한 환경 구성을 실무를 진행하면서 완성할 수 있었다.

      매주 2시간 정도씩 투입하여 프로젝트에 직접 적용하여 애플리케이션 배포까지 모두 가능하게 되었다.

      AKS로 쿠버네티스 시작하기 - Azure Kubernetes Service 부터
      AKS로 쿠버네티스 시작하기 : CI 구성하기
      AKS로 쿠버네티스 시작하기 : 스토리지 연결
      AKS로 쿠버네티스 시작하기 : ACR 접속 인증하여 배포
      AKS로 쿠버네티스 시작하기 : 강력한 ArgoCD로 CD 구성
      AKS로 쿠버네티스 시작하기 : argocd툴에 ingress 통해 접속
      AKS로 쿠버네티스 시작하기 : 간단한 spring boot 앱 배포하기

      AKS usecase 시작하기

      AKS 내에 서비스를 배포하는 단계까지 완성하여 최적화와 병행해서 다양한 활용 사례를 발굴해 보기로 하였다.


      VM 만들기 'kubevirt' 개요

      k8s로 VM을 제공할 수 있다. KubeVirt는 쿠버네티스 클러스터 위에 가상화 레이어를 제공하는 오픈소스 프로젝트이다.

      image.png

      < 출처: https://da-nika.tistory.com/187>


      장점을 생각해 보면 아래와 같다.

      1. 인프라와 분리된 별도의 컴포넌트

      Kubernetes 클러스터와 별도의 컴포넌트로, 기존 클러스터 인프라에 구애를 받지 않습니다.

      2. 리소스 공유를 통한 절감

      쿠버네티스 노드의 CPU와 메모리를 공유하여 VM이 사용합니다. 노드는 물리 호스트나 클라우드의 파드로 제공될 수 있습니다.

      3. 표준화 VM

      CRD와 API를 통해 VM을 표준화하고 관리할 수 있습니다. 유저는 새로운 VM 인스턴스를 정의하고 관리하는 것에 집중할 수 있습니다.

      4. 확장성과 가용성

      KubeVirt VM은 쿠버네티스 클러스터의 확장성과 가용성을 누릴 수 있습니다. 노드가 추가되거나 변경되더라도 VM은 계속 사용할 수 있습니다.

      5. 생명주기 관리

      CRD와 컨트롤러를 통해 VM의 전체 생명주기를 관리합니다. 유저는 쉽게 VM을 생성, 업데이트, 삭제하고 스냅샷을 다룰 수 있습니다.


      kubevirt 설치 위한 리소스 사이트

      설치를 위한 리소스 사이트(github)

      https://github.com/kubevirt/kubevirt/releases/tag/v0.59.2


      kubevirt 설치

      1. KubeVirt를 설치하기 위해 KubeVirt GitHub 저장소에서 YAML 파일을 다운로드합니다. : operator와 CR

        wget https://github.com/kubevirt/kubevirt/releases/download/v0.59.2/kubevirt-operator.yaml
        wget https://github.com/kubevirt/kubevirt/releases/download/v0.59.2/kubevirt-cr.yaml

        - 다운로드시 적절한 버전을 선택하여 다운로드 : 최신 버전에 대한 정보는 KubeVirt GitHub 저장소를 확인

      2. 설치 : 다운로드한 yaml파일을 적용하여 설치합니다. 다운로드한 YAML 파일을 적용하여 KubeVirt를 설치합니다.

        kubectl apply -f kubevirt-operator.yaml
        kubectl apply -f kubevirt-cr.yaml

        - 위의 예시는 KubeVirt 버전 0.59.2을 다운로드하는 것입니다. 적절한 버전을 선택하여 다운로드 해야 합니다.

      3. 대기시간

        KubeVirt 설치가 완료될 때까지 몇 분(약 4분)이 걸릴 수 있습니다.

      4. 설치 상태 확인

        kubectl get kubevirt -n kubevirt

        설치가 완료되면 KubeVirt가 실행 중인지 확인할 수 있습니다.


      VM yaml 작성 예시

      apiVersion: kubevirt.io/v1
      kind: VirtualMachine
      metadata:
        name: testvm
      spec:
        running: false
        template:
          metadata:
            labels:
              kubevirt.io/size: small
              kubevirt.io/domain: testvm
          spec:
            domain:
              devices:
                disks:
                  - name: containerdisk
                    disk:
                      bus: virtio
                  - name: cloudinitdisk
                    disk:
                      bus: virtio
                interfaces:
                - name: default
                  masquerade: {}
              resources:
                requests:
                  memory: 64M
            networks:
            - name: default
              pod: {}
            volumes:
              - name: containerdisk
                containerDisk:
                  image: quay.io/kubevirt/cirros-container-disk-demo
              - name: cloudinitdisk
                cloudInitNoCloud:
                  userDataBase64: SGkuXG4=


      가상머신 기동용 virtcli 설치

      1. 다운로드(맥북 M1용)

        curl -L0 -o virtctl-v0.59.2-darwin-amd64 https://github.com/kubevirt/kubevirt/releases/download/v0.59.2/virtctl-v0.59.2-darwin-amd64

      2. 다운로드 받은 바이너리 이름 변경

        cp virtctl-v1.59.2-darwin-amd64 virtctl

      3. 실행가능한 파일로 변경 

        chmod +x virtctl

      4. 파일을 이동 

      sudo mv virtctl /usr/local/bin/


      VM 생성과 접속

      # VM 생성
      ➜   kubectl apply -f kv-test-vm.yaml
      virtualmachine.kubevirt.io/testvm created
       
      # VM 조회
      ➜   kubectl get vm
      NAME     AGE   STATUS    READY
      testvm   10s   Stopped   False
       
      # VM 기동
      ➜   virtctl start testvm
      VM testvm was scheduled to start
      ➜  kubevirt k get vm
      NAME     AGE   STATUS     READY
      testvm   41s   Starting   False
       
      # VM의 IP 확인
      ➜   kubectl get vmi
      NAME     AGE   PHASE     IP             NODENAME                            READY
      testvm   34s   Running   100.64.10.10   aks-agentpool-29402424-vmss000004   True
       
      # VM으로 접속
      ➜   virtctl console testvm
      Successfully connected to testvm console. The escape sequence is ^]
       
      login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
      testvm login: cirros
      Password:
      $ hostname
      testvm
       
      # 콘솔을 닫으려면 Ctrl+]


      정리

      k8s에다 VM을 생성할 수 있었다.

      절차는 kubevirt cr/operator 설치 → vm yaml 작성 → vm생성 → vm 기동 순으로 진행했다.

      yaml 파일로 VM을 표준화된 방식으로 생성하므로 필요시 간단/신속하게 작업 환경을 제공해 줄 수 있어 agile에 적합하다.

      예를 들어 0.1 core단위로 VM을 할당할 수도 있어 효율적인 자원 할당이 가능하다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      broccoli 님의 최신 블로그

      더보기
      동영상 기고하기