전체 글 138

[쿠버네티스] 클러스터 외부 서비스 / loadBalancer

들어가며 외부 서비스용 레플리카셋 생성 및 확인 NodePort 서비스 생성 및 확인 LoadBalancer 서비스 생성 및 확인 ExternalName 서비스 생성 및 확인 들어가며: 쿠버네티스 클러스터에서 웹의 프론트엔드 서비스를 실행하는 파드의 경우 쿠버네티스 클러스터의 외부로 노출시켜 접근 가능하도록 구성해야 합니다. ClusterIP는 클러스터 내부에서 DB와 같이 외부로의 노출이 없어야하는 경우에 사용하기 위함이였습니다. 쿠버네티스 클러스터 외부에서 접근 가능한 서비스 리소스 출력의 필드를 살펴보겠습니다. NodePort NodePort + ClusterIP 쿠버네티스 모든 노드(호스트)에 외부 접근용 포트를 할당 노드의 포트를 사용하여 외부에서 접근 가능 노드의 포트로 접근하면 서비스에 의해..

[쿠버네티스] 클러스터 내부 서비스 / clusterIP

들어가며: 서비스 소개 서비스 생성 서비스 및 엔드포인트 확인 파드 생성 및 엔드포인트 연결 서비스 접근 테스트 서비스의 세션 어피니티 구성 서비스 다중 포트 구성 포트 이름 참조 들어가며 쿠버네티스의 네트워크 형태는 내부용 서비스, 외부 노출용 서비스, 특수한 형태(내부에서 외부로 나갈 때) 등이 있습니다. db와 같이 외부로 노출되면 안되는 컨테이너가 사용하는 클러스터 내부 서비스에 대해 알아보도록 하겠습니다. 파드는 클러스터 외부의 요청이나 클러스터 내부의 다른 파드의 요청에 응답해야 합니다. 또한 파드가 다른 파드에서 제공하는 애플리케이션에 접근하기 위해서는 파드를 찾을 수 있어야 합니다. 쿠버네티스가 아닌 기존의 시스템은 애플리케이션이 동작하는 시스템의 호스트 이름이나 정적 IP를 할당하여 애플..

[쿠버네티스] kubeadm 클러스터 업그레이드 방법 및 작동 원리

들어가며: 컨트롤플레인 노드 업그레이드 워커노드 업그레이드 작동원리 들어가며 쿠버네티스 버전 및 버전-차이 정책와 kubeadm 버전 차이 정책을 확인하고 릴리스 노트를 주의 깊게 보시는 것을 추천합니다. 이전 포스트의 내용을 사전에 보시는 것도 권장해드립니다. 업그레이드할 버전을 먼저 결정해야합니다. apt update apt-cache madison kubeadm 포스팅한 시점에서는 1.21 까지 나왔지만 안정성을 위해 1.19.11-00 버전으로 업그레이드 해보겠습니다. 패치 업그레이드는 몇 칸을 올라가든 상관없지만 마이너 업그레이드는 1단계씩만 가능합니다. 현재는 1.18 버전이기 때문에 문제가 없습니다. 업그레이드 순서는 1. 컨트롤플레인노드 kubeadm → 2. kubelet and kube..

[쿠버네티스] 우분투 환경에서 쿠버네티스 설치하기 + kubeadm 툴박스로 클러스터 만들기 (kubeadm, kubectl, kubelet)

들어가며 사전확인 도커 설치하기 kubeadm, kubelet, kubectl 설치하기 kubeadm 툴박스로 클러스터 만들기 Control-plane 컴포넌트 구성 및 네트워크 환경구성 worker node 구성 추가 control-plane 노드에서 상태확인 work node 구성 삭제 끝마치며 들어가며 vagrant 설치 및 환경 구성을 한 뒤 이어서 쓰는 글이니 작업 환경이 궁금하다면 이전 글을 참조하길 바랍니다. 이 글은 우분투 18.04 LTS 환경에서 쿠버네티스 클러스터를 설치 및 구성하는 글입니다. 본인의 프로세서가 싱글코어 이하 이거나, 1GB 이하의 RAM 이라면 따라하는 것을 권장하지 않습니다. 또한 $swapon -s 를 확인했을 때 스왑 사용중이라면 kubelet이 재대로 작동하지..

[쿠버네티스] 사전 준비, Vagrant 를 이용하여 가상환경 구축하기 & vagrantfile 소개

들어가며: Vagrant 란? Vagrant 기초 명령어 사용법 소개 Vagrant Install 및 가상환경 구축 Vagrantfile 들어가며: 가상머신, 하이퍼바이저, 프로비저닝에 대한 사전 지식이 있다면 더 효과적으로 글을 읽을 수 있습니다. Vagrant 란? Vagrant는 운영체제 시스템에 대하여 쉬운 Provisioning을 할 수 있습니다. 주로 가상머신을 생성하고 관리할 때 사용할 수 있습니다. 가상머신을 사용자의 요구에 맞게 Host name, IP, Service Install 등 다양한 환경을 미리 설정하고 사용자가 원할 시 해당 시스템을 즉시 사용할 수 있도록 해주는 Provisioning 도구 입니다. Vagrant를 사용하지 않는 가상머신 생성 및 관리 방법 virtualBo..

[쿠버네티스] 데몬셋이란?

데몬셋 소개 데몬셋 생성 데몬셋 확인 노드 레이블 지정 노드 레이블 제거 데몬셋 삭제 데몬셋 소개 데몬셋(DaemonSet)은 노드 레이블과 매칭이 되는 모든 노드 또는 노드 레이블이 없다면 모든 노드에 파드를 하나씩 배치하는 컨트롤러입니다. 일반적으로 많이 사용하지않는 컨트롤러입니다. 기능은 레플리카셋과 비슷하지만 복제본은 지정하지 않습니다. 당연하게도 (노드 레이블과 매칭이 되는) 모든 노드에 하나씩의 파드만을 배치하기 때문입니다. 노드가 추가되면 자동으로 컨트롤러는 하나의 파드를 배치하게 되고, 노드가 제거되면 삭제된 파드를 다른 노드에 배치하지 않습니다. 이는 복제본을 제공하는 컨트롤러가 아니기 때문입니다. 각각의 노드마다 배치해야되는 특성이 있는 성능 수집이나 로그 수집이나 스토리지 서비스가 필..

[쿠버네티스] k8s 레플리케이션 컨트롤러(ReplicationController) 란?

들어가며: 레플리케이션 컨트롤러 소개 레플리케이션 컨트롤러 생성 레플리케이션 컨트롤러 확인 레플리케이션 컨트롤러와 파드 레플리케이션 컨트롤러와 레이블 파드의 수평 스케일링 레플리케이션 컨트롤러 및 파드 삭제 끝마치며: 들어가며: 쿠버네티스의 컨트롤러는 파드를 올바르게 동작하기 위해 특정 상태를 보장하기 위한 컨트롤러입니다. 특정 상태는 컨트롤러에 따라 동작하는 방식 및 정의하는 상태가 조심씩 다릅니다. 쿠버네티스 초기부터 이어져온 서비스 중 1개 입니다. 레플리카셋은 레플리케이션 컨트롤러를 대체하기 위해서 만들어졌기 때문에 거의 유사합니다. 그래서, 현재는 레플리케이션 컨트롤러보다 레플리카셋 또는 레플리카셋의 상위 개념인 디플로이먼트를 권장합니다. 레플리케이션 컨트롤러를 사용할 일은 없지만 아직까지는 사..

[쿠버네티스] 파드의 생명주기와 컨테이너 프로브

들어가며: 파드의 생명주기 컨테이너 상태 컨테이너의 재시작 정책 컨테이너 프로브 liveinessProbe, ReadinessProbe, StartupProbe 개념과 사용 이유 컨테이너 프로브 구성파일 살펴보기 라이프니스 프로브 정상/비정상 예시 스타트업 프로브 정상/비정상 예시 들어가며: 파드는 아래와 같은 순서대로 생명주기를 가집니다 Pending -> Running -> Succeeded 또는 Failed 쿠버네티스 노드의 구성 요소인 kubelet은 파드의 컨테이너 상태를 추적하고, 오류가 발생하면 정상 상태로 만들기 위한 조치로 컨테이너를 재시작할 수도 있습니다. 파드는 파드가 최초 생성될 때 한 번만 스케줄링 되며, 특정 노드에 할당되면, 파드가 중지/종료 될 때 까지 항상 같은 노드에서 실..

[쿠버네티스] 명령형 오브젝트 구성 방법 / yaml 의 기초 설명

들어가며: YAML 이란? YAML 요소 YAML 문법 YAML을 이용한 쿠버네티스 오브젝트 kind에 따른 apiVersion 확인 법 끝마치며: 참고 오브젝트 리소스 문서 확인 명령 vim 에디터에서 YAML 파일 작성 시 인덴트, 하이라이팅, 들여쓰기 등 기능을 추가하여 효율적으로 작성하는 법 nano 에디터에서 YAML 파일 작성 시 효율적으로 작성하는 법 들어가며: k8s 오브젝트는 k8s 시스템에서 정보를 담고 있는 개체입니다. 이런 오브젝트는 YAML 문법으로 정의됩니다. YAML 이란? YAML은 XML, C, Python, Perl, RFC2822 에서 정의된 개념을 기반으로 만들어진 사람이 읽고 쓰기 쉽게 데이터를 정의하는 양식입니다. 2001년 클라크 에반스에 의해 고안됐습니다. YA..

[쿠버네티스] k8s 오브젝트의 일반적인 구성 종류

pod replicaSet Deployment Service-ClusterIP Service-NodePort Service-LoadBalancer Ingress 끝마치며: 참고 pod 포드(팟)은 쿠버네티스에서 가장 작은 배포 단위이며, 각 pod마다 고유한 ip 를 할당받습니다. 여러 개의 컨테이너가 하나의 pod 에 속할 수 있습니다. replicaSet 리플리카셋은 여러 개의 pod를 관리하며, replicas=3 과 같은 식으로 몇 개의 pod를 관리할 지 결정합니다. 즉, 신규 pod를 생성하거나 제거하여 원하는 수(replicas)를 유지하는 역할을 합니다. kubectl scale deployment myapp --replicas=3 Deployment ReplicaSet을 감싸고 있는, 배..