-
kubernetes Tutorials 2. kubectl을 사용해서 배포하기DevOps/Kubernetes 2020. 4. 27. 21:39
목표 : kubectl을 통해 App을 쿠버네티스에 배포해보자
쿠버네티스 배포
일단 동작하는 쿠버 네티스 클러스터가 있으면 컨테이너화 App을 그 위에다 배포할 수 있다. 그렇게 하려면
쿠버 네티스 배포 설정을 만들어야 한다. 배포 설정은 쿠버 네티스가 어떻게 그 App의 인스턴스들을 만들고 갱신해야
하는지를 알려주는 역할을 한다. 따라서 일단 Deployment를 만들면 쿠버네티스 마스터가 App의 인스턴스들을 각각의
노드에 스케쥴링을 하는 방식이다.
App의 인스턴스가 만들어지면 쿠버네티스 Deployment 컨트롤러는 지속적으로 그 인스턴스를 모니터링한다. 만약 노
드가 다운되거나 삭제되면 컨트롤러가 다른 노드에다 배포하거나 하는 방식. 그렇게 함으로써 self-healing 방식을 제공
한다.
첫 번째 App을 컨테이너에 배포하기
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이름을 가져온 다음에 추가적인 작업을 할 수 있을 듯하다.
'DevOps > Kubernetes' 카테고리의 다른 글
clusterRole, clusterRoleBinding (0) 2021.10.29 Kubernetes 인그레스 요청 흐름 (0) 2021.07.19 kubernetes Tutorials 4. 서비스를 사용해서 App을 공개하기 (0) 2020.05.06 kubernetes Tutorials 3. Pods 와 Nodes (0) 2020.05.01 kubernetes Tutorials 1. 미니큐브 사용해보기 (0) 2020.04.22