<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Label Label是附著到object上(例如Pod)的鍵值對。可以在創建object的時候指定,也可以在object創建后隨時指定。Labels的值對系統本身并沒有什么含義,只是對用戶才有意義。 ```json "labels": { "key1" : "value1", "key2" : "value2" } ``` Kubernetes最終將對labels最終索引和反向索引用來優化查詢和watch,在UI和命令行中會對它們排序。不要在label中使用大型、非標識的結構化數據,記錄這樣的數據應該用annotation。 ## 動機 Label能夠將組織架構映射到系統架構上(就像是康威定律),這樣能夠更便于微服務的管理,你可以給object打上如下類型的label: - `"release" : "stable"`, `"release" : "canary"` - `"environment" : "dev"`, `"environment" : "qa"`, `"environment" : "production"` - `"tier" : "frontend"`, `"tier" : "backend"`, `"tier" : "cache"` - `"partition" : "customerA"`, `"partition" : "customerB"` - `"track" : "daily"`, `"track" : "weekly"` - `"team" : "teamA"`,`"team:" : "teamB"` ## 語法和字符集 Label key的組成: - 不得超過63個字符 - 可以使用前綴,使用/分隔,前綴必須是DNS子域,不得超過253個字符,系統中的自動化組件創建的label必須指定前綴,`kubernetes.io/`由kubernetes保留 - 起始必須是字母(大小寫都可以)或數字,中間可以有連字符、下劃線和點 Label value的組成: - 不得超過63個字符 - 起始必須是字母(大小寫都可以)或數字,中間可以有連字符、下劃線和點 ## Label selector Label不是唯一的,很多object可能有相同的label。 通過label selector,客戶端/用戶可以指定一個object集合,通過label selector對object的集合進行操作。 Label selector有兩種類型: - *equality-based* :可以使用`=`、`==`、`!=`操作符,可以使用逗號分隔多個表達式 - *set-based* :可以使用`in`、`notin`、`!`操作符,另外還可以沒有操作符,直接寫出某個label的key,表示過濾有某個key的object而不管該key的value是何值,`!`表示沒有該label的object ## 示例 ```bash $ kubectl get pods -l environment=production,tier=frontend $ kubectl get pods -l 'environment in (production),tier in (frontend)' $ kubectl get pods -l 'environment in (production, qa)' $ kubectl get pods -l 'environment,environment notin (frontend)' ``` ## 在API object中設置label selector 在`service`、`replicationcontroller`等object中有對pod的label selector,使用方法只能使用等于操作,例如: ```yaml selector: component: redis ``` 在`Job`、`Deployment`、`ReplicaSet`和`DaemonSet`這些object中,支持*set-based*的過濾,例如: ```yaml selector: matchLabels: component: redis matchExpressions: - {key: tier, operator: In, values: [cache]} - {key: environment, operator: NotIn, values: [dev]} ``` 如Service通過label selector將同一類型的pod作為一個服務expose出來。 ![label示意圖](https://box.kancloud.cn/d58ea9cc4b5ff49ac95859e2cb112a85_803x588.png) 另外在node affinity和pod affinity中的label selector的語法又有些許不同,示例如下: ```yaml affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/e2e-az-name operator: In values: - e2e-az1 - e2e-az2 preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 preference: matchExpressions: - key: another-node-label-key operator: In values: - another-node-label-value ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看