본문 바로가기

쿠버네티스

(15)
[k8s] 디플로이먼트(Deployment) 디플로이먼트 디플로이먼트(Deployment)는 쿠버네티스에서 상태가 없는(stateless) 앱을 배포할 때 사용하는 가장 기본적인 컨트롤러입니다. 쿠버네티스가 처음 등장했을 때는 Replication Controller에서 앱을 배포했는데 최근에는 디플로이먼트를 기본적적인 앱 배포에 사용합니다. Stateless Application이란? 클라이언트와 서버의 연결 구조에서 불필요한 상태의 반영을 위한 데이터나 리소스가 사용되지 않는 형태의 서비스 구조 파드와 레플리카셋은 '이력'이라는 개념이 없기 때문에 릴리스 후에 변경이 없는 애플리케이션을 관리하는데 적합합니다. 디플로이먼트는 이름처럼 배포 기능을 세분화 한 것으로 파드와 레플리카셋에 버전 관리 기능을 추가한 것이라고 생각하면 이해가 쉽습니다. 단..
[k8s] 매니페스트 파일 작성 방법 매니페스트 파일 쿠버네티스에서는 클러스터 안에서 움직이는 컨테이너 애플리케이션이나 네트워크 설정, 배치 실행을 하는 잡 등과 같은 리소스를 작성합니다. 이와 같은 구체적인 설정 정보를 파일로 관리하는데, 이것이 매니페스트 파일(manifest file)입니다. 예를 들어 'Nginx가 움직이는 컨테이너 이미지를 바탕으로 한 웹 프론트 서버를 클러스터 안에서 10개 실행' 하는 경우 다음과 같이 매니페스트 파일을 작성합니다. #webserver.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: webserver spec: replicas: 10 selector: matchLabels: app: webfront template: metadata: labe..
[k8s] Service - (ClusterIP, NodePort, LoadBalancer) 쿠버네티스 클러스터 안에서 실행된 Pod 대해 액세스할 때는 서비스(Service)를 정의합니다. 서비스는 쿠버네티스의 네트워크를 관리하는 것으로, 몇 가지 종류가 있습니다. Cluster IP 서비스에 의해 할당되는 IP 주소에는 Cluster IP와 External IP가 있습니다. Cluster IP는 클러스터 안의 Pod끼리 통신하기 위한 Private IP이며 External IP는 클러스터 외부에 공개하는 IP 주소입니다. 클러스터 내부에서만 접근할 수 있으며, 외부에서 접근이 불가능하므로 Port Forwarding이나 Proxy를 통해 접근해야합니다.또한 서비스 타입을 별도로 지정하지 않으면 ClusterIP가 Default로 설정됩니다. CluterIP 예시 apiVersion: v1 k..
[k8s] Pod의 특징 (Container, Label, NodeSelector) 1. Container 쿠버네티스에서는 하나의 독립적인 서비스를 제공할 수 있는 컨테이너들을 모아서 Pod로 관리합니다. 예를 들어 Pod안에는 애플리케이션 서버용 도커 컨테이너와 프록시 서버용 컨테이너 등과 관련된 것들을 모아서 관리할 수 있습니다. 쿠버네티스에서는 이 Pod가 애플리케이션의 디플로이 단위가 되며, 포드 단위로 컨테이너의 작성, 시작, 정지, 삭제 등과 같은 조작을 합니다. 특징으로는 다음과 같은 내용들이 있습니다. 동일한 Pod의 컨테이너는 반드시 동일한 노드 상에 동시에 디플로이 된다. 컨테이너는 서비스가 연결될 수 있도록 Port를 가지고 있는데, 같은 Pod안에서 Port는 중복될 수 없습니다. Pod안의 여러 컨테이너에서 가상 NIC(Private IP)를 공유하는 구성을 취하..
[k8s] 스케쥴링과 서비스 디스커버리 기존의 웹 3계층 시스템에서 프론트 서버, 업무 서버, DB 서버 등 기능별로 다른 서버에서 처리를 하는 것이 일반적이었습니다. 때문에 애플리케이션을 어디에 배치할지를 미리 정해 두고 거기에 플로이하여 각 기능을 상호 호출하는 아키텍처로 되어있었습니다. 따라서 애플리케이션 개발자와 인프라 관리자는 둘 다 '어디에서 어떤 애플리케이션이 움직이는지'를 알고 있었습니다. 하지만 쿠버네티스에서는 애플리케이션이 디플로이되는 위치가 쿠버네티스에 의해 정해집니다. 한 애플리케이션이 디플로이되면 쿠버네티스가 클러스터 상태에서 비어 있는 위치를 찾아내서 자동으로 배치합니다. 즉 지금까지 사람이 해 왔떤 작업을 쿠버네티스가 해 준다는 것입니다. 그래서 '애플리케이션을 적절한 곳에 디플로이 하고', '디플로이된 애플리케이션..