国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes親和性學習筆記

這篇具有很好參考價值的文章主要介紹了Kubernetes親和性學習筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

歡迎訪問我的GitHub

這里分類和匯總了欣宸的全部原創(chuàng)(含配套源碼):https://github.com/zq2599/blog_demos

本篇概覽

  • 本文是欣宸在學習Kubernetes調度器的過程中,對親和性相關知識點的整理和總結,這是一篇筆記性質的博客

kubernetes默認調度器的調度過程:

  • 調度過程如下:
  1. 預選(Predicates)
  2. 優(yōu)選(Priorities)
  3. 選定(Select)

親和性一覽

  • 這里將親和性先分類,便于理解
graph LR A(親和性)-->B1(節(jié)點親和性); A-->B2(Pod親和性); B1-->C1(硬親和性-required); B1-->C2(軟親和性-preferred); B2-->C3(硬親和性-required); B2-->C4(軟親和性-preferred); B2-->C5(反親和性);

節(jié)點親和性和pod親和性的區(qū)別

  • 舉個例子,假設給小明分配班級(小明是pod,班級是節(jié)點)
  1. 節(jié)點親和性:直接告訴小明,你去一年級

  2. pod親和性:從小朋友中找出和小明同年的,找到了小張,發(fā)現(xiàn)小張是一年級的,于是讓小明去一年級

節(jié)點親和性:硬親和性

  • requiredDuringSchedulinglgnoredDuringExecution:用于定義節(jié)點硬親和性

  • nodeSelectorTerm:節(jié)點選擇器,可以有多個,之間的關系是邏輯或,即一個nodeSelectorTerm滿足即可

  • matchExpressions:匹配規(guī)則定義,多個之間的關系是邏輯與,即同一個nodeSelectorTerm下所有matchExpressions定義的規(guī)則都匹配,才算匹配成功

  • 示例:

apiVersion: v1
kind: Pod
metadata:
  name: with-required-nodeaffinity
spec:
  affinity:
    nodeAffinity: 
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - {key: zone, operator: In, values: ["foo"]}
  containers:
  - name: nginx
    image: nginx
  • 功能與nodeSelector類似,用的是匹配表達式,可以被理解為新一代節(jié)點選擇器
  • 不滿足硬親和性條件時,pod為Pending狀態(tài)
  • 在預選階段,節(jié)點硬親和性被用于預選策略MatchNodeSelector

節(jié)點親和性:軟親和性

  • 特點:條件不滿足時也能被調度

  • 示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deploy-with-node-affinity
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 60
            preference:
              matchExpressions:
              - {key: zone, operator: In, values: ["foo"]}
          - weight: 30
            preference:
              matchExpressions:
              - {key: ssd, operator: Exists, values: []}
      containers:
      - name: nginx
        image: nginx
  • 集群中的節(jié)點,由于標簽不同,導致的優(yōu)先級結果如下:

Kubernetes親和性學習筆記

  • 在優(yōu)選階段,節(jié)點軟親和性被用于優(yōu)選函數(shù)NodeAffinityPriority

  • 注意:NodeAffinityPriority并非決定性因素,因為優(yōu)選階段還會調用其他優(yōu)選函數(shù),例如SelectorSpreadPriority(將pod分散到不同節(jié)點以分散節(jié)點故障導致的風險)

  • pod副本數(shù)增加時,分布的比率會參考節(jié)點親和性的權重

Pod親和性(podAffinity)

  • 如果需求是:新增的pod要和已經存在pod(假設是A)在同一node上,此時用節(jié)點親和性是無法完成的,因為A可能和節(jié)點沒啥關系(可能是隨機調度的),此時只能用pod親和性來實現(xiàn)

  • pod親和性:一個pod與已經存在的某個pod的親和關系,需要通過舉例來說明

  1. 創(chuàng)建一個deployment,這個pod有標簽app=tomcat
kubectl run tomcat -l app=tomcat --image tomcat:alpine
  1. 創(chuàng)建pod,需求是和前面的pod在一起,使用pod親和性來實現(xiàn):
apiVersion: v1
kind: Pod
metadata:
  name: with-pod-affinity-1
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - {key: app, operator: In, values: ["tomcat"]}
        topologyKey: kubernetes.io/hostname
  containers:
  - name: nginx
    image: nginx
  1. 調度邏輯:
graph TD A[1. 用matchExpressions的規(guī)則app=tomcat搜索] -->B(2. 找到tomcat的pod,也就確定了該pod的節(jié)點,假設是A節(jié)點) B --> C(3. topologyKey是kubernetes.io/hostname,所以去找A節(jié)點kubernetes.io/hostname標簽的值,假設是xxx) C --> D(4. 將新的pod調度到kubernetes.io/hostname=xxx的節(jié)點)
  1. 表面上看,最終只是根據hostname去調度的,但如果topologyKey的值是多個節(jié)點所擁有的,就更有通用性了,如下圖,topologyKey等于filure-domain.beta.kubernetes.io/zone:

Kubernetes親和性學習筆記

  • 硬親和:requiredDuringSchedulingIgnoredDuringExecution
  • 軟親和:preferredDuringSchedulingIgnoredDuringExecution

Pod反親和(podAntiAffinity)

  • 與親和性相反,將當前pod調度到滿足匹配條件之外的節(jié)點上
  • 適用場景:
  1. 分散同一類應用
  2. 將不同安全級別的pod調度至不同節(jié)點
  • 示例如下,匹配表達式和自身標簽一致,作用是分散同一類應用,讓相同pod不要調度到同一個節(jié)點:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-with-pod-anti-affinity
spec:
  replicas: 4
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp
      labels:
        app: myapp
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - {key: app, operator: In, values: ["myapp"]}
            topologyKey: kubernetes.io/hostname
      containers:
      - name: nginx
        image: nginx
  • 如果集群中只有三個節(jié)點,那么執(zhí)行上述yaml的結果就是最多創(chuàng)建三個pod,另一個始終處于pending狀態(tài)

參考

  • 本篇筆記參考了以下文章,兩張圖片也來自該文章,致敬作者山山仙人博客
  • https://www.ssgeek.com/post/kubernetes-pod-diao-du-zhi-qin-he-xing-diao-du/

歡迎關注博客園:程序員欣宸

學習路上,你不孤單,欣宸原創(chuàng)一路相伴...文章來源地址http://www.zghlxwxcb.cn/news/detail-585420.html

到了這里,關于Kubernetes親和性學習筆記的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • k8s之親和性、污點

    k8s之親和性、污點

    目錄 親和性 鍵值運算關系 硬策略 軟策略 Pod親和性與反親和性 污點(Taint) 和 容忍(Tolerations) 污點(Taint)? 容忍(Tolerations) 維護操作 故障排除步驟 官方介紹:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ (1)節(jié)點親和性 pod.spec.nodeAffinity ●preferredDuringSchedulingIgnore

    2024年02月06日
    瀏覽(20)
  • k8s~節(jié)點的親和性

    在Kubernetes中,你可以使用節(jié)點親和性(Node Affinity)來控制Pod部署在哪些節(jié)點上。通過配置節(jié)點親和性,你可以指定一些規(guī)則,以確保多個服務不會被調度到同一個節(jié)點上。 requiredDuringSchedulingIgnoredDuringExecution:通過 requiredDuringSchedulingIgnoredDuringExecution ,可以定義在調度期間必

    2024年02月13日
    瀏覽(23)
  • 22-k8s中pod的調度-親和性affinity

    22-k8s中pod的調度-親和性affinity

    ? ? ? ? 在k8s當中,“親和性”分為三種,節(jié)點親和性、pod親和性、pod反親和性; 親和性分類 名稱 解釋說明 nodeAffinity 節(jié)點親和性 通過【節(jié)點】標簽匹配,用于控制pod調度到哪些node節(jié)點上,以及不能調度到哪些node節(jié)點上;(主角node節(jié)點) podAffinity pod親和性 通過【節(jié)點+

    2024年02月20日
    瀏覽(26)
  • K8s之標簽、Node選擇器與親和性詳解

    K8s之標簽、Node選擇器與親和性詳解

    1、標簽是什么? 標簽其實就是一對key/value,key的值必須唯一 標簽可以在創(chuàng)建一個對象的時候直接定義,也可以在后期隨時修改,每一個對象可以擁有多個標簽 標簽可以用來劃分特定的對象(比如版本,服務類型等) 創(chuàng)建標簽后,方便我們對資源進行分組管理(通過標簽查

    2024年02月07日
    瀏覽(27)
  • K8s Pod親和性、污點、容忍度、生命周期與健康探測詳解(下)

    K8s Pod親和性、污點、容忍度、生命周期與健康探測詳解(下)

    ??明明跟你說過:個人主頁 ??個人專欄:《Kubernetes航線圖:從船長到K8s掌舵者》??? ??行路有良友,便是天堂?? 目錄 五、健康探測 1、健康探測的概念 2、Pod啟動探測(Startup Probe) 3、Pod存活探測(Liveness Probe) 4、Pod就緒探測(Readiness Probe) 5、Pod健康探測在故障轉移與

    2024年04月08日
    瀏覽(32)
  • K8s(二)Pod資源——node調度策略、node親和性、污點與容忍度

    K8s(二)Pod資源——node調度策略、node親和性、污點與容忍度

    目錄 node調度策略nodeName和nodeSelector 指定nodeName 指定nodeSelector node親和性 node節(jié)點親和性 硬親和性 軟親和性 污點與容忍度 本文主要介紹了在pod中,與node相關的調度策略,親和性,污點與容忍度等的內容 在創(chuàng)建pod等資源時,可以通過調整字段進行node調度,指定資源調度到滿足

    2024年01月17日
    瀏覽(73)
  • nginx啟動后訪問服務器顯示centos歡迎界面

    nginx啟動后訪問服務器顯示centos歡迎界面

    nginx啟動后訪問服務器顯示centos歡迎界面 步驟一:修改nginx配置文件 /etc/nginx/nginx.conf 修改前會訪問/usr/share/nginx/html目錄下的index.html 步驟二:重啟nginx

    2024年02月13日
    瀏覽(99)
  • 解決nginx已配置但訪問依舊跳轉到nginx的歡迎頁面

    1、確定nginx.conf配置沒有問題 2、確保修改了nginx.conf文件后重啟了nginx,nginx -s reload 3、查看是否有兩個nginx在運行,如果有兩個nginx運行,則停止nginx再重新啟動 ? ? ? ? 查看nginx運行:ps -ef | grep nginx ????????停止nginx:nginx -s stop ????????啟動nginx:nginx 重新訪問頁面,

    2024年02月02日
    瀏覽(26)
  • Kubernetes學習筆記-kubernetes應用擴展(1)-自定義API對象20230622

    Kubernetes學習筆記-kubernetes應用擴展(1)-自定義API對象20230622

    1、CustomResourceDefinitions介紹 開發(fā)者只需要只需向kubernetes api服務器提交CRD對象,即可定義新的資源類型。成功提交CRD之后,就能通過API服務器提交JSON清單或者YAML清單的方式創(chuàng)建自定義資源,以及其他kubernetes資源實例 創(chuàng)建一個CRD對象 website-crd.yaml apiVersion:apiextensions.k8s.io/v1

    2024年02月10日
    瀏覽(36)
  • 《Kubernetes入門實戰(zhàn)課》課程學習筆記(一)

    《Kubernetes入門實戰(zhàn)課》課程學習筆記(一)

    現(xiàn)在 Kubernetes 已經沒有了實際意義上的競爭對手,它的地位就如同 Linux 一樣,成為了事實上的云原生操作系統(tǒng),是構建現(xiàn)代應用的基石。 現(xiàn)代應用是什么? 是微服務,是服務網格,這些統(tǒng)統(tǒng)要圍繞著容器來開發(fā)、部署和運行。 使用容器就必然要用到容器編排技術,在現(xiàn)在只

    2024年02月17日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包