<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為 Kubernetes 節(jié)點發(fā)布擴展資源

          共 3797字,需瀏覽 8分鐘

           ·

          2020-09-10 02:41

          擴展資源允許集群管理員發(fā)布節(jié)點級別的資源,擴展資源類似于內(nèi)存和 CPU 資源,比如一個節(jié)點擁有一定數(shù)量的內(nèi)存和 CPU 資源,它們被節(jié)點上運行的所有組件共享,該節(jié)點也可以擁有一定數(shù)量的其他資源,這些資源同樣被節(jié)點上運行的所有組件共享。此外,除了可以創(chuàng)建請求一定數(shù)量的內(nèi)存和 CPU 資源的 Pod 之外, 同樣也可以創(chuàng)建請求一定數(shù)量的擴展資源的 Pod。

          但是擴展資源對 Kubernetes 是不透明的,Kubernetes 是不知道擴展資源的相關(guān)含義的,它只了解一個節(jié)點擁有一定數(shù)量的擴展資源。擴展資源必須以整形數(shù)量進行發(fā)布。例如,一個節(jié)點可以發(fā)布 4 個某種擴展資源,但是不能發(fā)布 4.5 個。

          發(fā)布擴展資源

          為在一個節(jié)點上發(fā)布一種新的擴展資源,需要發(fā)送一個 HTTP PATCH 請求到 Kubernetes API server。例如:假設(shè)你的一個節(jié)點上帶有四個 dongle 資源。下面是一個 PATCH 請求的示例,該請求為你的節(jié)點發(fā)布四個 dongle 資源。

          PATCH?/api/v1/nodes//status?HTTP/1.1
          Accept:?application/json
          Content-Type:?application/json-patch+json
          Host:?k8s-master:8080

          [
          ??{
          ????"op":?"add",
          ????"path":?"/status/capacity/example.com~1dongle",
          ????"value":?"4"
          ??}
          ]

          注意:Kubernetes 不需要了解 dongle 資源的含義和用途,前面的 PATCH 請求僅僅告訴 Kubernetes 你的節(jié)點擁有四個你稱之為 dongle 的東西。

          然后在終端中啟動一個代理,然后我們就可以向 Kubernetes API server 發(fā)送請求了:

          $?kubectl?proxy

          在另一個命令窗口中,發(fā)送 HTTP PATCH 請求。用你的節(jié)點名稱替換

          $?curl?--header?"Content-Type:?application/json-patch+json"?\
          ??--request?PATCH?\
          ??--data?'[{"op":?"add",?"path":?"/status/capacity/example.com~1dongle",?"value":?"4"}]'?\
          ??http://localhost:8001/api/v1/nodes//status

          說明: 在前面的請求中,~1 為 patch 路徑中 “/” 符號的編碼。

          輸出顯示該節(jié)點的 dongle 資源容量為 4:

          "capacity":?{
          ??"cpu":?"2",
          ??"memory":?"2049008Ki",
          ??"example.com/dongle":?"4",

          描述你的節(jié)點:

          $?kubectl?describe?node?

          我們就可以看到關(guān)于我們發(fā)布的 dongle 這種擴展資源的信息了:

          Capacity:
          ?cpu:??2
          ?memory:??2049008Ki
          ?example.com/dongle:??4

          分配擴展資源

          擴展資源發(fā)布后,我們就可以把這種資源當(dāng)成 CPU 或內(nèi)存在 Pod 中請求使用了,要請求擴展資源,需要在 Pod 容器的資源清單中包括 resources:requests 字段。如下所示的資源清單文件,我們請求了3個發(fā)布的 dongle 擴展資源:

          #?extended-resource-pod.yaml
          apiVersion:?v1
          kind:?Pod
          metadata:
          ??name:?extended-resource-demo
          spec:
          ??containers:
          ??-?name:?extended-resource-demo
          ????image:?nginx:1.7.9
          ????resources:
          ??????requests:
          ????????example.com/dongle:?3
          ??????limits:
          ????????example.com/dongle:?3

          然后和平時一樣創(chuàng)建 Pod:

          $?kubectl?apply?-f?extended-resource-pod.yaml

          當(dāng) Pod 運行成功后,描述 Pod 可以看到關(guān)于 dongle 的相關(guān)信息:

          $?kubectl?describe?pod?extended-resource-demo
          ......
          Limits:
          ??example.com/dongle:?3
          Requests:
          ??example.com/dongle:?3
          ......

          接下來我們再創(chuàng)建一個 Pod 請求 2 個 dongle 擴展資源,資源清單文件如下所示:

          #?extended-resource-pod-2.yaml
          apiVersion:?v1
          kind:?Pod
          metadata:
          ??name:?extended-resource-demo-2
          spec:
          ??containers:
          ??-?name:?extended-resource-demo-2-ctr
          ????image:?nginx
          ????resources:
          ??????requests:
          ????????example.com/dongle:?2
          ??????limits:
          ????????example.com/dongle:?2

          現(xiàn)在我們來創(chuàng)建這個 Pod,明顯不能滿足 2 個 dongles 的請求,因為第一個 Pod 已經(jīng)使用了 3 個,而我們一共才 4 個這個擴展資源:

          $?kubectl?apply?-f?extended-resource-pod-2.yaml

          創(chuàng)建后,查看 Pod 信息可以看到 Pod 不能被調(diào)度了,因為沒有一個節(jié)點上存在兩個可用的 dongle 資源:

          $?kubectl?describe?pod?extended-resource-demo-2
          ......
          Conditions:
          ??Type????Status
          ??PodScheduled??False
          ...
          Events:
          ??...
          ??...?Warning???FailedScheduling??pod?(extended-resource-demo-2)?failed?to?fit?in?any?node
          fit?failure?summary?on?nodes?:?Insufficient?example.com/dongle?(1)

          查看 Pod 的狀態(tài):

          $?kubectl?get?pod?extended-resource-demo-2

          輸出結(jié)果表明 Pod 雖然被創(chuàng)建了,但沒有被調(diào)度到節(jié)點上正常運行。Pod 的狀態(tài)為 Pending:

          NAME???????????????????????READY?????STATUS????RESTARTS???AGE
          extended-resource-demo-2???0/1???????Pending???0??????????6m

          清理

          首先刪除上面創(chuàng)建的示例 Pod:

          $?kubectl?delete?pod?extended-resource-demo
          $?kubectl?delete?pod?extended-resource-demo-2

          然后要移除發(fā)布的擴展資源,同樣需要通過 PATCH 請求來執(zhí)行:

          PATCH?/api/v1/nodes//status?HTTP/1.1
          Accept:?application/json
          Content-Type:?application/json-patch+json
          Host:?k8s-master:8080

          [
          ??{
          ????"op":?"remove",
          ????"path":?"/status/capacity/example.com~1dongle",
          ??}
          ]

          啟動一個代理:

          $?kubectl?proxy

          在另一個命令窗口中,發(fā)送 HTTP PATCH 請求。用你的節(jié)點名稱替換

          $?curl?--header?"Content-Type:?application/json-patch+json"?\
          --request?PATCH?\
          --data?'[{"op":?"remove",?"path":?"/status/capacity/example.com~1dongle"}]'?\
          http://localhost:8001/api/v1/nodes//status

          驗證 dongle 資源的發(fā)布已經(jīng)被移除,正常看不到任何相關(guān)信息:

          $?kubectl?describe?node??|?grep?dongle

          參考鏈接

          • https://kubernetes.io/docs/tasks/administer-cluster/extended-resource-node/




          K8S進階訓(xùn)練營,點擊下方圖片了解詳情


          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国无码精品久久久 | 大屌精品在线 | 成人av影音先锋 成人电影无码三区 | 婷婷99爱99热 | 西西444WWW无码视频男男 |