[K8s]2. 도커, K8s 기본
in etc on Kuberenetes
이 글은 쿠버네티스 인 액션 이라는 책과 검색을 통해서 공부한 것을 정리합니다.
로컬 실습
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