StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-sc
provisioner: kubernetes.io/no-provisioner
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
LimitRange
apiVersion: v1
kind: LimitRange
metadata:
name: default-limits
namespace: dev
spec:
limits:
- type: Container
default:
cpu: 500m
memory: 256Mi
defaultRequest:
cpu: 100m
memory: 128Mi
max:
cpu: "2"
memory: 1Gi
ResourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
name: my-quota
namespace: myns
spec:
hard:
pods: "10"
resourcequotas: "1"
services: "5"
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
Custom Resource (CRD instance)
apiVersion: example.com/v1
kind: Widget
metadata:
name: my-widget
spec:
size: large
color: blue
EndpointSlice (manual external endpoint)
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: my-svc
labels:
kubernetes.io/service-name: my-svc
addressType: IPv4
ports:
- protocol: TCP
port: 9999
endpoints:
- addresses:
- 192.168.1.100
Multi-container Pod
apiVersion: v1
kind: Pod
metadata:
name: multi-pod
spec:
containers:
- name: first
image: busybox:1.28
command: ["sh", "-c", "sleep 3600"]
env:
- name: ORDER
value: FIRST
- name: second
image: nginx:1.17
ports:
- containerPort: 8080
- name: third
image: busybox:1.31.1
command: ["sh", "-c", "sleep 3600"]
env:
- name: ORDER
value: THIRD
QoS classes quick reference
resources:
requests: {cpu: 200m, memory: 200Mi}
limits: {cpu: 200m, memory: 200Mi}
resources:
limits: {memory: 200Mi}
kubectl get pods -n <ns> \
--output=custom-columns="NAME:.metadata.name,QOS:.status.qosClass"
Namespace: Pod Security labels
apiVersion: v1
kind: Namespace
metadata:
name: secure-ns
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: latest
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
Role + RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
namespace: dev
rules:
- apiGroups: [""]
resources: [pods]
verbs: [get, list, watch]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods
namespace: dev
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-reader
subjects:
- kind: ServiceAccount
name: my-sa
namespace: dev
Exam gotchas
Forbidden: exceeded quota → admission, not RBAC: check ResourceQuota USED vs HARD- Namespace with ResourceQuota needs LimitRange defaults or explicit requests/limits on every container
- Job/CronJob restartPolicy is
Never or OnFailure - StatefulSet needs a matching headless Service