[kubernetes] yaml 필드 정리

Mr.Song·2022년 6월 10일
0

Docker / Kubernetes

목록 보기
4/13

파드 CPU/Mem 설정

  • .spec.containers[].resource.limits.cpu
  • .spec.containers[].resource.limits.memory
  • .spec.containers[].resource.requests.cpu
  • .spec.containers[].resource.requests.memory
apiVersion: v1
kind: Pod
metadata:
  name: kubernetes-simple-pod
  labels:
    app: kubernetes-simple-pod
spec:
  containers:
  - name: kubernetes-simple-pod
    image: arisu1000/simple-container-app:latest
    resources:
      requests:
        cpu: 0.1
        memory: 200M
      limits:
        cpu: 0.5
        memory: 1G
    ports:
    - containerPort: 8080

requests 필드는 최소 자원 요구량을 나타내며, 노드에 최소 자원 요구량만큼 여유가 있어야 파드를 스케줄링할 수 있다. 여유 자원이 있는 노드가 없다면 상태는 Pending상태로 실행되지않고, 클러스터 안에 자원 여유가 생길때까지 대기한다. limits 필드는 최대 사용가능한 범위를 나타낸다.

Mem 단위는 기본 바이트이며 십진법 접두어(K,M,G...)를 사용할 수 있다. CPU 단위는 코어 개수로 표시되는데, 일반적으로 코어개수라고하면 1,2,3,4 등 정수로만 설정할 수 있다고 오해할 수 있다. 위를 예시로 request필드 값이 0.1이고 limits 필드값이 0.5이다. CPU 코어하나의 연산량이 100이라고 할 때 10%만큼 연산능력을 할당한다는 의미고 50%까지만 활용하도록 제한한다는 의미이다.

Deployment history

디플로이먼트를 edit나 yaml 파일을 수정하여 재배포가 가능하다.
디플로이먼트 파일의 변경 내역은 kubectl rollout history deploy 디플로이먼트 명으로 확인할 수 있다.
어떤 변경사항이 있었는지 상세보기를 원한다면 kubectl rollout history deploy 디플로이먼트 명 --revisions=리비전숫자를 입력하면 된다
보이는 것처럼 CHANGE-CAUSE 값이 none으로 표기되고 있는데, 변경 내용을 메모하고 싶다면 yaml 파일에서 .metadata.annotations.kubernetes.io/change-cause:에 데이터를 추가하면 된다

-- 디플로이먼트 변경 히스토리
root@k8s-master1:~/kubespray/inventory/test/group_vars/k8s_cluster# k rollout history deploy nginx-deployment
deployment.apps/nginx-deployment
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>

-- 디플로이먼트 히스토리 상세
root@k8s-master1:~/kubespray/inventory/test/group_vars/k8s_cluster# k rollout history deploy nginx-deployment --revision=3
deployment.apps/nginx-deployment with revision #3
Pod Template:
  Labels:	app=nginx-deployment
	pod-template-hash=75c99c94fb
  Containers:
   nginx-deployment:
    Image:	nginx:1.10.1
    Port:	80/TCP
    Host Port:	0/TCP
    Environment:	<none>
    Mounts:	<none>
  Volumes:	<none>

-- 디플로이먼트 롤백
root@k8s-master1:~/kubespray/inventory/test/group_vars/k8s_cluster# k rollout undo deploy nginx-deployment
deployment.apps/nginx-deployment rolled back

-- 히스토리 변경 내용 메모
root@k8s-master1:~/kubespray/inventory/test/group_vars/k8s_cluster# vi nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx-deployment
  annotations:
    kubernetes.io/change-cause: version 1.10.1

root@k8s-master1:~/kubespray/inventory/test/group_vars/k8s_cluster# k apply -f nginx-deployment.yaml



-- 히스토리 CHANGE-CAUSE
root@k8s-master1:~/kubespray/inventory/test/group_vars/k8s_cluster# k rollout history deploy nginx-deployment
deployment.apps/nginx-deployment
REVISION  CHANGE-CAUSE
3         <none>
4         <none>
5         version 1.10.1
profile
정리를 못하면 기록이라도 하자!!

0개의 댓글