Exercise 4.5: Setting Pod Resource Limits and Requirements

  1. Deployment 생성

    cat <<EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: stressmeout
      name: stressmeout
    spec:
      selector:
        matchLabels:
          app: stressmeout
      template:
        metadata:
          labels:
            app: stressmeout
        spec:
          containers:
          - image: vish/stress
            name: stressmeout
            args:
            - -cpus
            - "2"
            - -mem-total
            - "1950Mi"
            - -mem-alloc-size
            - "100Mi"
            - -mem-alloc-sleep
            - "1s"
    EOF
  2. Pod가 배포된 노드 확인

    kubectl get pod -l app=stressmeout -o wide
  3. Pod가 배포된 노드에서 top 명령어를 실행해서 리소스 사용량 확인

  4. Deployment 수정

    cat <<EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: stressmeout
      name: stressmeout
    spec:
      selector:
        matchLabels:
          app: stressmeout
      template:
        metadata:
          labels:
            app: stressmeout
        spec:
          containers:
          - image: vish/stress
            name: stressmeout
            resources:
              requests:
                cpu: "0.5"
                memory: "500Mi"
              limits:
                cpu: "1"
                memory: "1Gi"
            args:
            - -cpus
            - "2"
            - -mem-total
            - "1950Mi"
            - -mem-alloc-size
            - "100Mi"
            - -mem-alloc-sleep
            - "1s"
    EOF
  5. Pod 상태 추적

    kubectl get pod -l app=stressmeout -w
  6. Ctrl+C 입력

  7. Pod의 상세 내용 확인

    kubectl describe pod -l app=stressmeout
  8. 노드에 부여된 Label 확인

    kubectl get node --show-labels
  9. Deployment 수정

    cat <<EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: stressmeout
      name: stressmeout
    spec:
      selector:
        matchLabels:
          app: stressmeout
      template:
        metadata:
          labels:
            app: stressmeout
        spec:
          nodeSelector:
            kubernetes.io/hostname: worker
          containers:
          - image: vish/stress
            name: stressmeout
            resources:
              requests:
                cpu: "0.5"
                memory: "500Mi"
              limits:
                cpu: "2"
                memory: "2Gi"
            args:
            - -cpus
            - "2"
            - -mem-total
            - "1950Mi"
            - -mem-alloc-size
            - "100Mi"
            - -mem-alloc-sleep
            - "1s"
    EOF
  10. Pod 상태 추적

    kubectl get pod -l app=stressmeout -w
  11. Ctrl+C 입력

  12. Deployment 수정

    cat <<EOF | kubectl apply -f -
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: stressmeout
      name: stressmeout
    spec:
      selector:
        matchLabels:
          app: stressmeout
      template:
        metadata:
          labels:
            app: stressmeout
        spec:
          nodeSelector:
            kubernetes.io/hostname: worker
          containers:
          - image: vish/stress
            name: stressmeout
            resources:
              requests:
                cpu: "2"
                memory: "8Gi"
              limits:
                cpu: "2"
                memory: "8Gi"
            args:
            - -cpus
            - "2"
            - -mem-total
            - "1950Mi"
            - -mem-alloc-size
            - "100Mi"
            - -mem-alloc-sleep
            - "1s"
    EOF
  13. Pod 상태 확인

    kubectl get pod -l app=stressmeout
  14. Pod의 상세 내용 확인

    kubectl describe pod -l app=stressmeout
  15. 노드에 가용한 리소스 확인

    kubectl describe node worker
  16. Deployment 삭제

    kubectl delete deploy stressmeout

Last updated