kubernetes
-
[Kube] Node, Node Pool, Taint, Label개발 2024. 11. 27. 21:46
ACK Serverless 를 사용하는 경우에는 클라우드에서 제공하는 노드를 자동으로 사용하게 된다. 그런데 GPU나 ARM 처럼 특정한 장비를 운용하고 싶은 경우에는 Node 와 Node Pool 이라는 개념을 공부하게 된다.NodeACK 에서 애플리케이션을 실행하는 유닛이다. 물리 장비일수도 있고 VM 일수도 있다. 애플리케이션 실행에 필요한 CPU, 메모리, 네트워크 리소스를 제공한다. Node 에는 kubelet, kube-proxy 같은 쿠버네테스 컴포넌트가 설치되어 있어 일반 컴퓨터처럼 노드 위에 여러개의 컨테이너를 실행할 수 있다. Node Pool동일한 스펙을 가진 노드를 묶어서 관리할 수 있는 툴이다. 클라우드 환경에서 노드를 생성하고 관리하는데 이용되며 일반적으로 클러스터에는 한개 이..
-
kubernetes - readiness, livenesss, startup probe개발 2023. 2. 28. 19:05
kubernetes 에서는 컨테이너 상태를 지속적으로 모니터할 수 있는 기능을 제공한다. readinessProbe, livenessProbe, startupProbe 을 적절하게 활용하면 컨테이너를 자동으로 재실행 시키거나 로드밸런서에서 빼줄 수 있다. readinessProbe 컨테이너가 트래픽을 받을 수 있는지를 알기 위해 사용한다. 일반적으로 Pod은 모든 컨테이너가 준비된 상태 일 때 트래픽을 받을 수 있지만 만약 오래걸리는 작업을 처리하는 경우에는 트래픽을 받는게 부적합할 수 있다. readinessProbe 결과 준비가 되지 않았다고 판단되면 로드밸런서로부터 제거한다 livenessProbe 컨테이너를 언제 다시 시작할지 결정하는 역할을 한다. livenessProbe 조건을 활용하면 데드락..
-
kubernetes - Service개발 2022. 6. 20. 20:52
쿠버네테스 상에선 서비스를 클러스터 네트워크에서 노출되는 Pod의 논리적인 집합으로 정의한다. 클러스터상에 존재하는 Pod은 selector를 통해 연결하고자 하는 고유의 서비스를 설정할 수 있고, 서비스는 연결된 Pod을 End Point로 둔다. 서비스는 고유의 VIP를 갖고 있기 때문에 클러스터 상에선 서비스를 이용해 내부 Pod에 접근할 수 있게 되며 연결된 Pod이 여러개 있는 경우 서비스는 부하 분산도 같이 담당하게 된다. 리버스 프록시의 역할과 로드밸런서의 역할을 한다. 예제 먼저 서비스 오브젝트를 만들어보자. 아래와 같은 yaml 파일을 만들고 kind: Service apiVersion: v1 metadata: name: service-example spec: selector: app.k..
-
Kubernetes - Deployment vs StatefulSet개발 2022. 6. 17. 20:00
Kubernetes는 Pod을 배포하는 방법으로 StatefulSet과 Deployment를 제공한다. Deployment를 주로 사용해본 입장에선 StatefulSet이 Deployment와 어떤 차이가 있는 것인지 이해하는게 난감했다. 공식 문서상에선 Pod의 순서와 특징의 보존을 보장한다는 설명이 있는데 여전히 잘 와닿지 않는 개념이다. Stateful and Stateless Application StatefulSet을 이해하기 위해선 먼저 Stateful Application과 Stateless Application을 먼저 이해하는게 좋을 것 같다. Stateless 인 경우에는 상태를 저장할 필요가 없는 애플리케이션이다. 만약 서버상에 인스턴스가 저장 관련 작업이 모두 외부 클라우드에 업로드한..
-
kubernetes - Configmap 생성하기개발 2022. 6. 10. 20:23
kubernetes에서 configmap 을 생성하는 여러가지 방법이 있는데 여기선 파일을 이용한 두가지 방식을 다뤄보려고 한다. 아래 game.properties 라는 파일을 컨피그맵에 추가한다고 해보자 ➜ ~ cat game.properties enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30% 파일 그 자체를 value로 넣고 싶다면 컨피그 생성 옵션으로 --from-file을 넣는다. 그러면 game.properties 라는 키 값과 파일 내부에 값이 추가가 된다. ➜..
-
kubernetes - Configmap개발 2022. 6. 8. 23:25
쿠버네테스 상에서 Configmap 이라는 오브젝트는 어렵게 생각할 필요 없이 클러스터 내에서 Key-Value 쌍의 데이터를 저장하는데 사용하는 API 오브젝트다. 논리적 컴퓨터에 해당하는 Pod은 같은 클러스터 내의 다른 오브젝트의 볼륨에서 환경변수나 구성 파일을 Key-Value로 지정할 수 있는데 이때 사용하는 Object 가 Configmap 이다. kubectl get configmaps 로 클러스터내에 존재하는 configmap 오브젝트를 검색할 수 있다. ➜ ~ kubectl get configmaps NAME DATA AGE aim-configmap 7 6s data: 내부에 있는 값이 configmap에서 key-value 로 저장하는 값이다. 아래 코드에서 enemies, enemie..
-
Kubernetes 소개개발/클라우드컴퓨팅 2018. 6. 23. 14:30
Kubernetes 공식 홈페이지에서는 Kubernetes를 이렇게 정의한다. "Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications" 직역하면 컨테이너화된 앱들의 배치(deployment), 확장(scaling), 관리(management)를 하는 오픈소스 시스템이라는데 이것만 봐서는 왜 kubernetes가 무슨 역할을 하는지 감이 안온다. 어차피 컨테이너는 Docker에서 생성하고 관리 할 수 있는데 왜 kubernetes가 필요한 걸까? 설명에 앞서 docker만 사용할 때의 위험성을 생각해보자. docker는 특정 Host OS 위에서 사용자..