Exercise 4.3: Resource Limits for a Namespace

  1. Namespace 생성

    kubectl create ns dev
  2. Namespace 생성 확인

    kubectl get ns dev
  3. LimitRange 생성

    cat <<EOF | kubectl -n dev create -f -
    apiVersion: v1
    kind: LimitRange
    metadata:
      name: default-resource-range
    spec:
      limits:
      - default:
          cpu: 1
          memory: 500Mi
        defaultRequest:
          cpu: 0.5
          memory: 100Mi
        type: Container
    EOF
  4. LimitRange 생성 확인

    kubectl get limitranges -n dev
  5. Deployment 생성

    kubectl create deployment nginx --image=nginx -n dev
  6. Deployment 생성 확인

    kubectl get deploy,pod -l app=nginx -n dev
  7. Pod에 할당된 리소스 확인

    kubectl -n low-usage-limit get pod POD_NAME -o yaml \
    | grep -A 6 -B 5 resources

    OR

    kubectl -n dev get pod \
    $(kubectl get pod -l app=nginx -o=jsonpath='{.items[0].metadata.name}' -A) -o yaml \
    | grep -A 6 -B 5 resources
  8. 리소스 할당을 명시한 Deployment 생성

    cat <<EOF | kubectl -n dev create -f -
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: apache
      name: apache
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: apache
      template:
        metadata:
          labels:
            app: apache
        spec:
          containers:
          - image: httpd
            name: apache
            resources:
              limits:
                cpu: "1"
                memory: "4Gi"
              requests:
                cpu: "0.5"
                memory: "500Mi"
    EOF
  9. Deployment 생성 확인

    kubectl get deploy,pod -l app=apache -n dev
  10. Pod에 할당된 리소스 확인

    kubectl -n low-usage-limit get pod POD_NAME -o yaml \
    | grep -A 6 -B 5 resources

    OR

    kubectl -n dev get pod \
    $(kubectl get pod -l app=apache -o=jsonpath='{.items[0].metadata.name}' -A) -o yaml \
    | grep -A 6 -B 5 resources
  11. 리소스 삭제

    {
        kubectl delete deployment --all -n dev
        kubectl delete ns dev
    }

Last updated