• (2022版)一套教程搞定k8s安装到实战 | Affinity


    视频来源:B站《(2022版)最新、最全、最详细的KubernetesK8s)教程,从K8s安装到实战一套搞定》

    一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

    附上汇总贴:(2022版)一套教程搞定k8s安装到实战 | 汇总_COCOgsta的博客-CSDN博客


    NodeAffinity:节点亲和力

    • RequiredDuringSchedulingIgnoredDuringExecution:硬亲和力,既支持必须部署在指定的节点上,也支持必须不部署在指定的节点上。
    • PreferredDuringSchedulingIgnoredDuringExecution:软亲和力,尽量部署在满足条件的节点上,或者是尽量不要部署在被匹配的节点。

    PodAffinity:Pod亲和力

    • A应用B应用C应用,将A应用根据某种策略尽量或者部署在一块。Label

      • A:app=a B:app=b
      • RequiredDuringSchedulingIgnoredDuringExecution:将A应用和B应用部署在一块
      • PreferredDuringSchedulingIgnoredDuringExecution:尽量将A应用和B应用部署在一块

    PodAntiAffinity:Pod反亲和力

    • A应用B应用C应用,将A应用根据某种策略尽量或不部署在一块。Label

      • RequiredDuringSchedulingIgnoredDuringExecution:不要将A应用与与之匹配的应用部署在一块
      • PreferredDuringSchedulingIgnoredDuringExecution:尽量。。。

    给节点打上label

    1. kubectl label node k8s-node01 kubernetes.io/e2e-az-name=e2e-az1
    2. kubectl label node k8s-node02 kubernetes.io/e2e-az-name=e2e-az2
    3. kubectl label node k8s-node01 another-node-label-key=another-node-label-value
    4. kubectl label node k8s-master01 another-node-label-key=another-node-label-value
    5. 复制代码

    编辑Deployment

    1. spec:
    2. affinity:
    3. nodeAffinity:
    4. requiredDuringSchedulingIgnoredDuringExecution:
    5. nodeSelectorTerms:
    6. - matchExpressions:
    7. - key: kubernetes.io/e2e-az-name
    8. operator: In
    9. values:
    10. - e2e-az1
    11. - e2e-az2
    12. preferredDuringSchedulingIgnoredDuringExecution:
    13. - weight: 1
    14. preference:
    15. matchExpressions:
    16. - key: another-node-label-key
    17. operator: In
    18. values:
    19. - another-node-label-value
    20. 复制代码

    In:部署在满足多个条件的节点上

    NotIn:不要部署在满足这些条件的节点上

    Exists:部署在具有某个存在key为指定的值的Node节点上

    DoesNotExist:和Exists相反

    Gt:大于指定的条件(条件为number,不能为string)

    Lt:小于指定的条件

    编辑Deployment,修改pod亲和性

    1. spec:
    2. affinity:
    3. podAffinity:
    4. requiredDuringSchedulingIgnoredDuringExecution:
    5. - labelSelector:
    6. matchExpressions:
    7. - key: region
    8. operator: In
    9. values:
    10. - beijing
    11. topologyKey: kubernetes.io/hostname
    12. 复制代码

    编辑Deployment,修改namspace的pod亲和性

    1. spec:
    2. # 把demo-nginx和kube-system namespace下的符合label为k8s-app=calico-kube-controllers的Pod部署在同一个节点上(拓扑域)
    3. affinity:
    4. podAffinity:
    5. requiredDuringSchedulingIgnoredDuringExecution:
    6. - labelSelector:
    7. matchExpressions:
    8. - key: k8s-app
    9. operator: In
    10. values:
    11. - calico-kube-controllers
    12. # 如果写了namespace的字段,但是留空,它是匹配所有namespace下的指定label的Pod,如果写了namespace并且制定了值,就是匹配指定namespace下的指定label的Pod。
    13. # 如果没有写namespace,匹配当前namespace
    14. namespaces:
    15. - kube-system
    16. topologyKey: kubernetes.io/hostname
    17. 复制代码

    topologyKey:拓扑域,首先说明一点,不同的key不同的value是属于不同的拓扑域。

    kube-system->k8s-app=calico-kube-controllers

    拓扑域划分演示:

    1. kubectl label node k8s-master01 k8s-node01 jigui=1
    2. kubectl label node k8s-master02 k8s-node02 jigui=2
    3. kubectl label node k8s-master03 jigui=3
    4. kubectl edit deploy demo-nginx
    5. spec:
    6. affinity:
    7. podAntiAffinity:
    8. requiredDuringSchedulingIgnoreDuringExecution:
    9. - labelSelector:
    10. matchExpressions:
    11. - key: app
    12. operator: In
    13. values:
    14. - demo-nginx
    15. topologyKey: jigui
    16. 复制代码

    扩展到4个pod,其中3个可以找到部署节点,最后一个处于pending状态,因为配置了3个拓扑域,最后一个找不到部署节点

    配置为软亲和力

    1. spec:
    2. affinity:
    3. podAntiAffinity:
    4. preferredDuringSchedulingIgnoreDuringExecution:
    5. - weight: 1
    6. podAffinityTerm:
    7. labelSelector:
    8. matchExpressions:
    9. - key: app
    10. operator: In
    11. values:
    12. - demo-nginx
    13. topologyKey: jigui
    14. 复制代码

     

  • 相关阅读:
    宜明昂科冲刺港股:年内亏损7.3亿 礼来与阳光人寿是股东
    【机器学习】期望最大算法(EM算法)解析:Expectation Maximization Algorithm
    Redis可视化工具-Another Redis Desktop Manager 安装
    Python获取免费代理IP,并全部测试一遍,结果大失所望
    JS中数值类型的本质
    JAVA 0基础 基本数据类型之间的互相转换
    【【VDMA彩条显示实验之四 含C语言代码】】
    Consumer的负载均衡
    传入标签 sql按标签筛选数据 数据必须符合标签
    防雷接地+防雷工程施工综合方案
  • 原文地址:https://blog.csdn.net/guolianggsta/article/details/126580305