限制内存资源为256Mi
标签:
写在前面上一篇文章中kubernetes系列教程(五)深入掌握核心观点pod初阶介绍了yaml学习kubernetes中重要的一个观点pod,接下来介绍kubernetes系列教程pod的resource资源打点和pod的Quality of service处事质量。
1. Pod资源打点 1.1 resource界说容器运行过程中需要分配所需的资源,如何与cggroup联动共同呢?答案是通过界说resource来实现资源的分配,资源的分配单位主要是cpu和memory,资源的界说分两种:requests和limits,requests暗示请求资源,主要用于初始kubernetes调理pod时的依据,暗示必需满足的分配资源;limits暗示资源的限制,即pod不能赶过limits界说的限制巨细,赶过则通过cggroup限制,pod中界说资源可以通过下面四个字段界说:
spec.container[].resources.requests.cpu 请求cpu资源的巨细,如0.1个cpu和100m暗示分配1/10个cpu;
spec.container[].resources.requests.memory 请求内存巨细,单位可用M,Mi,G,,Gi暗示;
spec.container[].resources.limits.cpu 限制cpu的巨细,不能赶过阀值,cggroup中限制的值;
spec.container[].resources.limits.memory 限制内存的巨细,不能赶过阀值,赶过会产生OOM;
1、开始学习如何界说pod的resource资源,如下以界说nginx-demo为例,容器请求cpu资源为250m,限制为500m,请求内存资源为128Mi,限制内存资源为256Mi,固然也可以界说多个容器的资源,多个容器相加就是pod的资源总资源,如下:
[[email protected] demo]#cat nginx-resource.yaml apiVersion: v1 kind: Pod metadata: name: nginx-demo labels: name: nginx-demo spec: containers: - name: nginx-demo image: nginx:1.7.9 imagePullPolicy: IfNotPresent ports: - name: nginx-port-80 protocol: TCP containerPort: 80 resources: requests: cpu: 0.25 memory: 128Mi limits: cpu: 500m memory: 256Mi2、应用pod的配置界说(如之前的pod还存在,先将其删除kubectl delete pod <pod-name>),或pod定名为此外一个名
[[email protected] demo]# kubectl apply -f nginx-resource.yaml pod/nginx-demo created3、检察pod资源的分配详情
[[email protected] demo]# kubectl get pods NAME READY STATUS RESTARTS AGE demo-7b86696648-8bq7h 1/1 Running 0 12d demo-7b86696648-8qp46 1/1 Running 0 12d demo-7b86696648-d6hfw 1/1 Running 0 12d nginx-demo 1/1 Running 0 94s [[email protected] demo]# kubectl describe pods nginx-demo Name: nginx-demo Namespace: default Priority: 0 Node: node-3/10.254.100.103 Start Time: Sat, 28 Sep 2019 12:10:49 +0800 Labels: name=nginx-demo Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"labels":{"name":"nginx-demo"},"name":"nginx-demo","namespace":"default"},"sp... Status: Running IP: 10.244.2.13 Containers: nginx-demo: Container ID: docker://55d28fdc992331c5c58a51154cd072cd6ae37e03e05ae829a97129f85eb5ed79 Image: nginx:1.7.9 Image ID: docker-pullable://[email protected]:e3456c851a152494c3e4ff5fcc26f240206abac0c9d794affb40e0714846c451 Port: 80/TCP Host Port: 0/TCP State: Running Started: Sat, 28 Sep 2019 12:10:51 +0800 Ready: True Restart Count: 0 Limits: #限制资源 cpu: 500m memory: 256Mi Requests: #请求资源 cpu: 250m memory: 128Mi Environment: <none> ...省略...4、Pod的资源如何分配呢?毫无疑问是从node上分配的,当我们创建一个pod的时候如果设置了requests,kubernetes的调理器kube-scheduler会执行两个调理过程:filter过滤和weight称重,kube-scheduler会按照请求的资源过滤,把切合条件的node筛选出来,然后再进行排序,把最满足运行pod的node筛选出来,然后再特定的node上运行pod。调理算法和细节可以参考下kubernetes调理算法介绍。如下是node-3节点资源的分配详情:
[[email protected] ~]# kubectl describe node node-3 ...省略... Capacity: #节点上资源的总资源情况,1个cpu,2g内存,110个pod cpu: 1 ephemeral-storage: 51473888Ki hugepages-2Mi: 0 memory: 1882352Ki pods: 110 Allocatable: #节点容许分配的资源情况,部分预留的资源会排出在Allocatable领域 cpu: 1 ephemeral-storage: 47438335103 hugepages-2Mi: 0 memory: 1779952Ki pods: 110 System Info: Machine ID: 0ea734564f9a4e2881b866b82d679dfc System UUID: FFCD2939-1BF2-4200-B4FD-8822EBFFF904 Boot ID: 293f49fd-8a7c-49e2-8945-7a4addbd88ca Kernel Version: 3.10.0-957.21.3.el7.x86_64 OS Image: CentOS Linux 7 (Core) Operating System: linux Architecture: amd64 Container Runtime Version: docker://18.6.3 Kubelet Version: v1.15.3 Kube-Proxy Version: v1.15.3 PodCIDR: 10.244.2.0/24 Non-terminated Pods: (3 in total) #节点上运行pod的资源的情况,除了nginx-demo之外还有多个pod Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE --------- ---- ------------ ---------- --------------- ------------- --- default nginx-demo 250m (25%) 500m (50%) 128Mi (7%) 256Mi (14%) 63m kube-system kube-flannel-ds-amd64-jp594 100m (10%) 100m (10%) 50Mi (2%) 50Mi (2%) 14d kube-system kube-proxy-mh2gq 0 (0%) 0 (0%) 0 (0%) 0 (0%) 12d Allocated resources: #已经分配的cpu和memory的资源情况 (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 350m (35%) 600m (60%) memory 178Mi (10%) 306Mi (17%) ephemeral-storage 0 (0%) 0 (0%) Events: <none> 1.2 资源分配道理温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32808.html