본문 바로가기

CI-CD/Kubernetes

(6)
Kubernetes- Service Service란?  동일한 서비스를 제공하는 Pod 그룹의 단일 진입점을 제공한다. 동일한 Label을 가지고 있는 Pod들을 하나의 ip로 묶어서 Virtual Ip를 부여한다. 이렇게 부여된 Virtual Ip가 단일 진입점이 되고 외부 트래픽이 여러개의 파드 중 특정한 파드로 진입하게끔 로드 밸런싱 기능을 제공한다. 예시- Deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: webuispec: replicas: 3 selector: matchLabels: app: webui template: metadata: name: nginx-pod labels: app: webui ..
Kubernetes- Controller control plane의 구성요소control plane(이하 cp)는 다양한 api들을 관리하는 역할을 하며 cp 내부에는 api server, etcd, scheduler, controller가 있다. 그 중 controller는 pod의 개수를 보장해주는 역할을 한다.Replication ControllerapiVersion: v1kind: ReplicationControllermetadata: name: rc-nginx # replication controller 이름spec: replicas: 3 # 보장할 pod 개수 selector: app: webui # 보장할 pod의 라벨 template: metadata: name: nginx-pod ..
Kubernetes- Multi Container Pod 생성 yaml 파일로 pod 생성하기 도커 컴포즈에서도 compose를 위한 yaml 파일로 여러개의 컨테이너를 동시에 관리했듯이, 쿠버네티스에서도 yaml 파일로 여러개의 컨테이너를 하나의 파드에 동시에 생성 및 관리할 수 있다. apiVersion: v1 # Pod의 api version은 v1이다.kind: Pod # 관리하려는 apimetadata: name: multipod # pod 명spec: # Pod의 내용 정의 containers: - name: nginx-container image: nginx:1.14 ports: - containerPort: 80 #..
Kubernetes- Context 쿠버네티스의 설정 확인하기$ kubectl config view 쿠버네티스의 설정 정보를 확인할 수 있다. 해당 명령어의 출력의 디폴트 상태는 아래와 같다.apiVersion: v1clusters:- cluster: certificate-authority-data: DATA+OMITTED server: https://192.168.0.18:6443 name: kubernetescontexts:- context: cluster: kubernetes user: kubernetes-admin name: kubernetes-admin@kubernetescurrent-context: kubernetes-admin@kuberneteskind: Configpreferences: {}users..
Kubernetes- 동작원리 컨트롤 플레인은 API Server를 통해 사용자로 부터 kubectl 명령어를 받아서 명령어 검증을 진행한다. 정상적인 명령어인 경우 해당 명령을 실행하도록 한다. 워커 노드에는 Kubelet 데몬이 존재하며 Kubelet은 컨테이너를 트래킹하여 관리하는 역할을 한다. 만일 kubectl create deployment --image=nginx라는 명령어가 들어온다면, kubelet은 자신의 노드에서 pod를 실행하라는 요청이 들어올 시 해당 요청을 본인의 노드에 있는 컨테이너 엔진(Docker, containerd, runc...) 명령어로 치환하여 컨테이너를 생성한다. Control Plane 구성요소API사용자로부터 kubectl 명령을 받아서 문법을 체크하고 컨트롤 플레인 내부의 다양한 컴포넌트..
Kubernetes- 기본 개념 정리 Pod쿠버네티스의 최소 단위로서 컨테이너(혹은 컨테이너들)를 추상화한다. 일반적으로 하나의 어플리케이션이 파드에 들어가게 되며 해당 pod들은 여러개의 노드에서 동작할 수 있다. 각 포드는 독립적인 private ip address를 가진다. 파드는 죽거나 다시 시작될 수 있는데 기존의 파드가 재시작 되는 경우, 포드의 ip주소는 변경된다. 기존의 다른 앱과 연결되어있던 파드가 재시작 되어 ip 주소가 변경되게 되었다면 일일히 새로운 주소에 맞도록 이를 수정해 주어야한다. 이는 불편한 과정이므로 쿠버네티스에서는 서비스를 제공하여, 이를 보조한다.  Service서비스는 영구적으로 할당된 ip 주소를 가진다. CNIcontainer network interface의 약자로 컨테이너 간의 통신을 지원하는 V..