Debian上Kubernetes资源分配与管理指南
在Debian上部署Kubernetes时,**资源请求(Requests)和资源限制(Limits)**是资源分配的核心机制。
cpu: "1", memory: "1Gi"),适用于关键业务(如数据库),确保资源稳定分配。cpu: "0.5", memory: "512Mi"),适用于波动负载应用(如Web服务),兼顾资源弹性和稳定性。cpu: "0", memory: "0"),适用于批处理任务,资源紧张时会被优先驱逐。kubectl top nodes:查看节点资源使用情况(需安装Metrics Server)。kubectl describe pod <pod-name>:查看Pod的资源请求、限制及调度详情。kubectl apply -f <config-file>.yaml:通过YAML文件部署资源(如Deployment、ResourceQuota)。# Deployment配置(设置容器资源限制)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
resources:
requests:
cpu: "0.5"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
# ResourceQuota配置(限制命名空间资源总量)
apiVersion: v1
kind: ResourceQuota
metadata:
name: rq-default
namespace: default
spec:
hard:
pods: "50"
requests.cpu: "4"
requests.memory: "4Gi"
limits.cpu: "8"
limits.memory: "8Gi"
apiVersion: v1
kind: LimitRange
metadata:
name: lim-default
namespace: default
spec:
limits:
- default:
cpu: "0.5"
memory: "512Mi"
defaultRequest:
cpu: "0.25"
memory: "256Mi"
type: Container
disk=ssd),提高应用性能。示例如下:affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disk
operator: In
values:
- ssd
topologyKey: kubernetes.io/hostname)。通过节点的NUMA拓扑结构分配CPU,减少CPU争用,提升内存访问性能(需Kubernetes 1.22+版本支持)。
根据Pod的QoS等级,Kubernetes在资源紧张时会优先驱逐BestEffort→Burstable→Guaranteed的Pod,确保关键业务稳定运行。
kubectl top命令依赖),需提前安装。apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-nginx
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
kubectl set resources命令使用。storage: "10Gi"),实现存储资源的动态分配。local、nfs),支持动态存储供应(无需手动创建PV)。示例如下:apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: np-default
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
name: default
kubectl delete pod --field-selector=status.phase==Failed),释放节点资源。/etc/sysctl.conf文件,调整网络参数(如net.core.somaxconn=65535)和内存参数(如vm.swappiness=10),提高资源利用率。