kubernetes之资源调度的方式
1. 容器资源的限制
表示最多使用多少cpu和内存资源
- resources.limits.cpu
- resources.limits.memory
表示最少使用的CPU和内存资源
- resources.requests.cpu
- resources.requests.memory
[root@master ~]# kubectl describe nodes node1.example.com //节点的信息
省略N行
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 100m (5%) 100m (5%) //cpu使用率
memory 50Mi (1%) 50Mi (1%) //内存使用情况
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
[root@master test]# cat test.yml
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: b1
image: busybox
command: ["/bin/sh","-c","sleep 9000"]
resources:
requests:
memory: 100Mi
cpu: 0.01
env:
- name: HN
valueFrom:
fieldRef:
fieldPath: status.podIPs
[root@master test]# kubectl apply -f test.yml //创建一个pod进行测试
pod/test created
[root@master test]# kubectl get pod -o wide //运行再node1上
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test 1/1 Running 0 57s 10.244.1.60 node1.example.com <none> <none>
[root@master haproxy]# kubectl describe nodes node1.example.com
Resource Requests Limits
-------- -------- ------
cpu 110m (5%) 100m (5%) //cpu变成了110,这是再原来的基础上增加的,原来是100,而我们设置requests为0.01就是增加十,因为默认100才能让node1运行,所以设置最少0.01就是在此基础上加10
memory 150Mi (5%) 50Mi (1%)// 内存变为150,同理
ephemeral-storage 0 (0%) 0 (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
[root@master test]# cat test.yml
---
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: b1
image: busybox
command: ["/bin/sh","-c","sleep 9000"]
resources:
requests:
memory: 30Mi
cpu: 0.001
limits:
memory: 40Mi
cpu: 0.01
env:
- name: HN
valueFrom:
fieldRef:
fieldPath: status.podIPs
2. nodeSelector节点选择器
nodeSelector:用于将Pod调度到匹配Label的Node上,如果没有匹配的标签会调度失败。
作用:
- 约束Pod到特定的节点运行
- 完全匹配节点标签
- 应用场景:
- 专用节点:根据业务线将Node分组管理
- 配备特殊硬件:部分Node配有SSD硬盘、GPU
// 查看所有节点的标签
[root@master test]# kubectl get nodes --sh