목록DevOps/Kubernetes (23)
우노
리소스를 생성하지 않고 리소스 구성 파일만 출력 kubectl 시, 리소스를 생성하지 않고 리소스 구성 파일만 출력할 수 있는 옵션이 있습니다. kubectl run redis \ --image=redis \ --dry-run=client \ -o yaml \ > redis-definition.yaml --dry-run=client : 명령어를 실행하지 않고 구성만을 출력합니다. -o yaml : 출력 형식을 YAML로 지정합니다. > redis-definition.yaml : 명령어의 출력을 파일에 저장합니다.
요약 K8S에서 Resource의 Request와 Limit은 컨테이너에 할당되는 CPU, Memory의 자원량을 의미합니다. Request는, 컨테이너 생성 시 필요한 자원량을 의미합니다. Limit은, 컨테이너가 이미 실행 중인 상태에서 추가 리소스가 필요한 경우에 사용할 수 있는 최대 자원량을 의미합니다. 이때 주의할 점은, 반드시 Limit은 Request보다 같거나 커야한다는 것입니다. Limit은 추가로 얼만큼의 리소스를 더 사용할 것인지가 아닌, 컨테이너 생성 시 필요한 자원량과 추가로 사용할 자원량을 더한 최대 자원량을 의미하기 때문입니다. CPU와 Memory의 자원 단위는 아래와 같습니다. CPU : Milicore (1,000 Milicore = 1Core) Memory : Mbyte..
K8S Replicaset 상태 확인 명령어 kubectl get replicaset Desired (원하는 수) ReplicaSet으로 관리하길 원하는 Pod의 수를 나타냅니다. 사용자가 설정한 값입니다. Current (현재 수) 실제 동작 중인 Pod의 수를 나타냅니다. Ready (준비된 수) 사용할 준비가 완료된 Pod의 수를 나타냅니다. 참고 정상적인 환경이라면 Desired, Current, Ready 개수가 모두 동일해야합니다.
들어가기 앞서, Pod를 띄웠을 때, 에러로 인해 Pod가 지속적으로 재시작되는 경우가 있습니다. 이때 트러블 슈팅을 위해 일시적으로 Container를 유지하는 방법에 대해서 포스팅하겠습니다. Container Sleep 적용 apiVersion: v1 kind: Pod metadata: name: ubuntu spec: containers: - name: ubuntu image: ubuntu:latest # Just spin & wait forever command: [ "/bin/bash", "-c", "--" ] args: [ "while true; do sleep 3600; done;" ] 정석적인 방법은 아니며, 이외에도 다양한 방법이 사용될 수 있습니다. 참고 https://stackover..
들어가기 앞서, Kubernetes에서 Volume은, 3가지 구조로 사용됩니다. PersistentVolume(PV) PersistentVolumeClaim(PVC) StorageClass 해당 포스팅에선 PV와 PVC에 대해서 먼저 이해한 뒤, StorageClass에 대해서 이해해보겠습니다. PV와 PVC 요약 PV Volume 자체를 의미합니다. 클러스터 내에서 독립적으로 관리되며 별도의 생명 주기를 가집니다. 클라우드 서비스 또는 직접 구축한 Storage와 같은 다양한 소스에서 제공되는 스토리지를 사용할 수 있습니다. PVC 사용자가 PV에 요청한 정보를 의미합니다. 필요한 용량, 액세스 모드 등을 지정하여 PV를 요청합니다. Pod는 직접 PV에 연결되는 대신, PVC를 통해 스토리지에 액세..
들어가기 앞서, Kubernetes(K8s)에서 "ExternalName"은 서비스(Service) 리소스의 유형 중 하나로, 내부 클러스터의 애플리케이션들은 "ExternalName" 유형으로 선언된 서비스(Service)의 DNS를 사용해, 외부 서비스 또는 외부 도메인을 간단하게 참조할 수 있습니다. 예제 클러스터 내부 Pod에서 외부 도메인인 “external-service.example.com”에 접근해야 한다고 가정해 봅시다. 이때, 아래와 같이 ExternalName 유형의 Service를 생성한 뒤, apiVersion: v1 kind: Service metadata: name: my-external-service spec: type: ExternalName externalName: ext..
들어가기 앞서, K8S에서 CPU는 Milicore단위(1,000 Milicore = 1Core)로, Memory는 Mbyte단위로 할당됩니다. Node 리소스 사용량 확인 kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% node-1 50m 2% 800Mi 40% node-2 75m 3% 900Mi 45% Pod 리소스 사용량 확인 kubectl top pod NAME CPU(cores) MEMORY(bytes) my-pod-1 100m 50Mi my-pod-2 200m 75Mi another-pod 50m 30Mi Pod 내부 Container 별 리소스 사용량 확인 kubectl top pod --containers=true POD NAME ..
들어가기 앞서, Kubernetes의 Service는 특정 Pod에 네트워크 트래픽을 라우팅하는 역할을 합니다. Service는 라벨 셀렉터(spec.selector)를 통해, 해당 라벨과 동일한 라벨(spec.template.metadata.labels)을 가지고 있는 Pod에게 네트워크 트래픽을 라우팅하게 됩니다. 하지만, 라우팅 설정에 사용되는 라벨 관련 필드는 다양하기 때문에 헷갈릴 수 있습니다. service spec.selector (Service가 어떤 Pod에 라우팅할지 정하기 위한 라벨 셀렉터) deployment metadata.labels (Deployment에 할당되는 라벨) spec.selector.match_labels (Deployment가 어떤 Pod를 관리할지 정하기 위한 ..
들어가기 앞서, kubectl set image 명령어는 Kubernetes에서 사용되며, 이미 존재하는 Pod의 이미지를 업데이트하는 데 사용됩니다. 해당 포스팅에선, kubectl set image 명령어의 기본 사용 방법과 예시를 다뤄보겠습니다. kubectl set image 명령어 kubectl set image deployment/ = deployment-name : 이미지를 업데이트하려는 Deployment의 이름입니다. container-name : 업데이트하려는 컨테이너의 이름입니다. new-image : 새 이미지의 이름과 태그를 지정합니다. 예시 kubectl set image deployment/myapp-deployment myapp-container=myapp:v2 myapp-d..
들어가기 앞서, 쿠버네티스 컨텍스트는 작업을 수행하는 데 사용되는 환경 및 설정을 의미합니다. 쿠버네티스는 kubectl 명령어를 사용하여, 여러 Kubernetes 클러스터 및 컨텍스트 간에 전환하거나, 현재 설정 정보를 확인하거나, 작업을 수행하는 등의 다양한 작업을 수행할 수 있습니다. 명령어 종류 kubectl config view 현재 설정된 모든 구성 요소에 대한 정보를 확인할 수 있습니다. Kubernetes 클러스터와의 연결 및 인증 설정, API 서버 주소 등과 같은 여러 구성 요소에 대한 정보가 표시됩니다. kubectl config get-contexts 모든 컨텍스트 목록과 현재 어떤 컨텍스트로 설정되어 있는지를 확인할 수 있습니다. kubectl config current-cont..