4. kubernetes 설치하기 – 서비스 구성하기


우리는 지금까지 kubernetes를 기본으로 구성하고 Dashboard까지 설치했다.
이제 서비스를 하나 만들어보자

Kubernetes에서 서비스 오픈 과정

보통 kubernetes에서 서비스를 오픈하는 과정은 아래

  1. Pod 생성
  2. Pod를 관리할 Deployment 생성
  3. Deployment로 묶어진 Pod를 Loadbalancer로 묶는 Service 구성
  4. 추가로 Loadbalancer가 Private IP Address로 구성되어 있으며 이를 Ingress 구성을 통해서 Public IP Address 서비스할 수 있도록 설정하는 과정

지금 진행할 과정은 1-3번 과정까지 진행해본다.

Kubernetes에 서비스용 pod 생성

pod를 생성할 때, Deployment와 연계를 해서 구성할 수 있다.
Google에서 제공하는 hello-world Docker image를 통해서 서비스를 구성해본다

이미지 주소 : https://gcr.io/google-samples/node-hello:1.0

아래 명령어를 사용하면 위의 이미지를 가지고 hello-world라는 이름의 pod가 2개 생성되고, 8080 port로 서비스를 한다.

“run” 명령어는 DEPRECATED될 것이니 차후에는 “create” 명령어를 사용하라는군요.

kubectl 명령어로 pod를 확인해보면 아래와 같이 2개의 pod가 생성된 것을 확인할 수 있습니다.

그리고 같이 생성된 deployment를 확인해보면 아래와 같다.

이를 Dashboard에서 확인하면 아래와 같다.

아래와 같이 Deployment, Pod, replica set이 구성되어 있는 것을 확인할 수 있다.

 

Kubernetes에 pod 검증

실행했던 명령어로 pod가 정상적으로 동작하는 것을 확인했다.
그러면 이제 좀 더 자세한 정보를 토대로 생성된 pod가 정상동작하는지 검증해보자

“–output=wide”, “-o wide” 명령어를 사용해서 자세한 정보를 획득한다.

“hello-world-596fdfd6c4-sf2pb” 이름의 pod는 ubuntu16-202 node에서 실행되고 있고, “192.168.2.5” IP Address를 가진다.
즉 “http://192.168.2.5:8080″을 호출하면 응답이 발생해야한다.

ubuntu16-202 node에서 호출해본다.

잘된다. 추가로 그 이외의 node나 master에서도 위와 같이 올바로 동작해야한다.

Kubernetes에 Service 연결

위 IP를 항상 기억해서 서비스하는 것은 어렵다.
알려진 사실이지만 Docker container는 고정 IP를 사용하지 않기 때문(강제로 할당하면 가능하지만)에 자주 바뀐다.
그러면 나중에 Pod(Docker container)를 관리해주는 것이 문제다.

이를 관리하기 위해서 Service가 있으며,  hello-word라는 이름으로 Deployment된 것을 service와 연동해서 생성해주는
명령어가 아래와 같다.

이전에 hello-world Port를 기준으로 오픈하는 방식인데, 이는 hello-world라는 deployment 내용을 좀 살펴볼 필요가 있다.
아래 내용은 필요 Service 생성 시 필요 없는 정보는 모두 제외하고 필요한 부분만 요약했다.

필요한 부분이 “Name”, “Port”를 가지고 Service를 생성해본다.
service는 “expose”를 통해서 생성한다.

명령어로 확인해보면 아래와 같이 확인이 된다.

Dashboard로 확인해보면 아래와 같이 서비스가 정상적으로 생성된 것을 확인할 수 있다.

그러면 “10.102.56.109” IP Address로 서비스가 정상적으로 되는지 확인해본다.

Great!!

결론

kubernetes가 의존성을 많아 탄다. 그래서 정상적인 동작을 만들기 위해 이런 저런 조합의 설치를 많이 진행했고,
시스템 환경(BareMetal, Public Cloud… ETC)에 따라 구성법이 달라질 수 있다는 점을 참고해야한다.