k8s pod resource
yaml 配置
# pod-resource.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-resource
spec:
containers:
- name: pod-resource
image: nginx
ports:
- containerPort: 80
resources:
requests:
memory: 100Mi
cpu: 500m
limits:
memory: 200Mi
cpu: 1000m
配置说明
- requests 调度时候需要使用的资源
- limits 使用时候资源上线
- requests limits 两个值相等,优先级最高,node 资源不够时候会保留到最后
- 内存值说明:100Mi 是 2 进制的值,100M 是 10 进制的值。比如 1Ki == 1024,1K == 1000
- cpu 值说明:500m,表示1秒内占用500毫秒,等于0.5 cpu
创建 pod
#kubectl apply -f pod-resource.yaml
pod/pod-resource created
实时观察创建过程
#kubectl get pods -owide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-resource 0/1 Pending 0 0s <none> <none> <none> <none>
pod-resource 0/1 Pending 0 0s <none> node2 <none> <none>
pod-resource 0/1 ContainerCreating 0 0s <none> node2 <none> <none>
pod-resource 1/1 Running 0 61s 10.244.2.3 node2 <none> <none>
查看 pod 详情
kubectl describe pods pod-resource
容器使用内存超过 limit,会出现 OOM,容器会被销毁
omm 例子
apiVersion: v1
kind: Pod
metadata:
name: memory-oom
spec:
containers:
- name: memory-oom
image: polinux/stress
resources:
requests:
memory: "100Mi"
limits:
memory: "150Mi"
command: ["stress"]
args: ["--vm", "1", "--vm-bytes", "200M", "--vm-hang", "1"]
查看 pod 状态
#kubectl get po -w
NAME READY STATUS RESTARTS AGE
memory-oom 0/1 Pending 0 0s
memory-oom 0/1 Pending 0 0s
memory-oom 0/1 ContainerCreating 0 0s
memory-oom 0/1 OOMKilled 0 3s
memory-oom 0/1 OOMKilled 1 (3s ago) 5s
memory-oom 0/1 CrashLoopBackOff 1 (2s ago) 6s
memory-oom 0/1 OOMKilled 2 (17s ago) 21s
memory-oom 0/1 CrashLoopBackOff 2 (10s ago) 31s