전체보기(316)
-
쿠버네티스 입문 - 07 - 파드 스케줄링
파드 스케줄링 기법 노드 셀렉터 : 특정 노드에 스케줄링 되도록 하는 가장 간단한 설정 노드 어피니티 : 파드를 노드의 레이블 기반으로 스케줄링한다. 파드 어피니티 : 파드를 지정한 레이블을 가진 파드들이 있는 노드로 스케줄링한다. 테인트와 톨러레이션 : 테인트가 걸린 노드에 요구하는 톨러레이션이 설정되있지 않은 파드라면 생성하지 못하도록한다. 어피니티가 적용된 파드 샘플 apiVersion: v1 kind: Pod metadata: name: kubernetes-nodeaffinity-pod spec: containers: - name: kubernetes-nodeaffinity-pod image: arisu1000/simple-container-app:latest ports: - containerPo..
2020.04.05 -
쿠버네티스 입문 - 06 - 컨피그맵, 시크릿
컨피그맵 컨테이너에 필요한 환경설정을 분리해서 저장할 수 있다. 클라우드 네이티브 아키텍쳐에서 컨테이너는 템플릿에 맞춰 변하지 않는 자원이여야한다. 그런데 개발용과 프로덕션용 서비스를 다르게 설정해야하는 경우가 생긴다. (ex. DB 설정, 로그 출력 레벨...) 이럴때 컨피그맵을 사용한다. 컨피그맵 샘플 configmap-dev.yml apiVersion: v1 kind: ConfigMap metadata: name: config-dev namespace: default data: DB_URL: localhost DB_USER: myuser DB_PASS: mypass DEBUG_INFO: debug configmap-prod.yml apiVersion: v1 kind: ConfigMap metadat..
2020.04.04 -
쿠버네티스 입문 - 05 - 레이블, 셀렉터, 어노테이션
레이블 레이블은 오브젝트를 구분하는 역할이다. 레이블은 사용자가 임의로 원하는 값을 지정한다. 레이블은 셀렉터와 같이 사용되며 셀렉터는 특정 레이블이 있는 자원을 선택할 때 사용된다. 레이블 덕분에 컨트롤러와 파드가 느슨한 결합을 할 수 있다. 레이블을 사용하면 특정 파드에 문제가 생길 경우 서비스에 영향 없이 해당 파드만을 따로 분리해서 확인할 수있도록 하게 해준다. 접두어 kubernetes/io 가 있는 레이블 키는 쿠버네티스 시스템에서 사용하는 레이블이다. 카나리 배포는 레이블을 이용하여 구현할 수 있다. 레이블 셀렉터 크게 등호 기반 / 집합 기반으로 나뉜다. 등호 기반 셀렉터는 레이블을 가지고 있냐 없냐로 셀렉트한다. 집합 기반 셀렉터는 레이블을 가지고 있냐 없냐 이외에도 특정 문자열이 들어가..
2020.04.04 -
쿠버네티스 입문 - 04 - 인그레스
인그레스 인그레스는 클러스터 외부에서 안에 있는 파드로 접근할 때 사용된다. 인그레스는 클러스터 외부에서 안으로 접근할 때 요청을 어떻게 처리할지 정의해둔 규칙 모음이다. 인그레스 자체는 그냥 규칙을 정의해둔 자원이다. 인그레스 컨트롤러가 실제로 인그레스를 동작시킨다. 쿠버네티스에서 제공하는 공식적인 인그레스 컨트롤러는 ingress-gce, ingress-nginx 이다. 서비스와의 차이점은 주로 L7 영역의 통신을 담당해서 처리한다는 점이다. 인그레스 컨트롤러에서 파드로 직접 접근할 수도 있으므로 중간에 서비스를 생략하면 좀 더 좋은 성능을 낼 수 도 있다. 인그레스 샘플 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test annota..
2020.04.04 -
쿠버네티스 입문 - 03 - 서비스
서비스 서비스는 여기저기 옮겨 다니는 여러개의 파드에 접근할 수 있는 하나의 IP를 제공한다. 본질적으로는 로드밸런서 역할이다. 인그레스와 비교되기도하는데 서비스는 L4 영역이라면 인그레스는 L7영역에서 통신할 때 사용된다. 서비스는 `서비스이름.default.svc.cluster.local` 과같은 FQDN 을 가진다. 서비스 타입 ClusterIP : 기본 서비스 타입이며 클러스터 내부에서만 사용할 수 있다. NodePort : 모든 노드의 지정된 포트는 이 서비스로 연결되게 한다. 클러스터 외부와 파드를 연결하는 가장 간단한 방법이다. LoadBalancer : 로드밸런서 장비를 사용하는 경우 로드밸런서와 파드를 연결하여 클러스터 외부에서 파드에 접근할 수 있게한다. ExternalName : 클러..
2020.04.04 -
쿠버네티스 입문 - 02 - 컨트롤러 6 - 크론잡
크론잡 잡을 시간 기준으로 관리하도록 생성한다. 시간을 지정할 때는 리눅스, 유닉스의 cron 명령어 옵션 형식을 그대로 사용한다. 크론잡 Sample apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello-concurrency spec: schedule: "*/1 * * * *" startingDeadlineSeconds: 600 concurrencyPolicy: Forbid jobTemplate: spec: template: spec: containers: - name: hello image: busybox args: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster; sleep 600..
2020.04.04