본문 바로가기

728x90

분류 전체보기

(112)
Docker MariaDB 생성 및 기존 데이터 dump 이관 기존 서버에 있는 MariaDB 데이터를 로컬 Docker 환경으로 옮겨야 하는 상황이 있었다.원본 서버의 MariaDB 버전은 10.5.27-MariaDB 였고, Docker에서도 최대한 동일한 환경으로 맞추기 위해 MariaDB10.5 이미지를 사용했다. 이번 작업에서 흐름은 아래와 같다. 1. 기존 서버 DB를 dump 뜨는 방법2. Docker Compose(yaml) 방식으로 MariaDB 생성3. dump 파일을 Docker 컨테이너로 옮기고 적용하는 방법 추가로 아래 설정도 함께 고려했다.lower_case_tables_namescharacter-setcollation컨테이너가 내려가도 데이터가 유지되도록 volume 사용1. 기존 서버의 DB를 dump 뜨는 방법기존 서버의 MariaDB ..
[k8s] Service : selector / endpoints / (port, targetPort) Kubernetes Service는 "Pod는 IP가 자주 바뀌니까, 고정된 접속 지점(가상 IP/DNS)을 만들고 뒤에 Pod들을 붙여주는" 리소스다.용어정리selectorService가 "어떤 Pod들을 내 뒤에 붙일지" 고르는 라벨 조건spec.selector에 들어감endpoints / endpointsliceselector로 선택된 Pod들이 실제로 연결된 결과 목록 (Pod IP:Port)즉, "Service 뒤에 누가 붙어 있는지"를 보여주는 실체kubectl get endpoints 또는 kubectl get endpointslice로 확인port / targetPortport: 클러스터 내부에서 Service가 받는 포트targetPort: Pod(컨테이너)로 실제 전달되는 포트예: 서비..
[k8s] Label Label 이란?쿠버네티스에서 Label은 리소스(Deployment/Pod/Service 등)에 붙이는 키-값(key=value) 태그다.라벨 자체는 "동작"을 만들진 않지만, 쿠버네티스는 라벨을 이용해서 대상을 선택하고 그룹화 한다. 라벨이 중요한 이유는 대표적으로 아래 기능들이 라벨을 사용하기 때문:Service selector: 어떤 Pod로 트래픽을 보낼지 선택Deployment / ReplicaSet selector: 어떤 Pod를 관리할지 선택(그 외) NetworkPolicy, affinity/anti-affinity, monitoring 필터링 등Label 조회 기본 3종1) 전체 라벨 같이 보기kubectl get pods --show-labels2) 특정 라벨을 컬럼으로 추가해서 보기..
[k8s] Taint & Toleration 정리 : Pod 스케줄링 제어와 Pending 디버깅 Taint/Toleration 한 줄 정의Taint : "이 노드에는 아무나 오지 마"라고 노드가 거는 거부/제한 조건Toleration: "나는 그 taint를 견딜게(허용할게)"라고 파드가 내는 입장권노드가 막고, 파드가 예외로 들어가는 구조NodeSelector/Affinity와 차이nodeSelector/affinity: 파드가 '가고 싶은 노드'를 고르는 필터taint/toleration: 노드가 '받고 싶은 파드'를 제한 (허용된 파드만 들어옴)Taint의 구성 요소 (key=value:effect)형식:key=value:effectkey:effect (value 생략 가능)effect 3종류:1. NoScheduletoleration 없는 파드는 스케줄링 불가2. PreferNoSchedul..
[k8s] node label 붙이기 1) node에 label 붙이기kubectl label node (ex.disk=ssd) 2) node의 label 확인kubectl get nodes --show-labels | grep -E 'disk=ssd|disk=hdd'kubectl get nodes -L disk 3) node의 label 삭제3-1) label 1개 삭제kubectl label node disk- 3-2) label 여러 삭제kubectl label node disk- team- zone-
[k8s] Deployment 정리(ReplicaSet, RollingUpdate, Rollback) Deployment란?Deployment는 Pod를 직접 띄우는 리소스가 아니라, "원하는 상태(desired state)의 Pod를 안정적으로 유지/업데이트"하도록 ReplicaSet을 관리하는 상위 컨트롤러."항상 nginx Pod 2개를 유지해줘""이미지를 nginx:1.27 → 1.28로 무중단(rolling)으로 바꿔줘""업데이트가 문제 생기면 이전 버전으로 롤백해줘"이런 걸 담당.Deployment가 관리하는 흐름Deployment → ReplicaSet → PodDeployment: 업데이트 전략/버전 히스토리/롤백/스케일 등 "운영 레벨"을 관리ReplicaSet: 특정 Pod 템플릿으로 "몇 개 유지할지" 관리Pod: 실제 컨테이너 실행 단위즉, Deployment를 만들면 보통 내부적으..
[k8s] 스케줄링 기본기: nodeSelector / nodeAffinity / podAntiAffinity로 Pod 배치 제어하기 (실습 포함) 1. nodeSelector: 가장 단순한 "노드 라벨 매칭"nodeSelector는 Pod가 특정 노드 라벨을 만족할 때만 스케줄되도록 강제한다.특징라벨 key: value를 정확히 매칭조건은 사실상 AND만 가능(표현력이 제한적)언제 유용한가?"이 Pod는 SSD 노드에서만"처럼 단순한 강제 배치예시apiVersion: v1kind: Podmetadata: name: ns-podspec: nodeSelector: disktype: ssd containers: - name: app image: nginx:1.27 확인 커맨드kubectl get pod ns-pod -o widekubectl describe pod ns-pod2. nodeAffinity: nodeSelector의 확장판..
[k8s] Secret 정리 (ConfigMap 차이) 개요Kubernetes를 쓰다 보면 "설정값을 Pod에 어떻게 안전하게 전달하지?"라는 상황이 자주 생긴다.이때 사용하는 대표 리소스가 ConfigMap과 Secret인데, 둘은 주입 방식(Env/Volume)이 거의 동일하지만 저장하는 데이터 성격과 보안 관점에서 중요한 차이가 있다.1. Secret이란?Secret은 비밀번호, 토큰, 인증서 같은 "민감한 값"을 Kubernetes 리소스로 저장하고 Pod에 주입하는 방식이다. 예를 들어 아래 같은 값들이 Secret으로 관리된다.DB 계정/비밀번호API Key / Access TokenTLS 인증서 / 개인키Docker Registry 로그인 정보즉, Secret의 역할은 간단히 말해:"민감한 설정값을 클러스터에 저장해두고, 필요한 Pod에만 전달해..

728x90