我的编程空间,编程开发者的网络收藏夹
学习永远不晚

k8s调度器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

k8s调度器

节点硬亲和度:Pod调度时必须满足规划,如不满足Pod状态将是Penging状态。

节点软亲和度:Pod调度时先按规则进行调度,如不满足规则也会找一个不匹配的节点运行。

Pod硬亲和度,软亲和度与节点硬亲和度,软亲和度相似。

节点硬亲和度(节点不满足规则)

[root@k8s01 yaml]# cat pod-affinity01.yaml

apiVersion: v1kind: Podmetadata:  name: pod-01spec:  affinity:    nodeAffinity:      requiredDuringSchedulingIgnoredDuringExecution:        nodeSelectorTerms:        - matchExpressions:          - {key: zone,operator: In,values: ["one"]}   --节点zone(键)标签必须是one(值)  containers:  - name: pod-01    image: nginx:latest    imagePullPolicy: Never

[root@k8s01 yaml]# kubectl apply -f pod-affinity01.yaml

pod/pod-01 created

[root@k8s01 yaml]# kubectl get pods --show-labels

NAME    READY    STATUS      RESTARTS      AGE      LABELS

pod-01       0/1        Pending                 0            103s         <none> --node节点不满足pod标签

[root@k8s01 yaml]# kubectl describe pods pod-01

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Events:

Type Reason Age From Message

---- ------ ---- ---- -------

Warning FailedScheduling <unknown> default-scheduler 0/3 nodes are available: 3 node(s) didn't match node selector.

Warning FailedScheduling <unknown> default-scheduler 0/3 nodes are available: 3 node(s) didn't match node selector.

[root@k8s01 yaml]#

- matchExpressions:  - {key: zone,operator: In,values: ["one"]} --zone是键,operator:是表达式,one是值  - {key: zone,operator: In,values: ["one","two"]} --In 是包含  - {key: ssd,operator: Exists,values: []} --Exists是存在

节点硬亲和度(节点满足规则)

[root@k8s01 yaml]# kubectl label node k8s02 zone=one     --在k8s02节点创建标签

node/k8s02 labeled

[root@k8s01 yaml]# kubectl get pods --show-labels -o wide

NAME    READY    STATUS    RESTARTS    AGE    IP    NODE    NOMINATED    NODE    READINESS   GATES LABELS

pod-01      1/1            Running       0         6m13s          10.244.1.37         k8s02       <none>     <none>     <none>

[root@k8s01 yaml]#

节点软亲和度

[root@k8s01 yaml]# cat pod-affinity02.yaml

apiVersion: apps/v1kind: Deploymentmetadata:  name: pod-02spec:  replicas: 3  selector:    matchLabels:      app: myapp  template:    metadata:      name: myapp-pod      labels:        app: myapp    spec:      affinity:        nodeAffinity:          preferredDuringSchedulingIgnoredDuringExecution:          - weight: 60    --60%的Pod会调度到zone标签,one值这个节点上            preference:              matchExpressions:              - {key: zone,operator: In,values: ["one"]}      containers:      - name: pod-02        image: nginx:latest        imagePullPolicy: Never

[root@k8s01 yaml]# kubectl apply -f pod-affinity02.yaml

deployment.apps/pod-02 created

[root@k8s01 yaml]# kubectl get pods --show-labels -o wide    --满足标签可创建,不满足也可创建

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS

pod-02-77d87986b-9bzg5 1/1 Running 0 16s 10.244.1.39 k8s02 <none> <none> app=myapp,pod-template-hash=77d87986b

pod-02-77d87986b-dckjq 1/1 Running 0 16s 10.244.2.42 k8s03 <none> <none> app=myapp,pod-template-hash=77d87986b

pod-02-77d87986b-z7v47 1/1 Running 0 16s 10.244.1.38 k8s02 <none> <none> app=myapp,pod-template-hash=77d87986b

[root@k8s01 yaml]#

Pod硬亲和度(节点不满足规则)

[root@k8s01 yaml]# kubectl  get pods --show-labels
NAME                     READY   STATUS    RESTARTS   AGE   LABELS
nginx                    1/1     Running   0          4s    app=web
[root@k8s01 yaml]# cat pod-affinity03.yaml 

apiVersion: v1kind: Podmetadata:  name: pod-01spec:  affinity:    podAffinity:      requiredDuringSchedulingIgnoredDuringExecution:      - labelSelector:          matchExpressions:          - {key: app,operator: In,values: ["web1"]}   --标签值不满足        topologyKey: kubernetes.io/hostname  containers:  - name: pod-01    image: nginx:latest    imagePullPolicy: Never

[root@k8s01 yaml]# kubectl apply -f  pod-affinity03.yaml
pod/pod-01 created
[root@k8s01 yaml]# kubectl  get pods --show-labels -o wide
NAME     READY   STATUS    RESTARTS   AGE    IP      NODE     NOMINATED NODE   READINESS GATES   LABELS
nginx                    1/1     Running   0          8m9s   10.244.1.42   k8s02    <none>           <none>            app=web
pod-01                  0/1     Pending   0          28s    <none>        <none>   <none>           <none>            <none>
[root@k8s01 yaml]#

Pod硬亲和度(节点满足规则)

[root@k8s01 yaml]# kubectl  get pods --show-labels      --查看pod标签
NAME                     READY   STATUS    RESTARTS   AGE   LABELS
nginx                    1/1     Running   0          4s    app=web
[root@k8s01 yaml]# cat pod-affinity04.yaml 

apiVersion: v1kind: Podmetadata:  name: pod-01spec:  affinity:    podAffinity:      requiredDuringSchedulingIgnoredDuringExecution:      - labelSelector:          matchExpressions:          - {key: app,operator: In,values: ["web"]}        topologyKey: kubernetes.io/hostname  containers:  - name: pod-01    image: nginx:latest    imagePullPolicy: Never

[root@k8s01 yaml]# kubectl apply -f  pod-affinity04.yaml
pod/pod-01 created
[root@k8s01 yaml]# kubectl  get pods --show-labels -o wide       --创建的新Pod会找app=web的标签
NAME     READY   STATUS    RESTARTS   AGE     IP     NODE    NOMINATED NODE   READINESS GATES   LABELS
nginx                    1/1     Running   0          4m14s   10.244.1.42   k8s02   <none>           <none>            app=web
pod-01                  1/1     Running   0          17s     10.244.1.43   k8s02   <none>           <none>            <none>
[root@k8s01 yaml]#

Pod软亲和度

[root@k8s01 yaml]# kubectl  get pods --show-labels -o wide
NAME      READY   STATUS    RESTARTS   AGE     IP      NODE     NOMINATED NODE   READINESS GATES   LABELS
nginx                    1/1     Running   0          14m     10.244.1.42   k8s02    <none>           <none>            app=web

[root@k8s01 yaml]# cat pod-affinity04.yaml 

apiVersion: apps/v1kind: Deploymentmetadata:  name: pod-02spec:  replicas: 3  selector:    matchLabels:      app: myapp  template:    metadata:      name: myapp-pod      labels:        app: myapp    spec:      affinity:        podAffinity:          preferredDuringSchedulingIgnoredDuringExecution:          - weight: 60            podAffinityTerm:              labelSelector:                matchExpressions:                - {key: app,operator: In,values: ["web12"]}              topologyKey: zone      containers:      - name: pod-02        image: nginx:latest        imagePullPolicy: Never

[root@k8s01 yaml]# kubectl  get pods --show-labels -o wide     --不满足Pod软亲和度也可创建
NAME      READY   STATUS    RESTARTS   AGE     IP    NODE     NOMINATED NODE   READINESS GATES   LABELS
nginx                    1/1     Running   0          16m     10.244.1.42   k8s02    <none>      <none>       app=web
pod-02-6f96fbfdf-52gbf   1/1     Running   0   11s     10.244.2.43   k8s03    <none>    <none>     app=myapp,pod-template-hash=6f96fbfdf
pod-02-6f96fbfdf-dl5z5   1/1     Running   0    11s     10.244.1.44   k8s02    <none>    <none>    app=myapp,pod-template-hash=6f96fbfdf
pod-02-6f96fbfdf-f8bzn   1/1     Running   0    11s     10.244.0.55   k8s01    <none>    <none>    app=myapp,pod-template-hash=6f96fbfdf
[root@k8s01 yaml]#

定义污点和容忍度

NoSchedule:不能容忍此污点的新Pod对像,不能调度到当前节点,强制性。

PreferNoSchedule:新Pod尽量不调度到此节点,若无其它节点可以调度,也允许使用当前节点调度,柔和性。

NoExecute:新Pod不能调度到当前节点,如果当前节点存在Pod也会被驱逐,强制性。

[root@k8s01 yaml]# kubectl  describe node k8s02 | grep -i taints     --查看污点
Taints:             <none>
[root@k8s01 yaml]# kubectl taint node k8s02 node-type=production:NoSchedule    --为k8s02节点打污点

node/k8s02 tainted
[root@k8s01 yaml]# kubectl  describe node k8s02 | grep -i taints
Taints:             node-type=production:NoSchedule
[root@k8s01 yaml]# cat pod-affinity05.yaml 

apiVersion: apps/v1kind: Deploymentmetadata:  name: pod-02spec:  replicas: 3  selector:    matchLabels:      app: myapp  template:    metadata:      name: myapp-pod      labels:        app: myapp    spec:      containers:      - name: pod-02        image: nginx:latest        imagePullPolicy: Never

[root@k8s01 yaml]# kubectl apply -f  pod-affinity05.yaml
deployment.apps/pod-02 created
[root@k8s01 yaml]# kubectl  get pods -o wide --show-labels     --k8s02节点已打污点,所以不能调度Pod对像
NAME     READY   STATUS    RESTARTS   AGE   IP       NODE    NOMINATED NODE   READINESS GATES   LABELS
pod-02-5c54dc6489-j7tsh   1/1     Running   0          29s   10.244.0.56   k8s01   <none>           <none>            app=myapp,pod-template-hash=5c54dc6489
pod-02-5c54dc6489-sk5dm   1/1     Running   0          29s   10.244.2.44   k8s03   <none>           <none>            app=myapp,pod-template-hash=5c54dc6489
pod-02-5c54dc6489-sn5wd   1/1     Running   0          29s   10.244.2.45   k8s03   <none>           <none>            app=myapp,pod-template-hash=5c54dc6489

[root@k8s01 yaml]

删除污点

[root@k8s01 yaml]# kubectl  taint node k8s02 node-type:NoSchedule-      --删除NoSchedule污点

node/k8s02 untainted

[root@k8s01 yaml]# kubectl taint node k8s02 node-type=production:PreferNoSchedule      --打上污点
node/k8s02 tainted
[root@k8s01 yaml]# kubectl  describe node k8s02 | grep -i node-type
Taints:             node-type=production:PreferNoSchedule
[root@k8s01 yaml]# kubectl taint node k8s02 node-type:PreferNoSchedule-    --删除PreferNoSchedule污点

node/k8s02 untainted
[root@k8s01 yaml]# kubectl  describe node k8s02 | grep -i node-type

[root@k8s01 yaml]# kubectl taint node k8s02 node-type-                  --删除所有污点
node/k8s02 untainted
[root@k8s01 yaml]# kubectl  describe node k8s02 | grep -i node-type
[root@k8s01 yaml]#

驱逐节点上的Pod

[root@k8s01 yaml]# kubectl cordon k8s03    --将新创建的pod不能调度到k8s03节点,以前的Pod不受影响。
node/k8s03 cordoned
[root@k8s01 yaml]# kubectl  get nodes
NAME    STATUS                     ROLES    AGE   VERSION
k8s01   Ready                      master   71d   v1.16.0
k8s02   Ready                      <none>   70d   v1.16.0
k8s03   Ready,SchedulingDisabled   <none>   30d   v1.16.0

[root@k8s01 yaml]# kubectl  get pods -o wide
NAME       READY   STATUS    RESTARTS   AGE   IP      NODE    NOMINATED NODE   READINESS GATES
pod-02-5c54dc6489-442kx   1/1     Running   0          12m   10.244.2.48   k8s03   <none>           <none>
pod-02-5c54dc6489-92l8m   1/1     Running   0          12m   10.244.2.49   k8s03   <none>           <none>
pod-02-5c54dc6489-k4bc7   1/1     Running   0          12m   10.244.0.58   k8s01   <none>           <none>
[root@k8s01 yaml]# kubectl uncordon k8s03     --释放调度规则
node/k8s03 uncordoned
[root@k8s01 yaml]# kubectl  get nodes
NAME    STATUS   ROLES    AGE   VERSION
k8s01   Ready    master   71d   v1.16.0
k8s02   Ready    <none>   70d   v1.16.0
k8s03   Ready    <none>   30d   v1.16.0
[root@k8s01 yaml]# kubectl drain k8s03 --ignore-daemonsets     --去除k8s03节点上的Pod
node/k8s03 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-cg795, kube-system/kube-proxy-h5dkf
evicting pod "pod-02-5c54dc6489-92l8m"
evicting pod "pod-02-5c54dc6489-442kx"
pod/pod-02-5c54dc6489-92l8m evicted
pod/pod-02-5c54dc6489-442kx evicted
node/k8s03 evicted
[root@k8s01 yaml]# kubectl  get nodes
NAME    STATUS               ROLES    AGE   VERSION
k8s01   Ready                      master   71d   v1.16.0
k8s02   Ready                      <none>   70d   v1.16.0
k8s03   Ready,SchedulingDisabled   <none>   30d   v1.16.0
[root@k8s01 yaml]# kubectl  get pods -o wide         --以前k8s03节点的Pod全部转移到其它节点上
NAME           READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
pod-02-5c54dc6489-k4bc7   1/1     Running   0          14m   10.244.0.58   k8s01   <none>           <none>
pod-02-5c54dc6489-mxk46   1/1     Running   0          25s   10.244.1.46   k8s02   <none>           <none>
pod-02-5c54dc6489-vmb8l   1/1     Running   0          25s   10.244.1.45   k8s02   <none>           <none>
[root@k8s01 yaml]# kubectl uncordon k8s03     --恢复调度
node/k8s03 uncordoned
[root@k8s01 yaml]# kubectl  get nodes
NAME    STATUS   ROLES    AGE   VERSION
k8s01   Ready    master   71d   v1.16.0
k8s02   Ready    <none>   70d   v1.16.0
k8s03   Ready    <none>   30d   v1.16.0
[root@k8s01 yaml]#

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

k8s调度器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

k8s调度器

节点硬亲和度:Pod调度时必须满足规划,如不满足Pod状态将是Penging状态。节点软亲和度:Pod调度时先按规则进行调度,如不满足规则也会找一个不匹配的节点运行。Pod硬亲和度,软亲和度与节点硬亲和度,软亲和度相似。1.节点硬亲和度(节
2023-06-04

goland远程调试k8s上容器的实现

本文主要介绍了goland远程调试k8s上容器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-01

调度器简介,以及Linux的调度策略

进程是操作系统虚拟出来的概念,用来组织计算机中的任务。但随着进程被赋予越来越多的任务,进程好像有了真实的生命,它从诞生就随着CPU时间执行,直到最终消失。不过,进程的生命都得到了操作系统内核的关照。就好像疲于照顾几个孩子的母亲内核必须做出决
2023-06-05

Go调度器学习之goroutine调度怎么创建

今天小编给大家分享一下Go调度器学习之goroutine调度怎么创建的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 协程
2023-07-05

云服务器调度

云服务器调度是指管理服务器上的所有资源的过程。云服务器调度可以通过以下步骤实现:创建一个虚拟网络:创建一个虚拟网络来管理本地网络,并将多个服务器的网络连接到该网络中。分配IP地址:为每个服务器分配一个唯一的IP地址,并将该IP地址分配给服务器中的所有服务器。控制网络流量:可以通过限制网络流量来避免服务器之间的竞争,从而提高服务器的利用率。可以使用流量控制面板或者应用程序内部的流量管理功能。管理资源:可以将...
2023-10-27

Go调度器学习之系统调用详解

这篇文章肿,将以一个简单的文件打开的系统调用,来分析一下Go调度器在系统调用时做了什么。文中的示例代码讲解详细,需要的可以参考一下
2023-05-14

怎么理解Linux Kernel调度器

本篇内容介绍了“怎么理解Linux Kernel调度器”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为什么需要调度Linux 是一个多任务
2023-06-15

PostgreSQL源码学习--调度器#12

本节介绍ProcessQuery函数。相关数据结构//src/include/executor/execdesc.htypedef struct QueryDesc{/* These fields are provided by CreateQueryDesc
PostgreSQL源码学习--调度器#12
2016-10-26

PostgreSQL源码学习--调度器#14

本节介绍PortalRun函数。PortalRun函数//src/include/tcop/pquery.hextern bool PortalRun(Portal portal, long count, bool isTopLevel, bool run_
PostgreSQL源码学习--调度器#14
2019-04-29

Linux I/O调度器是什么

这篇文章主要介绍Linux I/O调度器是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux I/O 调度器是Linux内核中的一个组成部分,用户可以通过调整这个调度器来优化系统性能。Linux I/O 系
2023-06-16

PostgreSQL源码学习--调度器#13

本节介绍PortalRunMulti函数。PortalRunMulti函数static voidPortalRunMulti(Portal portal, bool isTopLevel, bool setHoldSnapshot, DestRecei
PostgreSQL源码学习--调度器#13
2017-12-22

win7显示器亮度如何调

这篇“win7显示器亮度如何调”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7显示器亮度如何调”文章吧。win7电脑显
2023-07-01

Win7显示器亮度怎么调?Win7显示器色度设定

很多使用Win7系统软件的用户还不知道如何正确调整显示器的色彩设置,这导致他们在日常电脑操作中经常遇到问题。那下边小编就给各位产生Win7显示器色度的实际调整方式。碰到一样问题的客户快看来一下吧。屏幕亮度调节方式:1、点一下桌面上左下方的开
2023-07-16

Linux调度器BFS有哪些作用

本篇内容主要讲解“Linux调度器BFS有哪些作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux调度器BFS有哪些作用”吧!BFS 是一个进程调度器,可以解释为“脑残调度器”。这古怪的
2023-06-16

C# TaskScheduler任务调度器的实现

本文主要介绍了C# TaskScheduler任务调度器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
2023-05-20

怎么更改Linux的IO调度器

本篇内容主要讲解“怎么更改Linux的IO调度器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么更改Linux的IO调度器”吧!目前 Linux 上有如下几种 I/O 调度算法:noop -
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录