전체 글 90

Kubelet 설정 파일

kubelet config file/usr/lib/systemd/system/kubelet.service.d/10-kubeamd.conf해당 파일은 kubeadm, kubelet 1.11 이상에서 동작하는 drop-in 파일입니다. 기존의 서비스 유닛 파일을 변경하지 않고 추가적인 설정을 덧붙이는 유형의 파일입니다. systemd가 kubelet을 실행할 때 적용할 플래그(--config, --cgroup-driver), 시스템 환경 변수(Environment) 및 실행 명령어(ExecStart)를 포함합니다.  Environment systemd 유닛 파일에서 환경 변수를 설정하는 키워드입니다. Environment 라인은 독립적이며, 뒤에 오는 라인이 앞의 값을 덮어 쓰지 않고 각각 고유하게 처리됩니..

DevOps/Kubernetes 2025.01.07

System Manager

What is system manager?system manager는 시스템 레벨에서 작동하는 systemd의 인스턴스로 부팅 시 시스템의 초기화 그리고 동작 중 시스템의 상태를 관리하는 기능을 수행합니다. Role of system manager1. 시스템 서비스 관리 (start, stop, reload)2. 시스템 상태 관리 (reboot, shutting down, suspending etc)3. cgroup을 통한 프로세스 리소스 관리4. 파일 시스템의 마운트 및 언마운트와 디바이스 초기화 How system manager recognize services?system manager는 아래 경로에서 유닛 파일(설정 파일) 을 통해 서비스를 찾습니다. kubelet 이나 containerd 같은 ..

Linux/Basic 2025.01.07

트러블슈팅

1.  ImagePullBackOff1.1  철자 오류 또는 이미지 태그 오류이미지 이름 또는 이미지 태그를 잘못 기입해서 컨테이너 이미지를 찾을 수 없는 경우, 이미지 철자를 고쳐서 *.yaml 파일을 재작성하면 파드를 정상적으로 동작시킬 수 있습니다. 파드의 경우 파드를 삭제한 후 다시 파드를 재생성 해주어야 합니다. 1.2  권한 오류 사설 저장소에서 이미지를 가져와야 할 때 해당 저장소에 접근 권한이 없는 경우 오류가 발생할 수 있습니다. 이를 해결할 수 있는 여러가지 방법이 있는데 가장 간단한 해결 방법에 대해 알아보겠습니다. 그것은 ImagePullSecret을 생성하여 파드에 할당하는 것입니다. ImagePullSecret을 사용하면 파드가 이미지를 가져올 때 필요한 인증 정보를 제공할 수 ..

DevOps/Kubernetes 2024.11.06

Pull-based 접근 방식이 멀티 테넌트를 지원하는 방법

Pull-based 접근 방식이 멀티 테넌트를 지원하는 방법각 테넌트의 독립적 배포:Pull-based 배포 방식에서는 각 테넌트가 자신의 설정과 리소스를 Git 리포지토리에 선언적으로 정의해 두고, 각 테넌트의 네임스페이스에만 적용할 수 있습니다. 예를 들어, Flux나 ArgoCD 같은 도구를 사용하면, 각 네임스페이스는 자체 Git 리포지토리를 통해서만 업데이트되도록 설정할 수 있습니다.이러한 방식으로 각 테넌트가 독립적으로 배포를 관리하고, 하나의 테넌트가 다른 테넌트의 리소스에 영향을 주지 않게 할 수 있습니다.Git 리포지토리를 통한 명확한 액세스 제어:Pull-based 접근 방식에서는 각 테넌트가 자신에게 할당된 Git 리포지토리만 관리하도록 설정할 수 있습니다. 이를 통해 액세스 제어가 ..

DevOps/GitOps 2024.10.30

GitOps 원칙

0. 개념GitOps 원칙은 애플리케이션과 인프라 배포를 보다 안전하고 일관되게 관리하기 위해 Git 리포지토리를 중심으로 운영을 자동화하는 방법론입니다. GitOps의 주요 원칙을 이해하려면 다음 네 가지 핵심 원칙을 알고 있어야 합니다.1. 선언적 인프라 (Declarative Infrastructure)설명: 인프라와 애플리케이션의 상태를 선언적으로 정의합니다. Kubernetes의 YAML 파일처럼 모든 상태와 구성을 명확하게 기술해두면, 현재 상태와 원하는 상태 간의 차이를 쉽게 관리할 수 있습니다.장점: 선언적 파일을 사용하면 구성 변경의 추적과 버전 관리가 쉬워지며, 상태의 일관성이 높아집니다.2. Git을 단일 진실 소스로 사용 (Git as a Single Source of Truth)설..

DevOps/GitOps 2024.10.30

서비스 메시

서비스 메시란 서비스 메시는 마이크로 아키텍처 환경에서 코드의 변경 없이 서비스 간 통신을 담당하는 레이어이다. 여기서 서비스란 마이크로서비스 아키텍처에서 특정 기능을 제공하는 독립적인 소프트웨어 컴포넌트를 의미한다. 주로 담당하는 기능은 아래와 같다. - Traffic Management (트래픽 관리)- Security (보안)- Observability (모니터링 + 로깅)- Service Discovery (서비스 간 통신) 서비스 메시 구성요소서비스 메시의 구성 요소로 컨트롤 플레인과 데이터 플레인이 있으며 각기 다른 역할과 기능을 갖고 있다. 컨트롤 플레인 (Control Plane): 관리 및 조정: 네트워크, 서비스, 또는 클러스터의 구성, 정책, 및 규칙을 정의하고 관리합니다.메타데이터 ..

DevOps/Kubernetes 2024.10.30

인그레스 컨트롤러

서비스가 파드로 접근하는데 진입 지점을 제공해준다면 인그레스는 네트워크 7계층에서 여러 서비스로 진입하는데 진입지점을 제공해주고 이를 쿠버네티스 클러스터 안에서 구성할 수 있도록 도와준다. 인그레스를 구성하기 위해선 쿠버네티스 클러스터에 Nginx, HAPROXY, traefik 과 같은 솔루션 중 하나를 선택해서 배포해야 한다. 이와 같은 솔루션을 Ingress controller라고 한다. 그리고 설정 규칙을 Ingress resources라고 한다. 쿠버네티스 클러스터는 Ingress controller가 내장되어 있지 않다. 그래서 인그레스 리소스를 생성해서 적용하기 위해선 인그레스 컨트롤러를 구성해야한다. 인그레스 컨트롤러에는 여러 종류가 있다. 이중에서 GCE와 Nginx가 쿠버네티스 프로젝트..

DevOps/Kubernetes 2024.10.30

쿠버네티스 클러스터와 네트워크

쿠버네티스 네트워크가 구성되는 과정 - 브릿지 네트워크 인터페이스로CNI(Container Network Inteface) 없이 쿠버네티스 클러스터의 네트워크를 설정하기 위해선 어떻게 해야할까? 우선 노드 별로 브릿지 유형의 v-net-0 이름으로 네트워크 인터페이스를 생성한다. 노드 별 브릿지 네트워크를 사용하면 여러 네트워크 인터페이스를 묶어 같은 네트워크 내에서 데이터 패킷을 전달할 수 있도록 해준다. ip link add v-net-0 type bridge  인터페이스를 생성한 후 네트워크 인터페이스를 활성화하기 위한 과정이 필요하다. 활성화 해야지 패킷을 송수신 할 수 있는 상태가 된다. ip link set dev v-net-0 up  네트워크 인터페이스를 활성화 한 후 노드별로 서브넷 마스크..

DevOps/Kubernetes 2024.10.29

Kubernetes Image

파드를 생성할 때 이미지란을 적어주는 부분이 있다. 위 그림을 통해 이미지를 적는 형식을 알 수 있다. 위 예시에서 docker.io는 Docker Hub를 가리킵니다. library의 경우 공식 이미지들이 저장되는 네임스페이스를 나타냅니다. nginx는 이미지의 이름입니다. 정리하면 Dokuber Hub, library 네임스페이스에서 nginx 이미지를 가지고 오는 것입니다.프라이빗 레지스트리에서 이미지를 가지고 오는 경우도 있습니다. 이럴 때에는 Pod를 생성하는 yaml 파일에 imagePullSecrets에 docker-registry 유형의 secret을 만들어 추가해주면 해당 secret 정보를 바탕으로 프라이빗 레지스트리에서 이미지를 가지고 올 수 있습니다.

DevOps/Kubernetes 2024.10.29

Service Account 관련 주요 사항

개념서비스어카운트는 쿠버네티스나 프로메테우스와 같은 애플리케이션이 쿠버네티스 클러스터에 요청을 할 때 필요한 인증 및 인가를 위해 도입되는 개념이다. 이번 시간에는 해당 개념을 알고있는 사람을 대상으로 관련 내용을 정리해보는 시간을 가졌다.부가 내용- 파드 생성시 서비스 어카운트를 지정하지 않으면 쿠버네티스 기본 서비스 어카운트가 설정된다. 따라서 파드 생성시 서비스 어카운트를 지정하고 싶지 않으면 아래 그림처럼 authomountServiceAccountToken: false를 지정해야한다. - 현재 러닝 중인 파드에 새로운 서비스 어카운트를 지정하고 싶다면 yaml 파일 수정 후 파드를 삭제하고 다시 생성해야한다. kubectl edit pod my-kubernetes-dashboard 명령어로는 새..

DevOps/Kubernetes 2024.10.29