Kubernetes 썸네일형 리스트형 쿠버네티스 서비스 기능 세션 어피니티 서비스에서는 세션 어피니티(Session Affinity)를 활성화할 수 있다. ClusterIP 서비스에서 활성화한 경우 포드에서 ClusterIP로 보내진 트래픽은 서비스에 연결된 어느 하나의 포드에 전송된 후 다음 트래픽도 계속 같은 포드에 보내진다. 백엔드 단에서 세션을 사용하는 경우 유용한 부가 기능이다. 세션 어피니티에 대한 설정은 spec.sessionAffinity와 spec.sessionAffinityConfig를 사용한다. 이 세션 어피니티의 기능은 각 쿠버네티스 노드에 iptables로 구현되어 있으며 spec.sessionAffinity 기본값은 None이다. apiVersion: v1 kind: Service metadata: name: sample-sesison-a.. 더보기 쿠버네티스 클러스터 네트워크와 서비스 쿠버네티스 클러스터 네트워크 쿠버네티스 포드에서 설명했듯이 같은 포드의 컨테이너는 localhost로 서로 통신을 할 수 있다. 하지만 다른 포드에 있는 컨테이너와 통시하려면 포드의 IP주소로 통신한다. 쿠버네티스 클러스터는 클러스터를 생성하면 노드상에 포드를 위한 내부 네트워크가 자동으로 구성된다. 내부 네트워크 구성은 사용할 CNI(Container Network Interface)라는 플러그형 모듈 구현에 따라 다르지만 기본적으로 노드별로 다른 네트워크 세그먼트를 구성하여 노드 간 통신이 가능하게 구성한다. 이러한 내부 네트워크가 자동으로 구성되기 때문에 파드는 서비스를 사용하지 않고도 포드 간 통신이 가능한다. 하지만 서비스를 사용하게 되면 포드에 트래픽을 로드 밸런싱 시킬 수 있고 서비스 디스커.. 더보기 쿠버네티스 스테이트풀셋 스테이트풀셋(StatefulSet)은 데몬셋과 마찬기지로 레플리카셋의 특수한 형태라고 할 수 있는 리소스다. 데이터베이스 등과 같은 스테이트풀(stateful)한 워크로드에 사용하기 위한 리소스이다. 레플리카셋과의 주된 차이점 생성되는 포드명의 접미사는 숫자 인덱스가 부여 된것이다 포드명이 바뀌지 않는다 데이터를 영구적으로 저장하기 위한 구조로 되어 있다 영구 볼륨(PersistentVolume)을 사용하는 경우에는 포드를 재기동할 때 같은 디스크를 사용하여 다시 생성한다 더보기 쿠버네티스 포드 디자인 패턴 및 포드 설계 포드 디자인 패턴 포드 디자인 패턴에는 크게 세 종류가 있다. 종류 개요 사이드카 패턴(sidecar pattern) 메인 컨테이너에 기능을 추가한다 앰배서더 패턴(ambassador pattern) 외부 시스템과의 통신을 중계한다 어댑터 패턴(adapter pattern) 외부 접속을 위한 인터페이스를 제공한다 사이드카 패턴 사이드카 패턴은 메인 컨테이너 외에 보조적인 기능을 추가하는 서브 컨테이너를 포함하는 패턴이다 예를 들어 특정 변경 사항을 감지하여 동적으로 설정을 변경하는 컨테이너, 깃 저장소와 로컬 스토리지를 동기화하는 컨테이너, 애플리케이션의 로그 파일을 오브젝트 스토리지로 전송하는 컨테이너 등등 추가적이고 독립적으로 운영될 수 있는 서브 컨테이너를 사이드카로 이용하여 포드를 구성한다. 앰배.. 더보기 쿠버네티스 잡(Job) 및 크론잡(CronJob) 잡(Job) 쿠버네티스의 포드가 작동하는 원리는 지속적인 애플리케이션 실행이다. 만약에 컨테이너가 종료가 되는 애플리케이션이 실행이 된다고 하면 종료 후에 쿠버네티스는 자동으로 그 해당 컨테이너를 다시 실행시킨다. 배치 프로그램과 같은 한번 실행되면 종료가 되야하는 프로그램을 담고 있는 컨테이너를 관리하는 오브젝트가 쿠버네티스의 잡(Job)이다. Batch 처리에 적합한 컨트롤러로 Pod의 성공적인 완료를 보장한다. 잡은 비정상시 종료 후 다시 실행하고 정상적으로 종료 시 완료 처리를 한다. apiVersion: batch/v1 kind: Job metadata: name: sample-job spec: template: spec: completions: 1 parallelism: 1 backoffLim.. 더보기 쿠버네티스 데몬셋 쿠버네티스 데몬셋(DaemonSets) 데몬셋은 쿠버네티스의 모든 노드에 동일한 포드를 하나씩 생성하는 오브젝트이다. 데몬셋은 로깅, 모니터링, 네트워킹 등을 위한 에이전트를 각 노드에 생성해야 할 때 유용하게 사용할 수 있다. 예를 들어 쿠버네티스 네트워킹을 위한 kube-proxy 컴포넌트나 weavenet 등의 네트워크 플러그인은 kube-system 네임스페이스에서 데몬셋으로 실행되고 있다. apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset-example spec: selector: matchLabels: name: my-daemonset-example template: metadata: labels: name: my-daemonset-.. 더보기 쿠버네티스 컨트롤러 레플리카 셋(Replica Set) 쿠버네티스의 레플리카셋은 정해진 수의 동일한 포드가 항상 실행되도록 관리한다. 마스터 노드의 kube-scheduler가 각 노드의 자원과 현재 상태에 맞춰서 적절하게 분배된다. 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성한다. 따라서 동일한 포드를 안정적으로 여러 개 실행할 수 있고 워커 노드에 장애가 생기더라도 정해진 개수의 포드를 유지할 수 있다. 처음에는 replication controller라는 오브젝트가 레플리케이션 업무를 담당했지만 deprecated 됐고 replicaset이 사용이 된다. 이 둘의 제일 큰 차이는 추후 설명할 레이블 셀렉터에 있다. 레클리카셋 사용하기 apiVersion: apps/v1 kind: R.. 더보기 쿠버네티스 포드 쿠버네티스는 모든 리소스가 오브젝트 형태로 관리된다. 예를 들어 컨테이너의 집합인 포드, 컨트롤러, 사용자 혹은 노드가 쿠버네티스의 오브젝트로 생성이되서 관리가 된다. 쿠버네티스의 오브젝트에는 어떤 것이 있는지 보려면 kubectl api-resources 명령어를 사용해 확인할 수 있다. apiversion 은 yaml 파일 생성할 때 각 오브젝트마다 지정해야 할 apiversion이 있고 나중에 다룰 네임스페이스 개념을 포함하는지에 대한 여부 등을 확인할 수 있다. 포드(pod) 쿠버네티스 오브젝트 중 가장 작고 기본 단위는 포드이다. 포드는 1개 이상의 컨테이너로 구성된 컨테이너의 집합이며 같은 포드에 속한 컨테이너들은 동일한 네트워크를 가지고 있다. 도커 네트워크에서 컨테이너 네트워크의 개념과 흡.. 더보기 이전 1 2 3 다음