Kubernetes/KoudKloud - CKAD with Tests 22

Probe 설정

Probe란 컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단(diagnostic)을 말한다. 이 글에서는 컨테이너가 요청을 처리할 준비가 되었는지 여부를 나타내는 Readiness Probe와, 컨테이너가 동작 중인지에 대한 여부를 나타내는 Liveness Probe를 설정하는 방법을 간단하게 정리한다. Readiness Probe 설정 포드 정의 yaml 파일 내 spec > containers 아래에 readinessProbe 필드를 추가하여 설정한다. 예시는 지정한 포트 및 경로에서 컨테이너의 IP주소에 대한 HTTP Get 요청 수행하는 httpGet을 설정한 yaml 파일이다. apiVersion: v1 kind: Pod metadata: creationTimestamp: "2021-..

Deployment에 Node Affinity 설정

Node Affinity란 노드의 레이블을 기반으로 포드/Deployment를 스케줄 할 수 있는 노드를 제한할 수 있는 방법이다. 이 글에서는 Node에 Label을 설정하고, Deployment에 Node Affinity를 설정하는 방법을 정리한다. Node의 Label 확인 kubectl describe nodes # 예시 kubectl describe nodes node01 Node에 Label 설정 kubectl label nodes KEY=VALUE # 예시 kubectl label nodes node01 color=blue Deployment에 Node Affinity 설정 추가 Node affinity 설정은 yaml 파일에 정의한다. 이미 존재하는 Deployment를 수정하는 경우에는 ..

Taints/Tolerations 관련 명령어

노드가 포드를 스케쥴링되지 않도록 하는 Taints와 포드가 Taints가 설정된 노드와 설정되지 않은 노드에 스케쥴링될 수 있도록 하는 Tolerations는 함께 동작하는 개념이다. 이 글에서는 Taints/Tolerations을 확인하고 설정하는 방법을 정리한다. Node의 Taints 확인 describe 명령 실행 결과의 Taints 필드에서 확인할 수 있다. kubectl describe node Node에 Taints 설정 taint 명령으로 설정을 추가한다. kubectl taint node KEY=VALUE:EFFECT # 예시 kubectl taint node node01 spray=mortein:NoSchedule Node에서 Taints 삭제 taint 명령 끝에 - 기호를 붙여 설..

Service Accounts 관련 명령어

Service Accounts는 포드에서 실행되는 프로세스를 위한 것으로, 네임스페이스에 각각 정의할 수 있다. 이 글에서는 Service Accounts 목록 확인, 상세 정보 확인 및 생성, 포드에 설정하는 방법에 대해 정리한다. Service Accounts 목록 확인 get 명령어로 확인할 수 있다. kubectl get serviceaccounts Service Accounts 상세 정보 확인 describe 명령어로 함께 생성된 토큰 등의 이름을 확인할 수 있다. kubectl describe serviceaccounts # 예시 kubectl describe serviceaccounts default 포드에서 Service Accounts credential이 저장된 정보 확인 서비스 계정 ..

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

포드 내 컨테이너의 리소스 관리를 위해 최소 요구량과 제한량을 확인하고 설정하는 방법에 대해 적어둔다. 컨테이너 리소스 요구량 설정 확인 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: v1 kind: Pod metadata: creationTimestamp: "2021-11-16T09:59:05Z" name: ubuntu-sleeper namespace: default resourceVersion: "743" uid: 646a92a3-cd08-4543-a..

환경 변수/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 ..

1 2 3