k8s에는 replicaSet과 deployment라는 개념이있다. 둘 다 서비스에서 여러개의 pod의 가용성을 보장해준다. (pod이 돌다가 뭐 하나 죽으면 살려줌ㅎ)
둘의 차이점이다. (한줄 요약 : 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
(로드밸런서는 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
로 접속했다.
잘 된다.