[k8s] minikube deployment 해보기

<div>elop·2022년 5월 31일
1

replicaSet vs deployment

k8s에는 replicaSet과 deployment라는 개념이있다. 둘 다 서비스에서 여러개의 pod의 가용성을 보장해준다. (pod이 돌다가 뭐 하나 죽으면 살려줌ㅎ)

  • replicaSet : 은 단순히 pod의 갯수 유지에 초점
  • deployment : 더 상위 개념으로, scale up & down하거나 pod의 일부를 중지하는 등 더 여러가지 기능을 제공

둘의 차이점이다. (한줄 요약 : deployment쓰면 됨ㅎ)


Deployment

$ minikube start --driver=docker

일단 yaml파일이 있는 디렉토리에서 minikube를 start해주자.
nginx image, redis image를 가진 3개의 pod이있는 yaml파일이다.

apply해주고, 상태를 확인해보자.

$ kubectl apply -f <filename>.yaml
$ kubectl get all

deployment가 replicaSet의 상위 개념이므로, replicaSet의 정보도 보여준다.

포트를 열어줘야 deployment가 완료된다.

$ kubectl expose deployment deployment-test --type=NodePort --name=my-service

※ service spec

  • ClusterIP : pod끼리 통신이 가능하게 해주는 k8s 기본서비스로, 외부접속 불가
    (kubectl get 할 때 항상 살아있는 그 친구 맞음ㅎ)
  • NodePort : node에 port를 뚫고 외부에서 접속 가능
  • LoadBalancer : NodePort + 로드밸런싱을 지원. 좀 더 일반적인 service

(로드밸런서는 local에서 안돌아감ㅎ)

$ kubectl get all

my-service가 추가된걸 볼 수 있다. 이제 access해보자.


++

minikube의 driver를 docker일 경우 클러스터의 ip에 직접 access할수 없고,
서비스 url에 접속할 때 터널을 따로 생성해주고 접속한다.
(127.0.0.1 ==> tunnel ==> 192.168.xx.x(docker container) 이런식)
아니면 port-forwarding을 해주고 localhost로 확인할 수 도 있다.

$ minikube service my-service --url =>터널링

$ kubectl port-forward svc/my-service 8080:80=>포트포워딩

(hyperv, virtualbox, hyperkit을 쓰는 경우는 그냥 master node ip로 들어가면됨ㅎ)


docker driver로 돌리고 있어서, 포트포워딩 후 127.0.0.1:8080 로 접속했다.

잘 된다.

profile
기록장

0개의 댓글