Kubernetes13 Kubernetes 인 액션 8장 애플리케이션에서 파드 메타데이터와 그 외 리소스에 액세스하기 다루는 내용 컨테이너에 정보를 전달하기 위해 Downward API 사용 쿠버네티스 REST API 살펴보기 인증과 서버 검증을 kubectl proxy 에 맡기기 컨테이너 내에서 API 서버에 접근하기 앰배서더 컨테이너 패턴을 이해 쿠버네티스 클라이언트 라이브러리 사용 특정 파드와 컨테이너 메타데이터를 컨테이너로 전달하는 방법과 컨테이너 내에서 실행 중인 애플리케이션이 쿠버네티스 API 서버와 통신해 클러스터에 배포된 리소스의 정보를 얻는 것이 얼마나 쉬운지를, 더 나아가 이런 리소스를 생성하거나 수정하는 방법을 다룰 것이다. 8.1 Downward API 로 메타데이터 전달 파드의 IP, 호스트 노드 이름 또는 파드 자체의 이름과 같이 실행 시점까지 알려지지 않은 데이터의 경우는 어떨까? 파드의 레이.. Devops/Kubernetes 2023. 6. 20. Kubernetes 인 액션 7장 컨피그맵과 시크릿: 애플리케이션 설정 다루는 내용 컨테이너의 주 프로세스 변경 애플리케이션에 명령줄 옵션 전달 애플리케이션에 노출되는 환경변수 설정 컨피그맵으로 애플리케이션 설정 시크릿으로 민감한 정보 전달 7.1 컨테이너화된 애플리케이션 설정 왜 환경변수를 사용하는 것이 컨테이너에서 널리 사용될까? 도커 컨테이너 내부에 있는 설정 파일을 사용하는 것은 약간 까다롭다. 설정 파일을 컨테이너 이미지 안에 포함하거나 파일이 포함돼 있는 볼륨을 컨테이너에 마운트해야 하기 때문이다. 설정 데이터를 저장하는 쿠버네티스 리소스를 컨피그맵(ConfigMap) 이라고 한다. 컨테이너에 명령줄 인수 전달 각 컨테이너를 위한 사용자 정의 환경변수 지정 특수한 유형의 볼륨을 통해 설정 파일을 컨테이너에 마운트 자격증명, 개인 암호화 키, 보안을 유지해야 하는 .. Devops/Kubernetes 2023. 6. 19. Kubernetes 인 액션 6장 볼륨: 컨테이너에 디스크 스토리지 연결 다루는 내용 다중 컨테이너 파드 생성 컨테이너 간 디스크 스토리지를 공유하기 위한 볼륨 생성 파드 내부에 깃 리포지터리 사용 파드에 GCE 퍼시스턴트 디스크와 같은 퍼시스턴트 스토리지 연결 사전 프로비저닝된 퍼시스턴트 스토리지 퍼시스턴트 스토리지의 동적 프로비저닝 파드는 내부에 프로세스가 실행되고 CPU, RAM, 네트워크 인터페이스 등의 리소스를 공유하는 논리적 호스트와 유사하다고 했다. 프로세스가 디스크 또한 공유할 수 있을 것이라 예상하겠지만 사실은 그렇지 않다. 파드 내부의 각 컨테이너는 고유하게 분리된 파일시스템을 가진다 파일시스템은 컨테이너 이미지에서 제공되기 때문이다. 6.1 볼륨 소개 Kubernetes Volume은 파드의 구성 요소로 컨테이너와 동일하게 파드 스펙에서 정의된다. Volu.. Devops/Kubernetes 2023. 5. 28. Kubernetes 인 액션 5장 서비스: 클라이언트가 파드를 검색하고 통신을 가능하게 함 참고 NodePort vs LoadBalancer vs Ingress 다루는 내용 단일 주소로 파드를 노출하는 서비스 리소스 만들기 클러스터 안에서 서비스 검색 외부 클라이언트에 서비스 노출 클러스터 내에서 외부 서비스 접속 파드가 서비스할 준비가 됐는지 제어하는 방법 서비스 문제 해결 파드는 일시적이다. 파드가 다른 파드를 위한 공간을 확보하려고 노드에서 제거하거나, 누군가 파드 수를 줄이거나, 클러스터 노드의 장애로 언제든 다른 노드로 이동할 수 있다. Kubernetes는 노드에 파드를 스케줄링 한 후 파드가 시작되기 바로 전에 파드의 IP 주소를 할당한다. 따라서 클라이언트는 서버인 파드의 IP 주소를 미리 알 수 없다. 수평 스케일링은 여러 파드가 동일한 서비스를 제공할 수 있음을 의미한다. 각.. Devops/Kubernetes 2023. 5. 24. Kubernetes 인 액션 4장 래플리케이션과 그 밖의 컨트롤러: 관리되는 파드 배포 다루는 내용 동일한 파드의 여러 인스턴스 실행 노드 장애 시 자동으로 파드 재스케줄링 파드의 수평 스케줄링 각 클러스터 노드에서 시스템 수준의 파드 실행 배치 잡 실행 잡을 주기적 또는 한 번만 실행하도록 스케줄링 노드 전체에 장애가 발생하면 노드에 있는 파드는 유실되며, 이전에 언급한 래플리케이션컨트롤러나 그와 유사한 기능을 하는 컨트롤러가 해당 파드를 관리하지 않는 한 새로운 파드로 대체되지 않는다. 4. 1 파드를 안정적으로 유지하기 파드가 노드에 스케줄링되는 즉시, 해당 노드의 kubelet은 파드의 컨테이너를 실행하고 파드가 존재하는 한 컨테이너가 계속 실행되도록 할 것이다. 컨테이너의 주 프로세스에 크래시가 발생하면 kubelet이 컨테이너를 다시 시작한다. 4.1.1 liveness prob.. Devops/Kubernetes 2023. 4. 22. Kubernetes 인 액션 3장 파드: 쿠버네티스에서 컨테이너 실행 다루는 내용 파드의 생성, 실행, 정지 파드와 다른 리소스를 레이블로 조직화하기 특정 레이블을 가진 모든 파드에서 작업 수행 네임스페이스를 사용해 파드를 겹치지 않는 그룹으로 나누기 특정한 형식을 가진 워커 노드에 파드 배치 3. 1 파드 소개 파드의 핵심 사항은 파드가 여러 컨테이너를 가지고 있을 경우에, 모든 컨테이너는 항상 하나의 워커 노드에서 실행되며 여러 워커 노드에 걸쳐 실행되지 않는다. 3.1.1 파드가 필요한 이유 여러 프로세스를 실행하는 단일 컨테이너보다 다중 컨테이너가 나은 이유 IPC 혹은 로컬 파일을 통해 통신하는 여러 프로세스로 구성돼, 같은 노드에서 실행해야 하는 애플리케이션을 상상해보자.쿠버네티스에서 프로세스를 항상 컨테이너에서 실행시키고, 이 각 컨테이너는 격리된 머신과 비슷.. Devops/Kubernetes 2023. 4. 9. Kubernetes 인 액션 1장 쿠버네티스 소개 1장, 쿠버네티스 소개 애플리케이션을 격리하고 컨테이너를 사용해 실행 환경 차이 줄이기 쿠버네티스에서 사용되는 컨테이너와 도커의 이해 쿠버네티스로 개발자와 시스템 관리자의 작업 간소화하기 몇 년 전만 하더라도 대부분의 소프트웨어 애플리케이션은 하나의 프로세스 또는 몇 개의 서버에 분산된 프로세스로 실행되는 거대한 모놀리스 였다. 릴리스 주기가 느리고 비교적 업데이트가 자주 되지 않는다. 시스템을 원활하게 구성, 관리, 유지하는 일이 점점 어려워졌다. 각 구성 요소를 배치할 위치를 파악하는 것은 훨씬 어렵다. 위와 같은 이유로 인하여 쿠버네티스가 등장하게 되었다. 쿠버네티스는 하드웨어 인프라를 추상화하고 데이터 센터 전체를 하나의 거대한 컴퓨팅 리소스로 제공한다. 1.1.1 모놀리스 애플리케이션에서 마이크.. Devops/Kubernetes 2023. 3. 21. Save to AWS EFS(PVC) as AWS Lambda 안녕하세요. 저번 시간에는 'Python argparse, S3 folder upload' 까지 알아봤습니다. 오늘 해볼 것은 S3에 올라온 파일을 Lambda를 이용하여 AWS EFS(Elastic File System)에 저장하는 것 입니다. 그러면 왜 EFS에 저장을 해야 될까요? 바로 Kubernetes 에서 파일 시스템을 이용하여 폴더를 사용할 수 있기 때문입니다. 링크 여기에 EFS 관련 설명이 자세히 나와있습니다. 중요한 것들을 뽑아보자면 1. AWS EFS는 NFSv4 프로토콜을 준수하는 AWS 서버리스 파일 시스템 상품이다. 2. 영구적으로 파일을 저장할 수 있다는 공통점을 가진 AWS S3와 다른 점은 인스턴스에 네이티브한 하나의 파일 시스템으로 작동한다는 것이다. 3. 수천대 이상의 .. Language/Python 2022. 8. 22. Kubernetes Helm pullPolicy Always Not working 안녕하세요 오늘은 질문 & 정리 개념으로 글을 작성해보려고 합니다. 사용하고 있는 서비스에 대해 먼저 정리하겠습니다. CI(Continuous Integration 지속적 통합) Github Action AWS ECR / CD(Continuous Delivery 지속적 전달)Helm, Kubernetes 좀 더 설명이 필요하겠죠?! Github CI로 ECR(Elastic Container Registry)로 이미지를 최신화하면, Helm(Kubernetes 패키지 매니저)으로 ECR의 이미지를 가져와 배포를 진행하고 있습니다. 패키지 매니저이기 때문에 변경사항이 있으면 파드를 재시작하거나 더 깊은 개념은 나중에 알아보겠습니다. 현재 저의 질문사항은 CI, CD가 정상적으로 돌았고, 코드의 수정이 분명히.. Devops/Kubernetes 2022. 8. 1. Kuberntes - Monitoring에 대해 알아보자 (Prometheus, Grafana) [실습환경 minikube] Kubernetes 환경에서 수많은 클러스터와 파드들이 정상적으로 동작하는지 좀비 프로세스는 없는지 등을 확인하려면 우리는 모니터링 툴의 도움을 받아야 합니다. 수많은 모니터링 툴 중 오늘은 Prometheus(시계열 DB), NodeExporter(메트릭 수집 Agent), Grafana(모니터링 시각화 오픈소스)의 개념과 사용법에 대해 알아보도록 하겠습니다. Prometheus Prometheus는 이벤트 모니터링 및 경고에 사용되는 무료 소프트웨어 응용 프로그램입니다. 유연한 쿼리 및 실시간 경고와 함께 HTTP 풀 모델을 사용하여 구축 된 시계열 데이터베이스에 실시간 메트릭을 기록합니다. Prometheus의 동작과정은 node-exporter는 노드 별로 사용중인 매트릭(CPU, Memory, .. Devops 2021. 3. 7. Argo Workflow 란 무엇인가? - 1 목차 들어가기 전에 Argo Workflow란 무엇인가? Kubernetes란 Installation minikube kubectl Argo Workflow 실습 hello-world Dag & Step 들어가기 전에 Python&Django 주니어 개발자인 글쓴이가 구축해본 인프라 경험이라곤 AWS 사용 경험과 CI를 구축해본 경험 밖에 없는 상태에서 회사에서 새로운 프로젝트를 맡으면서 인프라 서브를 담당하게 되었고, Docker의 깊은 이해도 없는 상태에서 Kubernetes, Helm, Argo Workflow를 사용해야 되는 상황이 닥쳤고, 오늘은 그 중에서 Argo Workflow와 minikube를 사용한 간단한 실습을 진행하고 Argo Workflow에 대해 알아보도록 하겠습니다. 본격적으로.. Devops 2021. 1. 9. Kubernetes IBM - Sai Vennam '쿠버네티스란?' Kubernetes Master Cluster - API-Server Worker Node - kubelet - Container - Pod yaml kind: (Pod, Deployment, Service, ConfigMap, ReplicaSet) image: (Docker Hub, AWS ECR . . . PATH) labels: key: value ex) kind: Pod image: 2044smile/hello-node labels: a: f 사용자는 kubectl 명령을 이용하여 yaml(명세가 적힌 파일)을 생성하게 됩니다. kubectl -> API-Server -> Worker Node 안에 명세에 적힌 내용을 토대로 오브젝트를 생성합니다. nodeSelector를 이용하여 원하는 노드에 .. Devops/Kubernetes 2020. 5. 20. 이전 1 2 다음