반응형

성장일기/Kubernetes 14

kubectl expose 명령어 사용법 정리

kubectl expose 명령어는 Kubernetes에서 실행 중인 포드(Pod) 또는 레플리카셋(ReplicaSet) 등과 같은 리소스를 외부에 노출시키기 위해 사용됩니다. 이 명령어는 일반적으로 서비스(Service)를 생성하여 내부 리소스를 외부 네트워크나 클러스터 내의 다른 리소스에 접근할 수 있도록 합니다.기본적으로 expose 사용시 리소스에 할당하게되면 자동으로 라벨링이 맞춰진답니다. 이런 점이 편한점이라고 볼 수 있죠kubectl expose pod my-pod --port=8080 --target-port=80 --name=my-pod-service라벨추가kubectl expose --port= --labels==,= [options]예제Pod 노출과 라벨 추가:이 명령어는 my-p..

kubectl apply create 주요 차이점 정리

kubectl create와 kubectl apply는 Kubernetes 클러스터에서 리소스를 생성하고 업데이트하는 데 사용되는 명령어입니다.이 두 명령어의 차이점은 리소스를 생성하는 것, 리소스를 생성하거나 업데이트 하는 것입니다.kubectl create주요 목적: 새 리소스를 생성합니다.동작: 지정된 매니페스트 파일을 읽고, 해당 리소스가 클러스터에 존재하지 않는 경우 새로 생성합니다. 이미 존재하는 경우 오류를 발생시킵니다.사용 예시:kubectl create -f kubectl apply주요 목적: 리소스를 생성하거나 업데이트합니다.동작: 지정된 매니페스트 파일을 읽고, 해당 리소스가 클러스터에 존재하지 않는 경우 새로 생성합니다. 이미 존재하는 경우 매니페스트 파일의 내용에 따라 리소스를 업..

[쿠버네티스] port-forward로 pod에 접근하기

kubectl port-forward 명령어는 Kubernetes 클러스터 내의 Pod에 있는 하나 이상의 포트를 로컬 컴퓨터의 포트에 전달(포워딩)하는 데 사용됩니다. 이 명령어를 사용하면 개발자나 관리자는 클러스터 내부 네트워크에 직접 연결되어 있지 않아도 로컬 시스템에서 클러스터 내의 서비스에 접근할 수 있습니다. 이 기능은 디버깅과 개발 작업에 매우 유용합니다. 사용법 kubectl port-forward [LOCAL_PORT:]REMOTE_PORT kubectl port-forward는 테스트 및 디버깅 용도로 주로 사용되며, 생산 환경에서는 신중하게 사용해야합니다. 포트포워딩을 사용하면 로컬머신과 pod 사이에 직접적인 네트워크 연결이 생성되기 때문에 보안상의 위험을 증가할 수 있습니다. 당연..

[k8s] 노드, 클러스터 용어 이해하기

쿠버네티스의 구조를 이해하기 전에 반드시 이해하고 있으면 좋을 만한 것은 노드, 클러스터에 대한 용어입니다. 노드는 쿠버네티스에서 가장 기본적인 작업 단위이며 단일 서버(물리적 또는 가상)를 나타내며, 쿠버네티스 클러스터의 일부입니다. 각 노드는 컨테이너화된 애플리케이션을 실행할 수 있는 자원(CPU, 메모리, 저장소 등)을 제공합니다. 그렇다면 이렇게 실질적으로 일을 하는 노드를 관리 및 제어 역할하는 무엇인가도 필요하겠죠? 그것도 바로 노드가 합니다. 쿠버네티스는 그 노드를 마스터 노드라고 합니다. 마스터 노드는 쿠버네티스 클러스터를 관리하고 제어하는 중앙 제어 노드입니다. 당연히 이 마스터 노드 안에는 주요한 구성요소 들이 있지만 이번 포스팅에서는 용어에 대한 개념만 이야기하도록 하겠습니다. 쿠버네..

[k8s] 쿠버네티스가 도커 지원 중단한 이유가 무엇일까

쿠버네티스(Kubernetes)가 처음에 도커(Docker)를 주요 컨테이너 런타임으로 사용하면서 시작했지만, 나중에 CRI(Container Runtime Interface)를 도입한 이유는 여러가지가 있으며 결론적으로는 쿠버네티스의 사용성이 점차 넓어지면서 쿠버네티스의 유연성, 확장성 및 범용성을 향상시키기 위한 전략적인 선택이었다고 합니다. 쿠버네티스는 다양한 환경과 사용 사례를 지원하는 범용 오케스트레이션 시스템을 목표로 했습니다. 처음에는 도커가 유일한 런타임 옵션이었지만, 시간이 지남에 따라 다른 컨테이너 런타임 기술들도 발전했습니다. CRI를 도입함으로써 쿠버네티스는 도커 외에도 containerd, CRI-O와 같은 다양한 컨테이너 런타임을 지원할 수 있게 되었습니다. CRI는 쿠버네티스와..

Deployment의 롤링업데이트 전략 이해하기 ( Max Unavailable, Max surge )

Deployment는 ReplicaSet을 관리하고, 파드의 롤아웃(업데이트) 및 롤백을 처리하는 더 고급 수준의 리소스인데요. 무중단 업데이트, 버전 관리, 롤백 등의 기능을 제공합니다. 그래서 오늘은 Deployment의 롤링업데이트에 대해서 이해해봅시다. maxUnavailable maxUnavailable: 업데이트 과정 중 사용할 수 없게 되는 최대 파드 수를 정의합니다. 25%의 maxUnavailable은 원하는 파드 수(3개)의 25%를 의미합니다. 즉, 3 x 0.25 = 0.75, 내림하여 0개입니다. 그러나 maxUnavailable은 최소 1개 파드를 의미해야 하므로, 실제적으로 사용할 수 없는 최대 파드 수는 1개가 됩니다. 해당 내용은 쿠버네티스 공식 문서에 기재되어있습니다. m..

[쿠버네티스] PVC, 스토리지클래스, 동적프로비저닝

쿠버네티스(Kubernetes)에서의 스토리지 클래스(Storage Class)는 다양한 유형의 스토리지를 정의하고 관리하는 방법을 제공합니다. 스토리지 클래스는 쿠버네티스 클러스터 내에서 사용할 수 있는 스토리지 유형을 정의하며, 이를 통해 동적인 볼륨 프로비저닝을 가능하게 합니다. 스토리지 클래스의 주요 기능과 특징은 다음과 같습니다: 동적 프로비저닝: 스토리지 클래스를 사용하면, 사용자는 필요에 따라 실시간으로 스토리지 볼륨을 생성할 수 있습니다. 이는 Persistent Volume Claim(PVC) 요청에 의해 자동으로 발생합니다. 이 방식은 미리 정의된 스토리지 볼륨을 관리하는 것보다 유연하고 효율적입니다. 스토리지 유형 정의: 각 스토리지 클래스는 특정 스토리지 유형(예: SSD, HDD,..

[쿠버네티스] PV, PVC (Persistent Volumes / Persistent Volumes Claim) 정리

쿠버네티스(Kubernetes)에서의 PV(Persistent Volume)와 PVC(Persistent Volume Claim)는 데이터 저장과 관련된 중요한 개념입니다. 컨테이너 환경에서 데이터 저장소는 매우 중요한 개념입니다. 컨테이너 자체는 일반적으로 불변(immutable)하고 상태 비저장(stateless)의 특성을 가지고 있습니다. 이는 컨테이너가 삭제되거나 재시작될 때 내부 데이터가 소실될 수 있음을 의미합니다. 그렇기 때문에 쿠버네티스에서도 PV (Persistent Volume)와 PVC (Persistent Volume Claim) 개념을 이용하여 영구적인 데이터 저장 옵션을 설정하셔야합니다. PV (Persistent Volume): PV는 클러스터 내에서 사용자가 사용할 수 있는 ..

쿠버네티스 기본 네트워크 개념 ( Pod 통신 )

쿠버네티스는 기본적으로 네트워크 개념은 다음 2가지를 기본으로 합니다. 1. Pod는 NAT 없이 다른 노드 의 다른 모든 Pod와 통신할 수 있습니다. 2. 노드의 에이전트(예: 시스템 데몬, kubelet)는 해당 노드의 모든 Pod와 통신할 수 있습니다. 3. Pod 내의 컨테이너는 네트워킹을 사용하여 루프백을 통해 통신합니다 . 현재 노드에는 아래와 같이 deployment 오브젝트가 배포되어 있습니다. 이러한 Pod들이 서로 다른 노드에 배포되어있지만 통신이 가능하다는 것을 보여드리겠습니다. 현재 해당 pod들은 nginx 이미지를 이용하여 배포된 상황이고 해당 내용에는 통신이 되는지 체크하기 위함이니 해당 pod에 접속해서 다른 pod들과 통신이 가능한지 확인해보겠습니다. 서로 다른 노드에 배..

cloud native의 장점과 단점은 무엇인가? 예를 들어보자

1. Cloud Native 장점 "Cloud Native"는 애플리케이션의 확장성, 신속한 배포, 높은 복원력 등 여러 가지 장점을 제공합니다. #확장성 (Scalability): 클라우드 네이티브 애플리케이션은 요구사항에 따라 쉽게 확장할 수 있습니다. 이것은 트래픽이 늘어나는 시간에 더 많은 리소스를 사용하고, 트래픽이 줄어들 때 리소스를 줄이는 것을 가능하게 합니다. 예를 들어, 블랙프라이데이 같은 특정 시기에 대규모 트래픽이 예상되는 이커머스 애플리케이션에서는, 이 시기를 앞두고 자동으로 리소스를 늘려서 처리능력을 강화하고, 이후에는 다시 리소스를 줄여 비용을 절약할 수 있습니다. #신속한 배포 (Rapid Deployment): 클라우드 네이티브 애플리케이션은 빠른 반복 업데이트와 배포가 가능..

반응형