본문 바로가기
728x90

[DevOps]/Kubernetes18

kubernetes - Node Update(drain, cordon, uncordon) 🛠️ 쿠버네티스에서의 클러스터 유지보수 쿠버네티스의 클러스터는 여러 개의 노드로 구성되어 있다. 각 노드는 하나의 인스턴스로 구성되어 각자에 맞는 OS와 Kubelet 버전이 있을 것이다. 만약 이 OS 혹은 kubelet 버전을 업데이트하거나, 하드웨어를 교체하는 등 노드의 유지보수 작업이 수행될 때 파드의 서비스 중단 없이 안전하게 노드를 유지 보수하려면 어떻게 해야 할까? 쿠버네티스에는 pod의 스케줄링 정책을 커스텀하게 설정할 수 있는 여러 명령어를 제공한다. 이를 통해 업데이트가 필요한 노드의 파드를 다른 노드로 옮기고 안전하게 업데이트를 진행할 수 있다. 📌 drain kubectl drain --ignore-daemonsets drain은 '물을 빼다'라는 뜻으로 쿠버네티스에서는 해당 노드의.. 2024. 1. 20.
kubernetes - initContainer : 초기화를 위한 컨테이너 📌 initContainer(초기화 컨테이너) Kubernetes Pod 내에서 실행되는 특별한 종류의 컨테이너이다. 주 컨테이너가 시작되기 전에 실행되며, 주로 초기화 작업을 수행하기 위해 사용된다. 주 컨테이너와는 독립적으로 실행되며 initContainer의 실행이 완료되어야 주 컨테이너가 시작된다. 각각의 순서대로 실행되며 이전 initContainer가 성공적으로 완료되어야 다음 initContainer가 실행된다. 주 컨테이너와 별도의 리소스를 사용하며 다른 네트워크 네임스페이스에 속해 있기 때문에 주 컨테이너와 직접 통신할 수는 없다. Pod 내에서 초기화 작업을 수행하여 애플리케이션의 안정성과 신뢰성을 높일 수 있다. 🤔 initContainer의 사용 목적 데이터 초기화 주 컨테이너가 시.. 2024. 1. 17.
쿠버네티스 배포 전략 간단히 알아보기 📌 쿠버네티스 배포 전략 관련 용어 정리 롤링 업데이트(Rolling Update) 롤링 업데이트는 가장 일반적으로 사용되는 배포 전략 중 하나이다. 다른 배포 전략인 블루/그린 배포이나 카나리아 배포도 구현 가능하다. 이전 버전의 애플리케이션을 점진적으로 제거하고 새로운 버전을 추가함으로써 업데이트를 수행한다. 롤링 업데이트를 통해 애플리케이션의 가용성을 유지하면서 안정적인 업데이트를 진행할 수 있다. 쿠버네티스에서는 ReplicaSet 또는 Deployment 리소스를 사용하여 롤링 업데이트를 구현할 수 있다. yaml 파일에 직접 적용하는 방법은 아래 설명에 있다. 롤아웃(Rollout) 애플리케이션의 업데이트나 변경 사항을 수행하는 과정을 말한다. 롤아웃을 통해 애플리케이션의 배포를 관리하고, 이.. 2023. 12. 15.
kubernetes - DaemonSet, Static Pod 📌 DaemonSet 모든 노드에 특정 파드를 배포하고 관리하는 컨트롤러이다. 레플리카셋과 비슷한데 모든 노드에서 특정 작업이 실행될 수 있도록 하기위해 사용한다. 예를 들어, 모든 노드에서 로그 수집을 위한 파드를 실행하거나, 모든 노드에서 특정 네트워크 프록시를 실행할 수 있다. 노드가 추가되거나 제거될 때 자동으로 파드를 생성하거나 삭제하여 노드의 상태 변화에 따라 자동으로 관리할 수 있다. 각 노드의 정보를 수집하거나 노드마다 필수적으로 실행되어야 하는 파드를 배포 관리한다. ReplicaSet과 유사한 방식으로 동작한다. ReplicaSet은 파드 수를 정적으로 지정하지만, DaemonSet은 노드 수에 따라 파드 수가 동적으로 조절된다. 노드가 3개면 파드도 각 노드마다 하나씩 총 3개 또한,.. 2023. 12. 4.
쿠버네티스 CKA 응시료 할인받고 접수하기(Cyber Monday 50% 할인) 📌 CKA(Certified Kubernetes Administrator) Kubernetes 관련 자격증으로 AWS 자격증과 더불어 개발자에게 매우 유명한 자격증이다. 클러스터 설치, 구성, 모니터링, 스케일링, 애플리케이션 배포, 스토리지 관리, 네트워크 설정 등 Kubernetes 운영에 필요한 다양한 기술을 검증한다. 시험은 실제 Kubernetes 클러스터를 다루는 실습 문제와 객관식 문제로 구성되어 있다. Kubernetes 운영 업무자로서의 역량을 테스트한다. 자격증을 취득하면 Kubernetes 클러스터를 안정적으로 운영하고 관리할 수 있는 기술력을 보유하고 있다는 것이 인정되어 경쟁력을 갖출 수 있다. 👀 CKA 공식 사이트 살펴보기 리눅스 재단에서 운영하고 있기 때문에 검색창에 위와 .. 2023. 12. 3.
kubernetes - 노드와 파드 간 상호작용 제어 기술(Taint, Toleration, Node Selector, Node Affinity) 📌 Taint & Toleration 쉽게 말해 노드와 파드 간의 상호작용을 제어하는 기능이다. Taint와 Toleration을 함께 사용하면 특정 노드에만 특정 유형의 파드를 스케줄링하도록 제한할 수 있다. 이를 통해 특정한 역할을 가진 노드에만 특정한 유형의 파드를 할당하거나, 노드를 보호하기 위해 파드가 스케줄링되지 않도록 할 수 있다. 📌 Taint 노드에 특정한 제약 조건을 설정한다. 주로 노드에 특정한 상황이나 제약 사항이 있는 경우에 사용된다. 예를 들어, 특정 노드에는 특정한 유형의 파드만 스케줄링하고 싶다면 해당 노드에 Taint를 설정하여 다른 유형의 파드가 해당 노드에 스케줄링되지 않도록 할 수 있다. Kubectl taint nodes key=value: 💡 taint-effect.. 2023. 11. 23.
쿠버네티스 Labels & Selector 간단 정리 📌 Labels Labels는 키-값 쌍으로 구성되어 있으며 리소스를 식별하는데 사용된다. 사용자가 자유롭게 정의하고 할당할 수 있습니다. 예를 들어, 애플리케이션의 특정 구성 요소를 나타내기 위해 'app=frontend'와 같은 레이블을 사용할 수 있다. 📌 Selector Selector는 레이블을 기반으로 리소스를 필터링하고 선택하는데 사용된다. 셀렉터는 기본적으로 두 가지 유형이 있다. Equality-based selector 키와 값이 정확하게 일치하는 리소스를 선택한다. 예를 들어 'app=frontend' 셀렉터는 'app' 레이블의 값이 'frontend'인 모든 리소스를 선택한다. Set-based selector 값 집합 내에 있는 리소스를 선택한다. 예를 들어 'environmen.. 2023. 11. 10.
쿠버네티스의 스케줄러 간단 정리 📌 쿠버네티스의 스케줄러 간단히 말하면 Pod를 노드에 할당하는 기능이다. 컨테이너는 클러스터 내의 노드에 적절히 분배하여 실행해야 되어야 하는데 이런 작업을 수행하는 주요 컴포넌트 중 하나가 바로 "스케줄러(Scheduler)"이다. 쿠버네티스 스케줄러는 기본적으로 Pod를 클러스터 내의 적절한 노드에 자동으로 할당한다. 이를 "자동 스케줄링(Auto Scheduling)"이라고도 한다. 스케줄러는 클러스터의 리소스 상태와 각 Pod의 요구사항을 고려하여 최적의 할당을 결정한다. Pod 등의 YAML 파일에는 NodeName이란 필드를 명시할 수 있는데 이를 통해 개발자가 해당 파드를 띄울 노드를 직접 선택할 수 있다. 일반적으로는 Pod의 스케줄링을 위해 YAML 파일에 nodeName을 명시적으로 .. 2023. 11. 10.
728x90