ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kubernetes Tutorials 2. kubectl을 사용해서 배포하기
    DevOps/Kubernetes 2020. 4. 27. 21:39

    목표 : kubectl을 통해 App을 쿠버네티스에 배포해보자

     

     

    쿠버네티스 배포

     

    일단 동작하는 쿠버 네티스 클러스터가 있으면 컨테이너화 App을 그 위에다 배포할 수 있다. 그렇게 하려면

     

    쿠버 네티스 배포 설정을 만들어야 한다. 배포 설정은 쿠버 네티스가 어떻게 그 App의 인스턴스들을 만들고 갱신해야 

     

    하는지를 알려주는 역할을 한다. 따라서 일단 Deployment를 만들면 쿠버네티스 마스터가 App의 인스턴스들을 각각의

     

    노드에 스케쥴링을 하는 방식이다.

     

     

    App의 인스턴스가 만들어지면 쿠버네티스 Deployment 컨트롤러는 지속적으로 그 인스턴스를 모니터링한다. 만약 노

     

    드가 다운되거나 삭제되면 컨트롤러가 다른 노드에다 배포하거나 하는 방식. 그렇게 함으로써 self-healing 방식을 제공

     

    한다.

     

     

    첫 번째 App을 컨테이너에 배포하기

     

     

    Kublet = Node processes

    Kubectl를 사용해서 Deployment를 만들고 관리할 수 있다. Kubectl을 Kubernetes API를 사용해서 클러스터의 마스터와

     

    소통한다. Kubectl 커맨드를 사용해서 App을 Kubernetes 클러스터에 배포할 것.

     

     

    Deployment를 만들 때는 App에 대한 컨테이너 이미지를 명시해주어야 한다. 또 몇 개의 App들을 실행하길 원하는지

     

    도 명시해야 한다. 첫 번째 Deployment는 도커 컨테이너에서 동작하는 Node.js App을 사용해보자.

     

     

    미니큐브처럼 kubectl은 online 터미널에 설치되어 있다.

     

    kubectl을 입력하면 사용할 수 있는지 볼 수 있다.

     

     

    Deployments를 create 할 때는 이름과 App이미지 위치를 알려주어야 한다. Docker hub에 올라간 이미지가 아닌 경우에

     

    는 전체 repository URL까지 주어야 한다.

     

     

    우리가 만든 Deployment를 볼 수 있다. Deployment를 만들자마자 배포가 되는 것이고 즉

     

    1. 이 App을 배포할 적절한 노드를 찾는 일

     

    2. 그 후 스케쥴링을 하고

     

    3. 클러스터 설정까지 완료하게 된다.

     

     

    이 App이 어떻게 도는지 보려면 Pods를 통해 가능하다.

     

    Pods는 쿠버 네티스 안에서 동작하는 기본 App이며  private 하고 isolated 한 네트워크이다. 기본적으로 같은 쿠버네티

     

    스 클러스터 안에 있는 다른 pods이나 서비스들끼리는 볼 수 있지만 클러스터 밖에서는 볼 수 없는 것. kubectl을 사

     

    용하면 API endpoint를 사용해서 App과 의사소통할 수 있다.

     

     

     

     

    kubectl을 통해 새로운 터미널에 프락시를 만들면 private network과 의사소통할 수 있는 것 같다.

     

    kubectl proxy를 통해 호스트와 쿠버네티스 클러스터 간에 연결이 된 것이고 

     

     

    API 서버는 자동으로 각각의 Pods의 이름에 기반해서 end Point를 만들어주고 우리는 Pods 이름을 가져와서

     

    환경 변수에 저장하려면 다음과 같이 해주면 된다.

     

     

    이 Pod안에서 동작하고 있는 App에다가 HTTP 요청을 만들려면 역시 프록시를 통해서 가능하다.

     

    프록시는 Terminal2에 동작하고 커맨드들은 Terminal1에서 돌고 있다. 프록시는 여전히 두 번째 탭에서 돌고 있다.

     

    만일 프락시를 끄고 버전 요청 시 거부되는 것을 볼 수 있다.

     

     

     

    정리하자면 프록시를 만들면 프록시 주소가 나오고 이 프록시를 통해서 API 서버에 접속할 수가 있었다. 

     

    그 후 version정보를 보거나 Pods이름을 가져온 다음에 추가적인 작업을 할 수 있을 듯하다.

     

Designed by Tistory.