1. 程式人生 > >深入kubernetes排程之NodeSelector

深入kubernetes排程之NodeSelector

Kubernetes的排程有簡單,有複雜,指定NodeName和使用NodeSelector排程是最簡單的,可以將Pod排程到期望的節點上。
Kubernetes&Docker技術交流QQ群:491137983,一起學習,共同進步!

本文主要介紹kubernetes排程框架中的NodeName和NodeSelector。

1 NodeName

Pod.spec.nodeName用於強制約束將Pod排程到指定的Node節點上,這裡說是“排程”,但其實指定了nodeName的Pod會直接跳過Scheduler的排程邏輯,直接寫入PodList列表,該匹配規則是強制匹配。

例子:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcat-deploy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: tomcat-app
    spec:
      nodeName: k8s.node1 #指定排程節點為k8s.node1
      containers:
      - name: tomcat
        image: tomcat:8.0
        ports:
        - containerPort: 8080

2 NodeSelector

Pod.spec.nodeSelector是通過kubernetes的label-selector機制進行節點選擇,由scheduler排程策略MatchNodeSelector進行label匹配,排程pod到目標節點,該匹配規則是強制約束。啟用節點選擇器的步驟為:

  • Node新增label標記
#標記規則:kubectl label nodes <node-name> <label-key>=<label-value>
kubectl label nodes k8s.node1 cloudnil.com/role=dev

#確認標記
[email protected].master1:~# kubectl get nodes k8s.node1 --show-labels NAME STATUS AGE LABELS k8s.node1 Ready 29d beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,cloudnil.com/role=dev,kubernetes.io/hostname=k8s.node1
  • Pod定義中新增nodeSelector
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tomcat-deploy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: tomcat-app
    spec:
      nodeSelector:
        cloudnil.com/role: dev #指定排程節點為帶有label標記為:cloudnil.com/role=dev的node節點
      containers:
      - name: tomcat
        image: tomcat:8.0
        ports:
        - containerPort: 8080

相關推薦

深入kubernetes排程NodeSelector

Kubernetes的排程有簡單,有複雜,指定NodeName和使用NodeSelector排程是最簡單的,可以將Pod排程到期望的節點上。 Kubernetes&Docker技術交

深入kubernetes排程原理分析

排程器是編排工具的核心,排程策略和演算法是編排工具的靈魂。Kubernetes之所以能夠大行其道,正是因為其優良的排程演算法,本文就來分析下kubernets中scheduler元件的排程原理。 Kubernetes&Docker技術交流QQ

kubernetes排程NodeSelector

http://blog.csdn.net/tiger435/article/details/73650147 本文主要介紹kubernetes排程框架中的NodeName和NodeSelector。 1 NodeName Pod.spec.nodeName用於強制約

Kubernetes排程親和性和反親和性

背景 Kubernetes中的排程策略可以大致分為兩種,一種是全域性的排程策略,要在啟動排程器時配置,包括kubernetes排程器自帶的各種predicates和priorities演算法;另一種是執行時排程策略,包括nodeAffinity(主機親和性),podAffinity(

Kubernetes排程親和與反親和

系列目錄 部署pod時,大多數情況下kubernetes的排程程式能將pod排程到叢集中合適的節點上。但有些情況下使用者需要對pod排程到哪個節點上施加更多控制,比如將特定pod部署到擁有SSD儲存節點、將同一個服務的多個後端部署在不同的機器上提高安全性、將通訊頻繁的服務部署在同一個可用區域降低通訊鏈路長

kubernetes排程汙點(taint)和容忍(toleration)

系列目錄 節點親和性(affinity),是節點的一種屬性,讓符合條件的pod親附於它(傾向於或者硬性要求).汙點是一種相反的行為,它會使pod抗拒此節點(即pod排程的時候不被排程到此節點) 汙點和容易結合在一起以確保pod不會被排程到不適合的節點上.當一個或者多個汙點新增到某個節點上,則意味著此節點不

kubernetes排程資源配額

系列目錄 當多個使用者或者開發團隊共享一個有固定節點的的kubernetes叢集時,一個團隊或者一個使用者使用的資源超過他應當使用的資源是需要關注的問題,資源配額是管理員用來解決這個問題的一個工具. 資源配額,通過ResourceQuota定義,提供了對某一名稱空間使用資源的總體約束.它即可以限制這個名稱

kubernetes排程資源配額示例

系列目錄 前面說過,資源配額限制在指定名稱空間下,對資源物件數量和特定型別的資源的限制,你可以在ResourceQuota中指定配額 建立名稱空間 我們建立一個新的名稱空間來演示 kubectl create namespace quota-object-example 建立資源配額 以下是資源配額物件的

kubernetes排程pod優先順序和資源搶佔

系列目錄 Pod可以擁有優先順序.優先意味著相對於其它pod某個pod更為重要.如果重要的pod不能被排程,則kubernetes排程器會優先於(驅離)低優先順序的pod來讓處於pending狀態的高優先順序pod被排程. kubernetes 1.9以後,優先順序會影響pod的排程順序和資源耗盡時pod

kubernetes排程資源耗盡處理配置

系列目錄 本篇將介紹如何使用kubelet處理資源耗盡的情況 當可用的計算機資源非常低的時候,kubelet仍然要保證節點的穩定性.當處理不可壓縮的計算機資源(比如記憶體或磁碟空間)時,這尤其重要,當這些資源被耗盡時,節點將變得不穩定 驅離策略 kubelet會積極的監視並阻止可用計算機資源耗盡.這種情況

深入kubernetes調度NodeSelector

調度 rep com 列表 sta spec aml ready sel 本文主要介紹kubernetes調度框架中的NodeName和NodeSelector。 1 NodeName Pod.spec.nodeName用於強制約束將Pod調度到指定的Node節點上,這裏說

kubernetes資源排程LimitRange

系列目錄 LimitRange從字面意義上來看就是對範圍進行限制,實際上是對cpu和記憶體資源使用範圍的限制 前面我們講到過資源配額,資源配額是對整個名稱空間的資源的總限制,是從整體上來限制的,而LimitRange則是對pod和container級別來做限制的 由於LimitRange是基於名稱空間的,

Kubernetes K8S排程器kube-scheduler詳解

  Kubernetes K8S之排程器kube-scheduler概述與詳解   kube-scheduler排程概述 在 Kubernetes 中,排程是指將 Pod 放置到合適的 Node 節點上,然後對應 Node 上的 Kubelet 才能夠執行這些 pod。 排程器通過 k

深入理解javascript設計模式

rip 是我 解決問題 不想 接受 button move center 常識 設計模式 設計模式是命名、抽象和識別對可重用的面向對象設計實用的的通用設計結構。設計模式確定類和他們的實體、他們的角色和協作、還有他們的責任分配。 每個設計模式都聚焦於一個面向對象的設計難題

kubernetes部署創建TLS證書(2)

efault control sage 啟用 簽名證書 sched amd .json 進行 研究過kubernetes的同事們都知道,kubernetes如果需要啟用TLS認證,那麽制作證書是必不可少的一步。然而,很多人在制作證書上遇到了很多的麻煩。今天主要記錄一次我在部

深入理解javascript原型

undefine tor ace 對象實例 高級 code turn 三方 true 理解原型 原型是一個對象。其它對象能夠通過它實現屬性繼承。不論什麽一個對象都能夠成為繼承,全部對象在默認的情況下都有一個原型。由於原型本身也是對象,所以每一個原型自身又有一個原型

深入理解Java線程池

我們 先進先出 tor cor null 討論 等於 影響 log 重要連接:http://www.cnblogs.com/dolphin0520/p/3958019.html 出處:http://www.cnblogs.com/dolphin0520/     本文歸作者

深入理解JVMJVM內存區域與內存分配

錯誤 銷毀 構造方法 初學 不存在 data 空閑 table fin 深入理解JVM之JVM內存區域與內存分配   在學習jvm的內存分配的時候,看到的這篇博客,該博客對jvm的內存分配總結的很好,同時也利用jvm的內存模型解釋了java程序中有關參數傳遞的問題。  

docker深入2-UIportainer的本地構建

golang.org portainer ui docker go docker深入2-UI之portainer的本地構建2017/9/26一、準備環境 依賴:Docker, Node.js >= 0.8.4 和 npm ~] curl --silent --location ht

三分鐘深入TT貓故障轉移

分布式、微服務、 集群之路結束了一周繁忙的工作,趁著周末,小編手中的鍵盤早已饑渴難耐了,想知道上期省略號中發生了什麽有趣的故事麽?且聽小編娓娓道來,結尾有彩蛋。風月前場春風再續,書接上回,春香園的老鴇媽媽,給這位血氣方剛的騷年挑選了一位佳人A,於是乎騷年興致勃勃的進入了閨房,宜言飲酒,與子同歡,琴瑟在禦,莫不