하나의 Pod 내에서 여러개의 Container를 운영할 때,
Docker Compose의 volumes_from
과 같은 기능을 하려면.
예를들어, static 파일을 가진 컨테이너와 Nginx 컨테이너를 운용하는 경우 Nginx에 static 파일을 공유하는 경우에 대한 글.
https://www.mirantis.com/blog/multi-container-pods-and-container-communication-in-kubernetes/
volumes
, emptyDir
사용하면 되긴 하지만, Docker 빌드 중에 생성되는 파일들은 공유할 수 없다.
그래서 container 설정 중 lifecycle.poststart
또는
entrypoint
에 볼륨 연결한 경로에 파일을 복사하거나 생성해야 한다.
복사, 생성이 아닌 Symbolic Linkln -s
는 동작하지 않는다.
즉, 컨테이너 생성 후에 생성되는 파일만 공유된다.
emptyDir
의미 그대로, 각 컨테이너에서 mount한 경로를 완전 새로운 공간으로 분리했기 때문에, 비어있다 로 해석하면 좋을 듯?
ClusterIP (Default)
http://서비스이름:포트
로 접속 가능하다.app-backend
, port를 80
으로 설정했다면 http://app-backend
로 연결할 수 있다.$ kubectl proxy
Starting to serve on 127.0.0.1:8001
$ curl http://localhost:8001/api/v1/proxy/namespaces/default/services/gceme-backend:8080/version
NodePort
$ kubectl get service
포트 정보가 80:32220 되어 있다면, localhost:32220으로 접속할 수 있다.LoadBalancer
localhost:80
으로 접속할 수 있다. 즉, 호스트의 포트를 사용한다.각 서비스별 다이어그램으로 설명되어 있는 글:
https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0
Docker for mac을 사용하는데 상태바에서 주황색 원과 함께 Kubernetes is starting...
라고 뜨면서 호스트에서 접근 할 수 없었다.
Docker for mac을 완전 초기화(Reset -> Reset to factory defaults)하면 running
상태가 되고, 접속할 수 있었다.