举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > kubernetes master节点 Kubernetes 用节点亲和性把Pods分配到节点

kubernetes master节点 Kubernetes 用节点亲和性把Pods分配到节点

2023-04-25 20:31 Kubernetes(k8s)手册

kubernetes master节点 Kubernetes 用节点亲和性把Pods分配到节点

kubernetes master节点 Kubernetes 用节点亲和性把Pods分配到节点

kubernetes master节点

用节点亲和性把 Pods 分配到节点

本页展示在 Kubernetes 集群中,如何使用节点亲和性把 Kubernetes Pod 分配到特定节点。

在开始之前

你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 建议在至少有两个节点的集群上运行本教程,且这些节点不作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

  • Katacoda
  • 玩转 Kubernetes

您的 Kubernetes 服务器必须是 v1.10 或更高版本。 要检查版本,请输入 ​kubectl version​。

给节点添加标签

  1. 列出集群中的节点及其标签:
  2. kubectl get nodes --show-labels
    

    输出类似于此:

    NAME      STATUS    ROLES    AGE     VERSION        LABELS
    worker0   Ready     <none>   1d      v1.13.0        ...,kubernetes.io/hostname=worker0
    worker1   Ready     <none>   1d      v1.13.0        ...,kubernetes.io/hostname=worker1
    worker2   Ready     <none>   1d      v1.13.0        ...,kubernetes.io/hostname=worker2
  3. 选择一个节点,给它添加一个标签:
  4. kubectl label nodes <your-node-name> disktype=ssd
    

    其中 ​<your-node-name>​ 是你所选节点的名称。

  5. 验证你所选节点具有 ​disktype=ssd​ 标签:
  6. kubectl get nodes --show-labels
    

    输出类似于此:

    NAME      STATUS    ROLES    AGE     VERSION        LABELS
    worker0   Ready     <none>   1d      v1.13.0        ...,disktype=ssd,kubernetes.io/hostname=worker0
    worker1   Ready     <none>   1d      v1.13.0        ...,kubernetes.io/hostname=worker1
    worker2   Ready     <none>   1d      v1.13.0        ...,kubernetes.io/hostname=worker2

    在前面的输出中,可以看到 ​worker0 ​节点有一个 ​disktype=ssd​ 标签。

依据强制的节点亲和性调度 Pod 

下面清单描述了一个 Pod,它有一个节点亲和性配置 ​requiredDuringSchedulingIgnoredDuringExecution​,​disktype=ssd​。 这意味着 pod 只会被调度到具有 ​disktype=ssd​ 标签的节点上。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: disktype
            operator: In
            values:
            - ssd            
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  1. 执行(Apply)此清单来创建一个调度到所选节点上的 Pod:
  2. kubectl apply -f https://k8s.io/examples/pods/pod-nginx-required-affinity.yaml
    
  3. 验证 pod 已经在所选节点上运行:
  4. kubectl get pods --output=wide
    

    输出类似于此:

    NAME     READY     STATUS    RESTARTS   AGE    IP           NODE
    nginx    1/1       Running   0          13s    10.200.0.4   worker0

使用首选的节点亲和性调度 Pod

本清单描述了一个Pod,它有一个节点亲和性设置 ​preferredDuringSchedulingIgnoredDuringExecution​,​disktype: ssd​。 这意味着 pod 将首选具有 ​disktype=ssd​ 标签的节点。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  affinity:
    nodeAffinity:
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: disktype
            operator: In
            values:
            - ssd          
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  1. 执行此清单创建一个会调度到所选节点上的 Pod:
  2. kubectl apply -f https://k8s.io/examples/pods/pod-nginx-preferred-affinity.yaml
    
  3. 验证 pod 是否在所选节点上运行:
  4. kubectl get pods --output=wide
    

    输出类似于此:

    NAME     READY     STATUS    RESTARTS   AGE    IP           NODE
    nginx    1/1       Running   0          13s    10.200.0.4   worker0


阅读全文
以上是鳄鱼CMS为你收集整理的kubernetes master节点 Kubernetes 用节点亲和性把Pods分配到节点全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们