600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > kubernetes(五)------taint(排斥)和toleration(亲和)

kubernetes(五)------taint(排斥)和toleration(亲和)

时间:2020-05-08 21:02:42

相关推荐

kubernetes(五)------taint(排斥)和toleration(亲和)

kubernetes集群中,master机器,分配任务给worker node机器时,会根据任务的不同要求,比如对内存的要求等,分配给不同符合需求的worker node。所以就有了toleration和taint的这种偏好设置。

1. Toleration 和Taint 概念

Toleration是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点。比如一个节点内存比较大,会吸引需要大内存的pod。

Taint 则相反,它使节点能够排斥一类特定的 pod。

Taint 和 toleration 相互配合,可以用来避免 pod 被分配到不合适的节点上。每个节点上都可以应用一个或多个 taint ,这表示对于那些不能容忍这些 taint 的 pod,是不会被该节点接受的。如果将 toleration 应用于 pod 上,则表示这些 pod 可以(但不要求)被调度到具有匹配 taint 的节点上

2. taint一个worker node

kubectl taint node node1 node-type=prod:NoSchedule (这里的node1根据你真实的node名字来写)

3.schedule一个pod到指定环境

(1)新建一个devpod.yaml的文件,内容如下:

apiVersion: v1

kind: Pod

metadata:

name: devpod

labels:

app: busybox

spec:

containers:

- name: dev

image: busybox

command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

(2)根据步骤(1)中的yaml文件,创建pod

kubectl create -f devpod.yaml

4. 允许一个pod被schedule到一个pod环境

(1)创建一个deploypod.yaml文件

apiVersion: apps/v1

kind: Deployment

metadata:

name: prod

spec:

replicas: 1

selector:

matchLabels:

app: prod

template:

metadata:

labels:

app: prod

spec:

containers:

- args:

- sleep

- "3600"

image: busybox

name: main

tolerations:

- key: node-type

operator: Equal

value: prod

effect: NoSchedule

(2)以下命令,新建一个deployment(yaml文件里面的kind是pod,那么以下命令创建的就是pod;kind如果是deployment,那么以下命令新建的就是deployment)

kubectl create -f deploypod.yaml

5. 检查每个pod是否被schedule了

kubectl get pods -o wide

6. 检查production pod的toleraion属性

kubectl get pods <pod_name> -o yaml

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。