LoginSignup
33
24

More than 5 years have passed since last update.

【k8s】NodeとPodの関係

Last updated at Posted at 2018-09-25

お題

勘違いしていた表題について。

NodeとPodの関係

k8sでの「Node」は、GKEでは「GCEインスタンス」になる。
GKEでクラスタ作成時に「クラスタサイズ」という形で確保する「Node」の数を決める。
01.png

で、以下のように、たしかに「Node」が3つあることがわかる。

$ kubectl get nodes
NAME                                              STATUS    ROLES     AGE       VERSION
gke-my-cluster-1-min-default-pool-ea807978-8d2t   Ready     <none>    12h       v1.9.7-gke.6
gke-my-cluster-1-min-default-pool-ea807978-hpqc   Ready     <none>    10h       v1.9.7-gke.6
gke-my-cluster-1-min-default-pool-ea807978-ss7p   Ready     <none>    12h       v1.9.7-gke.6

次に「Pod」。
レプリカ3つでDeployment作ると、以下のように「Pod」が3つできる。

$ kubectl get pods
NAME                                READY     STATUS    RESTARTS   AGE
order1-deployment-bbd48b68f-cdhx2   1/1       Running   0          9s
order1-deployment-bbd48b68f-d9qt7   1/1       Running   0          9s
order1-deployment-bbd48b68f-jjg4x   1/1       Running   0          9s

「Node」と「Pod」は入れ子の関係(それ自体は正しい)で「1Node」に対して「複数Pod」が含まれる(これも見方によっては正しい)と考えていた。
勘違いポイントは、下記のように考えていたこと。(勝手に「Pod」を増殖させてた・・・)

【【【 ↓誤り↓ 】】】

+-------------------+   +-------------------+   +-------------------+
| [Node-8d2t]       |   | [Node-hpqc]       |   | [Node-ss7p]       |
|                   |   |                   |   |                   |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  | [Pod-cdhx2] |  |   |  | [Pod-cdhx2] |  |   |  | [Pod-cdhx2] |  |
|  |             |  |   |  |             |  |   |  |             |  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  | [Pod-d9qt7] |  |   |  | [Pod-d9qt7] |  |   |  | [Pod-d9qt7] |  |
|  |             |  |   |  |             |  |   |  |             |  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  | [Pod-jjg4x] |  |   |  | [Pod-jjg4x] |  |   |  | [Pod-jjg4x] |  |
|  |             |  |   |  |             |  |   |  |             |  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
+-------------------+   +-------------------+   +-------------------+

【【【 ↓正解↓ 】】】

+-------------------+   +-------------------+   +-------------------+
| [Node-8d2t]       |   | [Node-hpqc]       |   | [Node-ss7p]       |
|                   |   |                   |   |                   |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  | [Pod-cdhx2] |  |   |  | [Pod-d9qt7] |  |   |  | [Pod-jjg4x] |  |
|  |             |  |   |  |             |  |   |  |             |  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
+-------------------+   +-------------------+   +-------------------+

実際、「Pod」を格納「Node」付きで一覧表示すると明確にわかる。

$ kubectl get pods -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP           NODE
order1-deployment-bbd48b68f-cdhx2   1/1       Running   0          57s       10.60.12.4   gke-my-cluster-1-min-default-pool-ea807978-8d2t
order1-deployment-bbd48b68f-d9qt7   1/1       Running   0          57s       10.60.13.8   gke-my-cluster-1-min-default-pool-ea807978-hpqc
order1-deployment-bbd48b68f-jjg4x   1/1       Running   0          57s       10.60.11.5   gke-my-cluster-1-min-default-pool-ea807978-ss7p

試しに「Pod」を5つに増やしてみると、こうなる。

$ kubectl get pods -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP           NODE
order1-deployment-bbd48b68f-cdhx2   1/1       Running   0          2m        10.60.12.4   gke-my-cluster-1-min-default-pool-ea807978-8d2t
order1-deployment-bbd48b68f-d9qt7   1/1       Running   0          2m        10.60.13.8   gke-my-cluster-1-min-default-pool-ea807978-hpqc
order1-deployment-bbd48b68f-jjg4x   1/1       Running   0          2m        10.60.11.5   gke-my-cluster-1-min-default-pool-ea807978-ss7p
order1-deployment-bbd48b68f-lhvlx   1/1       Running   0          25s       10.60.12.5   gke-my-cluster-1-min-default-pool-ea807978-8d2t
order1-deployment-bbd48b68f-r2bkn   1/1       Running   0          25s       10.60.11.6   gke-my-cluster-1-min-default-pool-ea807978-ss7p

図で表すと、こうなる。(増えた分の「Pod」が適宜「Node」に割り当てられる。)

+-------------------+   +-------------------+   +-------------------+
| [Node-8d2t]       |   | [Node-hpqc]       |   | [Node-ss7p]       |
|                   |   |                   |   |                   |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  | [Pod-cdhx2] |  |   |  | [Pod-d9qt7] |  |   |  | [Pod-jjg4x] |  |
|  |             |  |   |  |             |  |   |  |             |  |
|  +-------------+  |   |  +-------------+  |   |  +-------------+  |
|  +-------------+  |   |                   |   |  +-------------+  |
|  | [Pod-lhvlx] |  |   |                   |   |  | [Pod-r2bkn] |  |
|  |             |  |   |                   |   |  |             |  |
|  +-------------+  |   |                   |   |  +-------------+  |
+-------------------+   +-------------------+   +-------------------+

今度は「Pod」を1つに減らしてみる。

$ kubectl get pods -o wide
NAME                                READY     STATUS    RESTARTS   AGE       IP           NODE
order1-deployment-bbd48b68f-d9qt7   1/1       Running   0          46m       10.60.13.8   gke-my-cluster-1-min-default-pool-ea807978-hpqc

図で表すと、こうなる。

+-------------------+   +-------------------+   +-------------------+
| [Node-8d2t]       |   | [Node-hpqc]       |   | [Node-ss7p]       |
|                   |   |                   |   |                   |
|                   |   |  +-------------+  |   |                   |
|                   |   |  | [Pod-d9qt7] |  |   |                   |
|                   |   |  |             |  |   |                   |
|                   |   |  +-------------+  |   |                   |
+-------------------+   +-------------------+   +-------------------+

「Pod」がなくなった「Node」は、どうなるのか? インスタンス消える?
単純に、しばらく待てど、消えない。
「クラスタサイズ=3」で指定されている以上、3を維持する?
クラスタオートスケーラーというのが関係しそう。
https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler?hl=ja
02.png

ここを「オン」にすれば、負荷に応じて「Node=GCEインスタンス」数が自動で増減するらしい。
(制限として「サービスの短い中断」の許容が必要らしいので注意。)

33
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
24