Kubernetes create namespace with default quotas

Posted by

Yesterday I posted a blog article around how to create a new namespace for a new deployment and apply quotas.  However, I immediately got several requests around is there an easier way to do this or apply quotas at the namespace level for all future pod creations. 

Personal best practice; I like creating a yaml file for everything when I can.  This way it is easy to transition to other engineers and if you need to make an edit to task it won’t possibly effect other variables inside the config file that may not be related to your change.

Article from yesterday:

How to set defaults at namespace level

Apply the two yaml files

$ kubectl describe limits limits –namespace=<namespace>

This will show you the default limits on the namespace now

This means when you deploy a deployment it will be using the defaults

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-deployment
  namespace: namespace-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: helloworld
  template:
    metadata:
      labels:
        app: helloworld
    spec:
      containers:
      - name: k8s-demo
        image: vmpebryant/k8s-demo
        ports:
        - name: nodejs-port
          containerPort: 3000

Deploy the helloworld config file

As you may note from the previous blog article we have not specified the quotas in this config file

As you can see the three expected pods were deployed in the namespace

$ kubectl describe pod <pod> –namespace=<namespace>

Just to confirm the limits for the pod.

Summary:
Just by creating one additional config file we are able to set new default limits for resources on this namespace.  As always, I hope y’all found this helpful.

Leave a Reply