k8s 资源调度(nodeSelector、nodeAffinity、taint&tolrations、nodeName)

    • 创建一个Pod的工作流程
  • Pod中影响调度的主要属性

  • 资源限制对Pod调度的影响

    • 示例
  • nodeSelector & nodeAffinity

    • 示例
  • 示例

  • Taint(污点)& Tolerations(污点容忍)

    • 示例
  • 示例

  • nodeName

创建一个Pod的工作流程


在这里插入图片描述

  • Kubernetes基于list-watch机制的控制器架构,实现组件间交互的解耦。

  • 其他组件监控自己负责的资源,当这些资源发生变化时,kube-apiserver会通知这些组件,这个过程类似于发布与订阅。

//帮助

[root@master ~]# kubectl explain deploy.spec.template.spec.containers.resources

KIND: Deployment

VERSION: apps/v1

RESOURCE: resources

DESCRIPTION:

Compute Resources required by this container. Cannot be updated. More info:

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

ResourceRequirements describes the compute resource requirements.

FIELDS:

limits <map[string]string>

Limits describes the maximum amount of compute resources allowed. More

info:

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

requests <map[string]string>

Requests describes the minimum amount of compute resources required. If

Requests is omitted for a container, it defaults to Limits if that is

explicitly specified, otherwise to an implementation-defined value. More

info:

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

Pod中影响调度的主要属性


在这里插入图片描述

资源限制对Pod调度的影响


容器资源限制:

  • resources.limits.cpu

  • resources.limits.memory

容器使用的最小资源需求,作为容器调度时资源分配的依据:

  • resources.requests.cpu

  • resources.requests.memory

CPU单位:可以写m也可以写浮点数。例如0.5=500m, 1=1000m

示例

//K8s会根据Request的值去查找有足够资源的Node来调度此Pod

[root@master ~]# cat tt.yml

apiVersion: v1

kind: Pod

metadata:

name: nginx

namespace: default

spec:

containers:

  • name: nginx

image: nginx

imagePullPolicy: IfNotPresent

resources:

requests:

memory: “64Mi”

cpu: “250m”

limits:

memory: “128Mi”

cpu: “500m”

[root@master ~]# kubectl apply -f tt.yml

pod/nginx created

[root@master ~]# kubectl describe node node1

Name: node1

Roles:

Labels: beta.kubernetes.io/arch=amd64

beta.kubernetes.io/os=linux

kubernetes.io/arch=amd64

kubernetes.io/hostname=node1

kubernetes.io/os=linux

Annotations: flannel.alpha.coreos.com/backend-data: {“VNI”:1,“VtepMAC”:“fe:b4:c1:77:05:a5”}

flannel.alpha.coreos.com/backend-type: vxlan

flannel.alpha.coreos.com/kube-subnet-manager: true

flannel.alpha.coreos.com/public-ip: 192.168.129.135

kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock

node.alpha.kubernetes.io/ttl: 0

volumes.kubernetes.io/controller-managed-attach-detach: true

CreationTimestamp: Sat, 18 Dec 2021 16:30:11 +0800

Taints:

Unschedulable: false

Lease:

HolderIdentity: node1

AcquireTime:

RenewTime: Thu, 23 Dec 2021 20:35:59 +0800

Conditions:

Type Status LastHeartbeatTime LastTransitionTime Reason Message


NetworkUnavailable False Thu, 23 Dec 2021 19:56:36 +0800 Thu, 23 Dec 2021 19:56:36 +0800 FlannelIsUp Flannel is running on this node

MemoryPressure False Thu, 23 Dec 2021 20:31:46 +0800 Wed, 22 Dec 2021 04:32:02 +0800 KubeletHasSufficientMemory kubelet has sufficient memory available

DiskPressure False Thu, 23 Dec 2021 20:31:46 +0800 Wed, 22 Dec 2021 04:32:02 +0800 KubeletHasNoDiskPressure kubelet has no di

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值