[K8s]2. 도커, K8s 기본

[K8s]2. 도커, K8s 기본


이 글은 쿠버네티스 인 액션 이라는 책과 검색을 통해서 공부한 것을 정리합니다.

로컬 실습

node.js 연습용 도커 이미지 띄우기

  • minikube/app.jp
  • node.js의 app.js 단일 파일 생성.
  • app.js 내용
const http = require('http');
const os = require('os');

console.log("Kubia server starting...");

var handler = function(request, response) {
    console.log("Received request from " + request.connection.remoteAddress);
    response.writeHead(200);
    response.end("You've hit " + os.hostname() + "\n");
};

var www = http.createServer(handler);
www.listen(8080);
  • os.hostname()은 서버의 실제 호스트 이름.

  • minikube/Dockerfile

    FROM node:7
    ADD app.js /app.js
    ENTRYPOINT ["node", "app.js"]
    

컨테이너 이미지 만들기

  • $ docker build -t kubia .

컨테이너 이미지 실행

-$ docker run --name kubia-container -p 8080:8080 -d kubia

확인

  • $ curl localhost:8080 You've hit f3168235c4ed

미니큐브

  • 설치: $ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && chmod +x minikube

  • 시작: $ minikube start
  • 정지: $ minikube stop
  • 삭제: $ minikube delete

Kubectl 설치

  • 설치: $ curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"

  • kubectl 바이너리를 실행 가능하게 만듭니다. $ chmod +x ./kubectl

  • 바이너리를 PATH로 옮깁니다. $ sudo mv ./kubectl /usr/local/bin/kubectl

  • 버전확인 $ kubectl version

  • 클러스터 정보 확인 $ kubectl cluster-info

  • 클러스터 노드 목록 확인 $ kubectl get nodes

NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   10m   v1.10.0

kubectl로 클러스터와 상호작용

  • 로컬 미니큐브로 실습하는 상황과는 조금 다르지만, 기본적인 상호작용 방법에 대해서 아래 그림을 참고한다.

각 노드들은 도커, kubelet, kube-proxy를 실행하고, 사용자는 쿠버네티스 클러스터 외부에서 kubectl 명령행 클라이언트를 이용해서 마스터 노드에 REST 호출해 상호작용을 함.

다시 실습

배포(deployment) 만들기

  • $ kubectl create deployment hello-node --image=kubia

배포(deployment) 확인

  • $ kubectl get deployments
NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-node   1         1         1            0           14s

Pod 확인

  • $ kubectl get pods