日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes標簽和選擇算符

標簽和選擇算符

標簽(Labels) 是附加到 Kubernetes 對象(比如 Pods)上的鍵值對。 標簽旨在用于指定對用戶有意義且相關(guān)的對象的標識屬性,但不直接對核心系統(tǒng)有語義含義。 標簽可以用于組織和選擇對象的子集。標簽可以在創(chuàng)建時附加到對象,隨后可以隨時添加和修改。 每個對象都可以定義一組鍵/值標簽。每個鍵對于給定對象必須是唯一的。

吳江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

"metadata": {
  "labels": {
    "key1" : "value1",
    "key2" : "value2"
  }
}

標簽?zāi)軌蛑С指咝У牟樵兒捅O(jiān)聽操作,對于用戶界面和命令行是很理想的。 應(yīng)使用注解 記錄非識別信息。

動機

標簽使用戶能夠以松散耦合的方式將他們自己的組織結(jié)構(gòu)映射到系統(tǒng)對象,而無需客戶端存儲這些映射。

服務(wù)部署和批處理流水線通常是多維實體(例如,多個分區(qū)或部署、多個發(fā)行序列、多個層,每層多個微服務(wù))。 管理通常需要交叉操作,這打破了嚴格的層次表示的封裝,特別是由基礎(chǔ)設(shè)施而不是用戶確定的嚴格的層次結(jié)構(gòu)。

示例標簽:

  • ?"release" : "stable"?, ?"release" : "canary" ?
  • ?"environment" : "dev"?, ?"environment" : "qa"?, ?"environment" : "production" ?
  • ?"tier" : "frontend"?, ?"tier" : "backend"?, ?"tier" : "cache" ?
  • ?"partition" : "customerA"?, ?"partition" : "customerB" ?
  • ?"track" : "daily"?, ?"track" : "weekly"?

有一些常用標簽的例子; 你可以任意制定自己的約定。 請記住,標簽的 Key 對于給定對象必須是唯一的。

語法和字符集 

標簽 是鍵值對。有效的標簽鍵有兩個段:可選的前綴和名稱,用斜杠(?/?)分隔。 名稱段是必需的,必須小于等于 63 個字符,以字母數(shù)字字符(?[a-z0-9A-Z]?)開頭和結(jié)尾, 帶有破折號(?-?),下劃線(?_?),點( ?.?)和之間的字母數(shù)字。 前綴是可選的。如果指定,前綴必須是 DNS 子域:由點(?.?)分隔的一系列 DNS 標簽,總共不超過 253 個字符, 后跟斜杠(?/?)。

如果省略前綴,則假定標簽鍵對用戶是私有的。 向最終用戶對象添加標簽的自動系統(tǒng)組件(例如 ?kube-scheduler?、?kube-controller-manager?、 ?kube-apiserver?、?kubectl? 或其他第三方自動化工具)必須指定前綴。

?kubernetes.io/? 和 ?K8S.io/? 前綴是為 Kubernetes 核心組件保留的。

有效標簽值:

  • 必須為 63 個字符或更少(可以為空)
  • 除非標簽值為空,必須以字母數(shù)字字符(?[a-z0-9A-Z]?)開頭和結(jié)尾
  • 包含破折號(?-?)、下劃線(?_?)、點(?.?)和字母或數(shù)字。

標簽選擇算符 

與名稱和 UID 不同, 標簽不支持唯一性。通常,我們希望許多對象攜帶相同的標簽。

通過 標簽選擇算符,客戶端/用戶可以識別一組對象。標簽選擇算符是 Kubernetes 中的核心分組原語。

API 目前支持兩種類型的選擇算符:基于等值的 和 基于集合的。 標簽選擇算符可以由逗號分隔的多個 需求 組成。 在多個需求的情況下,必須滿足所有要求,因此逗號分隔符充當邏輯 與(?&&?)運算符。

空標簽選擇算符或者未指定的選擇算符的語義取決于上下文, 支持使用選擇算符的 API 類別應(yīng)該將算符的合法性和含義用文檔記錄下來。

對于某些 API 類別(例如 ReplicaSet)而言,兩個實例的標簽選擇算符不得在命名空間內(nèi)重疊, 否則它們的控制器將互相沖突,無法確定應(yīng)該存在的副本個數(shù)。

對于基于等值的和基于集合的條件而言,不存在邏輯或(||)操作符。 你要確保你的過濾語句按合適的方式組織。

基于等值的需求

基于等值 或 基于不等值 的需求允許按標簽鍵和值進行過濾。 匹配對象必須滿足所有指定的標簽約束,盡管它們也可能具有其他標簽。 可接受的運算符有?=?、?==? 和 ?!=? 三種。 前兩個表示 相等(并且只是同義詞),而后者表示 不相等。例如:

environment = production
tier != frontend

前者選擇所有資源,其鍵名等于 ?environment?,值等于 ?production?。 后者選擇所有資源,其鍵名等于 ?tier?,值不同于 ?frontend?,所有資源都沒有帶有 ?tier ?鍵的標簽。 可以使用逗號運算符來過濾 ?production ?環(huán)境中的非 ?frontend ?層資源:?environment=production,tier!=frontend?。

基于等值的標簽要求的一種使用場景是 Pod 要指定節(jié)點選擇標準。 例如,下面的示例 Pod 選擇帶有標簽 "?accelerator=nvidia-tesla-p100?"。

apiVersion: v1
kind: Pod
metadata:
  name: cuda-test
spec:
  containers:
    - name: cuda-test
      image: "k8s.gcr.io/cuda-vector-add:v0.1"
      resources:
        limits:
          nvidia.com/gpu: 1
  nodeSelector:
    accelerator: nvidia-tesla-p100

基于集合的需求

基于集合 的標簽需求允許你通過一組值來過濾鍵。 支持三種操作符:?in?、?notin ?和 ?exists ?(只可以用在鍵標識符上)。例如:

environment in (production, qa)
tier notin (frontend, backend)
partition
!partition

  • 第一個示例選擇了所有鍵等于 ?environment ?并且值等于 ?production ?或者 ?qa ?的資源。
  • 第二個示例選擇了所有鍵等于 ?tier ?并且值不等于 ?frontend ?或者 ?backend ?的資源,以及所有沒有 ?tier ?鍵標簽的資源。
  • 第三個示例選擇了所有包含了有 ?partition ?標簽的資源;沒有校驗它的值。
  • 第四個示例選擇了所有沒有 ?partition ?標簽的資源;沒有校驗它的值。

類似地,逗號分隔符充當 與 運算符。因此,使用 ?partition ?鍵(無論為何值)和 ?environment ?不同于 ?qa? 來過濾資源可以使用 ?partition, environment notin(qa)? 來實現(xiàn)。

基于集合 的標簽選擇算符是相等標簽選擇算符的一般形式,因為 ?environment=production? 等同于 ?environment in(production)?;?!=? 和 ?notin ?也是類似的。

基于集合 的要求可以與基于 相等 的要求混合使用。例如:?partition in (customerA, customerB),environment!=qa?。

API

LIST 和 WATCH 過濾

LIST 和 WATCH 操作可以使用查詢參數(shù)指定標簽選擇算符過濾一組對象。 兩種需求都是允許的。(這里顯示的是它們出現(xiàn)在 URL 查詢字符串中)

  • 基于等值 的需求: ??labelSelector=environment%3Dproduction,tier%3Dfrontend ?
  • 基于集合 的需求: ??labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29?

兩種標簽選擇算符都可以通過 REST 客戶端用于 list 或者 watch 資源。 例如,使用 ?kubectl ?定位 ?apiserver?,可以使用 基于等值 的標簽選擇算符可以這么寫:

kubectl get pods -l environment=production,tier=frontend

或者使用 基于集合的 需求:

kubectl get pods -l 'environment in (production),tier in (frontend)'

正如剛才提到的,基于集合 的需求更具有表達力。例如,它們可以實現(xiàn)值的 或 操作:

kubectl get pods -l 'environment in (production, qa)'

或者通過 exists 運算符限制不匹配:

kubectl get pods -l 'environment,environment notin (frontend)'

在 API 對象中設(shè)置引用

一些 Kubernetes 對象,例如 ?services ?和 ?replicationcontrollers ?, 也使用了標簽選擇算符去指定了其他資源的集合,例如 pods。

Service 和 ReplicationController

一個 ?Service ?指向的一組 Pods 是由標簽選擇算符定義的。同樣,一個 ?ReplicationController ?應(yīng)該管理的 pods 的數(shù)量也是由標簽選擇算符定義的。

兩個對象的標簽選擇算符都是在 ?json ?或者 ?yaml ?文件中使用映射定義的,并且只支持 基于等值 需求的選擇算符:

"selector": {
    "component" : "redis",
}

或者

selector:
    component: redis

這個選擇算符(分別在 ?json ?或者 ?yaml ?格式中) 等價于 ?component=redis? 或 ?component in (redis)? 。

支持基于集合需求的資源

比較新的資源,例如 ?Job?、 ?Deployment?、 ?Replica Set? 和 ?DaemonSet ?, 也支持 基于集合的 需求。

selector:
  matchLabels:
    component: redis
  matchExpressions:
    - {key: tier, operator: In, values: [cache]}
    - {key: environment, operator: NotIn, values: [dev]}

?matchLabels? 是由 ?{key,value}? 對組成的映射。 ?matchLabels? 映射中的單個 ?{key,value }? 等同于 ?matchExpressions ?的元素, 其 ?key ?字段為 "key",?operator ?為 "In",而 ?values ?數(shù)組僅包含 "value"。 ?matchExpressions ?是 Pod 選擇算符需求的列表。 有效的運算符包括 ?In?、?NotIn?、?Exists ?和 ?DoesNotExist?。 在 ?In ?和 ?NotIn ?的情況下,設(shè)置的值必須是非空的。 來自 ?matchLabels ?和 ?matchExpressions ?的所有要求都按邏輯與的關(guān)系組合到一起 -- 它們必須都滿足才能匹配。

選擇節(jié)點集 

通過標簽進行選擇的一個用例是確定節(jié)點集,方便 Pod 調(diào)度。


網(wǎng)頁名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes標簽和選擇算符
網(wǎng)站URL:http://www.5511xx.com/article/dhssopc.html