CKA (8) 썸네일형 리스트형 [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에만 전달해.. [k8s] ConfigMap 정리(Env/Volume 주입, 변경 반영, 실습 포인트) ConfigMap 한 줄 요약ConfigMap은 "쿠버네티스 클러스 안에 설정값을 저장해두고 Pod에서 꺼내 쓰게 해주는 리소스"이다.ConfigMap을 쓰는 이유1) 이미지와 설정을 분리컨테이너 이미지는 바꾸지 않고, 설정만 바꿔서 다른 환경에 배포할 수 있다.이미지: myap:1.0 (고정)설정: APP_MODE=dev / APP_MODE=prod (환경별 ConfigMap)2) YAML로 관리 가능 (GitOps / 추적 / 롤백에 유리)ConfigMap은 Kubernetes 오브젝트라스 kubectl apply 로 배포하고 변경 이력을 남기기 쉽다.3) Pod에 주입 방식을 표준화앱에서 설정을 읽는 방식(환경변수/파일)에 맞춰 ConfigMap을 깔끔하게 연결할 수 있다.ConfigMap은 "로컬.. [k8s] kubectl 자동완성(Tab completion) 설정하기 : zsh에서 kubectl completion 켜는 방법 더보기zsh란?zsh(Z shell)는 유닉스 계열(macOS/Linux)에서 많이 쓰는 커맨드 라인 셸(shell) 이다.사용자가 입력한 명령어를 해석해서 실행해주고, 히스토리/자동완성/환경변수/alias 같은 기능을 제공한다.macOS는 최근 버전에서 기본 셸이 bash에서 zsh로 변경되었고, 그래서 Mac 환경에서 zsh 기반 설정을 많이 한다.대표적인 셸 종류는 무엇인지?셸(shell)은 흔히 아래 종류들을 만난다.sh: 전통적인 유닉스 셸(표준의 기반)bash: Linux에서 가장 흔한 셸zsh: macOS 기본 셸로 많이 사용(완성/확장 기능이 풍부)fish: 사용성 중심(설정 쉬움, 자동완성 강함)ksh: Korn shell(전통/기업 환경에서 가끔)PowerShell: Windows 대표.. [k8s] namespace 구분 개요namespace를 사용하다보면 --namespace, ns, -n 같이 사용하는데 구분이 어려운 경우가 많다.이를 구분해보자. 1) --namesapce vs -n : 같은 뜻 (동일 기능)둘 다 "이 명령을 어느 네임스페이스 대상으로 실행할지" 지정kubectl get pods -n cka-practicekubectl get pods --namespace=cka-practice→ 결과 동일2) ns (옵션 아님)1) kubectl get ns여기서 ns는 리소스 타입 "namespaces"의 축약어kubectl get ns= 아래와 같은 의미:kubectl get namespaces즉,ns는 "네임스페이스를 지정한다"가 아니라"namespace라는 리소스를 조회한다"라는 뜻 [k8s] 컨텍스트(context)에 대해 알아보자 컨텍스트(context) 한 문장 정의컨텍스트는 kubectl이 명령을 실행할 때 사용할 "기본 접속 설정(프로필)"이다.즉, kubectl이 어느 클러스터에, 어떤 인증으로, 기본적으로 어느 네임스페이스에서 작업할지를 한 세트로 묶어두는 것.왜 이런 게 필요할까?쿠버네티스를 사용하다보면 보통 이런 일이 생긴다:로컬 kind 클러스터도 있고 (local)회사 dev 클러스터도 있고 (dev)회사 prod 클러스터도 있고 (prod)같은 클러스터여도 계정이 여러 개일 수 있음 (admin / readonly 등)근데 매번 명령 칠 때마다"이번엔 어떤 클러스터?""이번엔 어떤 계정?""기본 네임스페이스?"이걸 다 적어주기 어려움.그래서 '한 번 고른 기본값 세트'를 만들어 놓고, kubectl은 그냥 "현.. [k8s] kind(Kubernetes IN Docker) 내 로컬 PC에서 쿠버네티스 클러스터를 아주 빠르게 띄우는 도구.kind란?노드(Node)를 VM이 아니라 "Docker 컨테이너"로 만든다.그래서 Docker만 있으면 로컬에 쿠버네티스 클러스터를 만들 수 있다.원래 목적은 Kubernetes 자체 테스트/CI 였는데, 지금은 로컬 개발/학습에도 많이 씀즉, "Docker 컨테이너로 노드를 구성해서 로컬에 k8s 클러스터를 만들어주는 도구"Mac에서 kind로 실습 환경 만들기(1) Docker Desktop 설치/실행 확인Docker Desktop 설치 후 실행터미널에서 확인:docker version버전 정보가 나오면 OK (2) Homebrew로 kubectl + kind 설치Homebrew가 없다면 먼저:/bin/bash -c "$(curl -f.. 이전 1 다음