Kubernetes 137

포드 컨테이너 리소스 요구량/제한량 확인 및 설정

포드 내 컨테이너의 리소스 관리를 위해 최소 요구량과 제한량을 확인하고 설정하는 방법에 대해 적어둔다. 컨테이너 리소스 요구량 설정 확인 describe 명령 결과에서, Containers.cpu-stress.Requests 필드의 값을 보면 된다. kubectl describe pod 컨테이너 리소스 제한량 수정 edit 명령으로 수정이 불가능하여 포드 삭제 후 재생성이 필요하다. 포드 정의 yaml 파일의 spec.containers.resources.limits의 내용을 수정한다. apiVersion: v1 kind: Pod metadata: creationTimestamp: "2021-11-17T12:45:35Z" name: elephant namespace: default resourceVers..

PodSecurityPolicy 관련 명령어

PodSecurityPolicy는 포드 생성 및 업데이트에 대한 권한 부여에 사용한다. 하지만 Kubernetes v1.21부터 deprecated 되었으며, v1.25에서는 제거된다. 포드 명령어 실행 사용자 설정포드 정의 yaml 파일에서 spec.securityContext.runAsUser 필드에 uid를 지정한다.edit 명령으로 수정할 수 없기 때문에 yaml 파일 수정 및 포드 재생성이 필요하다.apiVersion: v1kind: Podmetadata: creationTimestamp: "2021-11-16T09:59:05Z" name: ubuntu-sleeper namespace: default resourceVersion: "743" uid: 646a92a3-cd08-4543-a..

Secret 관련 명령어

ㅣSecret은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 저장하는 객체이다. 포드 명세 또는 컨테이너 이미지에 민감 정보가 포함되지 않도록 Secret을 이용해 관리할 수 있다. ConfigMap과 비슷하지만 기밀 데이터를 보관하기 위한 객체라는 점에서 차이가 있다. Secret 목록 확인 이름, Type, 저장된 데이터 수 등의 정보를 확인할 수 있다. kubectl get secrets Secret 상세 정보 확인 kubectl describe secrets # 예시 kubectl describe secrets default-token-8dk4h Secret의 네임스페이스, 저장된 데이터 등을 확인할 수 있다. Secret 생성 create 명령으로 생성할 수 있다. kubectl crea..

Kubernetes 2021.11.24

환경 변수/ConfigMap 관련 명령어

ConfigMap이란 키-값 쌍의 형태로 기밀이 아닌 데이터를 저장하는 객체다. 포드의 환경 변수 등으로 사용할 수 있다. 환경 변수를 확인 및 수정하고 ConfigMap을 생성하여 포드의 환경 변수로 사용하도록 설정하는 방법에 대해 정리해둔다. 포드의 환경 변수 확인 kubectl describe pod Containers 아래 Environment 필드를 확인한다. 포드 환경 변수 업데이트 기존 포드의 환경 변수를 업데이트하는 방법은 따로 없다. 기존 포드의 yaml 파일을 수정한 뒤, 기존 포드를 삭제 및 재생성하면 된다. apiVersion: v1 kind: Pod metadata: creationTimestamp: "2021-11-14T04:57:52Z" labels: name: webapp-c..

포드 생성 시 실행 명령어/매개변수 확인 및 설정

포드가 실행하는 명령어 확인 kubectl describe pods Containers 아래 Command 필드의 정보를 확인한다. 포드 정의 yaml 파일에 command 설정 containers 아래에 cammad 필드를 배열로 작성한다. 배열의 자료형은 문자열이 되도록 큰따옴표로 묶어준다. 예시 1) apiVersion: v1 kind: Pod metadata: name: ubuntu-sleeper-2 spec: containers: - name: ubuntu image: ubuntu command: ['sleep', '5000'] 예시 2) apiVersion: v1 kind: Pod metadata: name: ubuntu-sleeper-3 spec: containers: - name: ubun..

namespace 목록 확인 / 특정 namespace 지정하여 명령어 실행

namespace란 쿠버네티스에서 지원하는 가상 클러스터를 말한다. 이 글에서는 클러스터 내 네임스페이스의 목록을 확인하는 명령어, get 또는 run 명령 실행 시 namespace를 지정하는 방법에 대해 다룬다. 네임스페이스 목록 확인 kubectl get namespaces 실행 결과 특정 네임스페이스의 포드 목록 확인 get 명령에 --namespace 옵션을 설정하여 특정 네임스페이스의 자원을 확인할 수 있다. 값이 없을 때에는 기본값인 default 네임스페이스의 자원을 확인한다. kubectl get pods --namespace= # 예시 kubectl get pods --namespace=research 실행 결과 특정 네임스페이스에 포드 생성 get 명령과 동일하게 --namespace..

deployment 확인 및 생성 명령어

deployment 목록 확인 kubectl get deployments.apps 실행 결과 deployment 상세 정보 조회 deployment의 이름, 네임스페이스, replicas 수, 컨테이너 사용 이미지 등의 상세 정보를 확인한다. kubectl describe deployments.apps # 예시 kubectl describe deployments.apps frontend-deployment 실행 결과 yaml 파일을 이용한 생성 kubectl create -f # 예시 kubectl create -f deployment-definition-1.yaml yaml 파일 예시 apiVersion: apps/v1 kind: Deployment metadata: name: deployment-1 ..

replicaset 관련 명령어

replicaset 관련 기본 명령어를 정리해둔다. replicaset 목록 확인 kubectl get replicasets.apps 실행 결과 replicaset 상세 정보 조회 kubectl describe replicasets.apps # 예시 kubectl describe replicasets.apps new-replica-set 실행 결과 yaml 파일을 사용한 생성 kubectl create -f replicaset-definition-1.yaml yaml 파일 예시 apiVersion: apps/v1 kind: ReplicaSet metadata: name: replicaset-1 spec: replicas: 2 selector: matchLabels: tier: frontend templa..

포드 관련 명령어

쿠버네티스 포드 정보를 확인하거나 생성, 수정, 삭제하는 명령어를 정리해둔다. 포드 목록 조회 포드의 이름, 상태, 동작 컨테이너 수 등의 정보를 확인할 수 있다. kubectl get pods # 상세 정보 포함 kubectl get pods -o wide 포드 상세 정보 확인 지정 포드의 이름, 네임스페이스, 노드, 상태, IP, 컨테이너 등의 상세 정보를 확인할 수 있다. kubectl describe pods 포드 생성 컨테이너를 실행할 새로운 포드를 생성한다. 컨테이너에서 사용할 이미지를 지정해야 한다. kubectl run --image= # --dry-run=client : 실제 수행은 하지 않고, 실행한 결과만을 출력함 # --labels== : 포드 레이블 지정 # --port NUM :..

Storage in Stateful sets

관리자는 PV로 볼륨을 생성한 뒤, 사용자는 PVC로 포드 내에서 볼륨을 사용할 수 있다. 또는 스토리지 클래스를 정의하여 provisioner를 이용해 볼륨을 자동으로 프로비저닝할 수 있다. Stateful Set yaml 형식의 정의 파일에서 같은 PVC를 설정하면, Stateful Set에서 생성한 모든 포드가 같은 볼륨을 사용한다. 여러 포드 또는 애플리케이션의 여러 인스턴스가 같은 스토리지를 공유하고 접근하는 경우에 해당한다. 하지만 각 포드에 별도의 볼륨이 필요한 경우, 즉 데이터 공유를 하지 않는 경우에는 각 포드에 로컬 스토리지가 필요하다. volumeClaimTemplete 배열이기 때문에 여러 템플릿을 지정할 수 있다. apiVersion: apps/v1 kind: StatefulSet..