Devops/Kubernetes25 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 인 액션 2장 도커와 쿠버네티스 첫 걸음 다루는 내용 도커를 사용한 컨테이너 이미지 생성, 실행, 공유 로컬에 단일 노드 쿠버네티스 클러스터 생성 구글 쿠버네티스 엔진에서 쿠버네티스 클러스터 설치 kubectl CLI 클라이언트 설정과 사용 쿠버네티스에서 애플리케이션의 배포와 수평 스케일링 2.1 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기 도커 설치와 “Hello World” 컨테이너 실행하기 쿠버네티스에 배포할 간단한 Node.js 애플리케이션 생성하기 격리된 컨테이너로 실행하기 위해 애플리케이션을 컨테이너 이미지로 패키징하기 이미지 기반의 컨테이너 실행하기 누구든 실행할 수 있게 도커 허브에 이미지 푸시하기 LET ME) busybox는 echo, ls, gizp 등과 같은 표준 UNIX 명령줄 도구들을 합쳐 놓은 단일 실행파일 .. Devops/Kubernetes 2023. 4. 5. Kubernetes 인 액션 1장 쿠버네티스 소개 1장, 쿠버네티스 소개 애플리케이션을 격리하고 컨테이너를 사용해 실행 환경 차이 줄이기 쿠버네티스에서 사용되는 컨테이너와 도커의 이해 쿠버네티스로 개발자와 시스템 관리자의 작업 간소화하기 몇 년 전만 하더라도 대부분의 소프트웨어 애플리케이션은 하나의 프로세스 또는 몇 개의 서버에 분산된 프로세스로 실행되는 거대한 모놀리스 였다. 릴리스 주기가 느리고 비교적 업데이트가 자주 되지 않는다. 시스템을 원활하게 구성, 관리, 유지하는 일이 점점 어려워졌다. 각 구성 요소를 배치할 위치를 파악하는 것은 훨씬 어렵다. 위와 같은 이유로 인하여 쿠버네티스가 등장하게 되었다. 쿠버네티스는 하드웨어 인프라를 추상화하고 데이터 센터 전체를 하나의 거대한 컴퓨팅 리소스로 제공한다. 1.1.1 모놀리스 애플리케이션에서 마이크.. Devops/Kubernetes 2023. 3. 21. Kubernetes Helm 문제 해결 Rollme https://newbiecs.tistory.com/355 Kubernetes Helm pullPolicy Always Not working 안녕하세요 오늘은 질문 & 정리 개념으로 글을 작성해보려고 합니다. 사용하고 있는 서비스에 대해 먼저 정리하겠습니다. CI(Continuous Integration 지속적 통합) Github Action AWS ECR / CD(Continuous Delive.. newbiecs.tistory.com 안녕하세요. 이전 게시글에서는 Helm 에서 업데이트를 했음에도 배포가 안되는 문제가 있었습니다. 배포가 안되는 문제는 내부 코드의 변화가 있었으나 Helm은 Kubernetes 의 패키지 매니저 라는 역할을 하고 있어서 'Pod를 2개에서 3개를 띄워라' 는 식으로 진.. Devops/Kubernetes 2022. 8. 9. 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. Minikube에서 Local Docker의 이미지가 안받아 질 때 발단 로컬에서 빌드한 Docker image를 Minikube 환경에서 Helm 차트를 이용하여 Kubernetes 파드를 생성하려고 하였으나 docker login을 하라는 오류와 함께 파드가 이미지를 Pull 받지 못하였습니다. 해결 아래 링크를 통해 해결하였으며 문제는 minikube start 시에 --driver docker 라는 옵션을 주어 스타트하는데 여기서 driver docker가 네임스페이스가 다른(?) 도커여서 내가 업로드한 이미지가 여기에는 존재하지 않았습니다. eval $(minikube docker-env) docker build -t my-image . imagePullPolicy 를 Never로 설정해줍니다. https://stackoverflow.com/questions/4.. Devops/Kubernetes 2021. 2. 18. Kubernetes - Controller (DaemonSet, Job, CronJob) DeamonSet 노드들이 있고, 자원이 다르게 남아 있는 상태에서 ReplicaSet을 이용하여 팟을 생성하게 되면 노드들 중에서 자원이 여유로운 노드에 팟을 생성하게 됩니다. 자원이 별로 없다면 팟을 배치를 안할 수도 있습니다. 데몬셋은 자원 상태와 상관없이 모든 노드에 한 개의 팟을 생성하게 되어 있습니다. 자원이 부족한 노드에도 생성할 정도면 정말 필요한 기능을 가진 팟인가 봅니다. 데몬셋으로 생성하는 것들은 대표적으로 1. 성능 수집(Prometheus) 2. 로그 수집(Fluentd) 3. Storage(GlusterFS) selector와 template가 있어서 모든 노드에 템플릿으로 팟을 만들고, 셀렉터와 라벨로 데몬셋과 연결됩니다. nodeSelector로 특정 노드의 지정한 라벨에만 .. Devops/Kubernetes 2020. 5. 27. 이전 1 2 3 다음 💲 추천 글