본문 바로가기

전체 글

(19)
kustomize Kustomize 사용이 필요한 이유 여러 환경 (개발, 테스트, 라이브) 에서 kubernetes설정을 반보적으로 복사/붙여넣기 하지 않고 공통 설정은 재사용하고 차이만 덮어쓰고 싶은 경우에 사용하면 좋다 -> 기존에 각 파일별로 별도 관리하면 유지보수가 어렵고 사소한 누락 가능성이 있다 핵심 개념 Base- 모든 환경에서 공통적으로 사용하는 설정들을 모아둔 디렉터리 - 기본값들을 설정하고 변경이 없는경우 그대로 사용한다 Overlay - 각 환경별로 Base를 기준으로 일부 갚만 덮어쓰기 하는 방식 kustomize/├── base/│ ├── deployment.yaml│ └── kustomization.yaml└── overlays/ ├── dev/ │ └── kusto..
Helm Helm 은 무엇인가?Kubernetes용 패키지 관리자로, 복잡한 애플리케이션을 하나의 단위(Package 또는 Chart) 로 관리할 수 있게 해주는 도구이다 하나의 서비스에는 여러개의 yaml 파일들이 존재하는데 이 각각의 파일들을 helm이 없다면 직접 apply로 적용하고 환경에 맞게 하드코딩 값들을 수정하고 , 삭제하고 그 과정에서 모든 리소스를 추적 관리 해야하기 때문에 복잡하고 비효율 적이다 -> 그래서 helm이 여러 리소스를 하나의 패키지로 묶어서 관리를 해준다. Helm 설치 helm 설치 자체는 운영서버나 로컬 환경에서 설치가 가능한데 설치전에 kubectl 가 설치되어있어야하고(기술적 필수는 아닌데 , 설치하고 실제 사용을 위해서는 필요하기 때문) kubernetes 클러스터에 ..
Networking 사전 지식네크워크 기초개념설명Network서로 연결되어 통신 할수 있는 구조 (예: A와 B를 스위치로 연결해 네트워크 구성)(예 192.168.1.0/24)Interface네트워크 인터페이스는 장비가 네트워크에 물리적 또는 가상적으로 연결되는 지점 즉 포트(예: eth0)IP Address장비 식별자 (예: 192.168.1.10)Switch같은 네트워크 안에서 데이터 전송 (L2 장비)Router다른 네트워크와 연결, 패킷 경로 결정 (L3 장비)개념설명Gateway외부 네트워크(인터넷 포함)로 나가는 출구 IPRouting Table특정 네트워크로 가기 위한 경로 정의Default Gateway모르는 목적지 IP는 이곳으로 보냄 (0.0.0.0/0)명령어ip route, ip route add, r..
Storage Docker StorageDocker 에서는 두가지의 주요 스토리지 개념이 있다 - storage drivers- volume driver plugins Storage driver도커의 데이터의 기본 저장 경로는 /var/lib/docker 이다 해당 경로에서 주요 디렉토리는 아래와 같다- containers/ : 컨테이너 관련 데이터- image/ : 이미지 관련 데이터- volumes/ : 도커 볼륨 데이터 Docker 이미지 = 계층 구조 (Layered Architecture) Dockerfile의 각 명령은 하나의 이미지 계층(Layer)을 생성한다그래서 각 레이어는 이전 레이어의 변경 사항만 저장 (최적화됨) 장점- 캐싱: 중복된 레이어 재사용 (다른 도커 이미지 사용한다해도 레이어 ..
쿠버네티스 보안 보안의 기본 요소쿠버네티스에서 보안의 가장 핵심적인 요소는 kube-apiserver 이다-> 쿠버네티스의 모든 작업은 API 서버를 통해서 수행되기 때문 API 서버 접근 제어 누가 접근 할 수 있는가? (Authentication 인증) 제어 방법- 정적 파일 기반 ID/Password (basic-auth-file 옵션으로 사용. 실무에서는 거의 사용안함)- 토큰 (token-auth-file로 제공, 테스트 환경에서 사용 실무에서는 사용 잘 안함) - 인증서 (사용자 인증에 가장 많이 사용. kubectl은 클라이언트 인증서로 접근)- LDAP등 외부 시스템 (--oidc-* 플래그로 OIDC 연동 (OAuth2 기반))- ServiceAccount (파드나 앱이 API Server에 접근..
cluster 관리 노드 유지보수 관리 방법 클러스터를 운영하다 보면 노드의 OS를 업그레이드하거나 보안 패치를 적용해야 할 상황이 생긴다.이때 노드를 안전하게 종료하고 다시 복구하는 절차가 중요하다. 노드가 갑자기 내려간 경우노드가 예기치 않게 다운되면, Kubernetes는 기본적으로 5분간 해당 노드를 지켜본다(기본설정 5분 `--pod-eviction-timeout=5m`)만약 노드가 NotReady 상태가 지속되면, 5분 후 해당 노드의 파드를 evict한다파드가 ReplicaSet의 일부였다면, 다른 노드에서 자동으로 새로 생성된다.o반면, ReplicaSet이 아닌 단독 파드라면 다시 살아나지 않고 사라진다. 안전한 유지보수를 위한 노드 처리: cordon과 drain 1. kubectl cordon 해당 노..
Lifecycle Management Rolling update and Rollback Deployment를 생성하거나 변경하면 rollout 이벤트가 발생한다.Kubernetes는 Deployment마다 변경 이력을 관리합니다.kubectl rollout status deployment/myapp-deployment # 현재 롤아웃 진행 상태 확인kubectl rollout history deployment/myapp-deployment # 배포 이력 (리비전) 확인 rollout 은 새로운 애플리케이션 버전을 단계적으로 배포해나가는 과정을 말한다 (내가 배포한 애플리케이션이 클러스터에 반영되고 있는 과정) 배포 전략 Recreate 전략모든 기존 Pod을 먼저 종료한 후 → 새로운 버전 Pod을 생성다운타임이 발생 ..
Logging & Monitoring Monitor Cluster components기본적으로 쿠버네티스 자체는 모니터링 시스템이 내장되어있지 않다 . 그래서 모니터링을 위해서는 사용자가 직접 외부 솔루션을 설치하고 구성해야한다. (ex, 프로메테우스) 주요 모니터링 구성 요소 (쿠버네티스 내부 시스템과 밀접한 기본 컴포넌트) 1. metrics-server클러스터 리소스 사용량을 수집하는 경량 인메모리 메트릭 수집기kubectl top 명령을 통해 현재 시점의 리소스 사용량(CPU, 메모리) 조회 가능히스토리 저장 불가하기 떄문에 장기적인 분석에는 적합하지 않음 (설치 필요하고 이거는 관련 매니페스트를 설치하면된다, 링크)kubectl top podkubectl top node 2. kubelet + cAdvisor (기본내장) 각 노드..