<

一足遅れて Kubernetes を学び始める - 14. スケジューリング -

ストーリー

  1. 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -
  2. 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -
  3. 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -
  4. 一足遅れて Kubernetes を学び始める - 04. kubectl -
  5. 一足遅れて Kubernetes を学び始める - 05. workloads その 1 -
  6. 一足遅れて Kubernetes を学び始める - 06. workloads その 2 -
  7. 一足遅れて Kubernetes を学び始める - 07. workloads その 3 -
  8. 一足遅れて Kubernetes を学び始める - 08. discovery&LB その 1 -
  9. 一足遅れて Kubernetes を学び始める - 09. discovery&LB その 2 -
  10. 一足遅れて Kubernetes を学び始める - 10. config&storage その 1 -
  11. 一足遅れて Kubernetes を学び始める - 11. config&storage その 2 -
  12. 一足遅れて Kubernetes を学び始める - 12. リソース制限 -
  13. 一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -
  14. 一足遅れて Kubernetes を学び始める - 14. スケジューリング -
  15. 一足遅れて Kubernetes を学び始める - 15. セキュリティ -
  16. 一足遅れて Kubernetes を学び始める - 16. コンポーネント -

前回

一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -では、requests や limit といったヘルスチェックの仕方を学びました。今回は、Affinity などによるスケジューリングについて学習します。

スケジューリング

これから学ぶスケジューリングでは、大きく分けて2つに分類します。

  • Pod のスケジューリング時に特定の Node を選択する方法
    • Affinity
    • Anti-Affinity
  • Node に対して汚れをつけて、それを許容できる Pod のみスケジューリングを許可する方法
    • 汚れ = Taints
    • 許容 = Tolerations

Node のラベル確認

デフォルトで設定されている Node のラベルを見てみます。

pi@raspi001:~/tmp $ k get nodes -o json | jq ".items[] | .metadata.labels"
{
  "beta.kubernetes.io/arch": "arm",
  "beta.kubernetes.io/os": "linux",
  "kubernetes.io/arch": "arm",
  "kubernetes.io/hostname": "raspi001",
  "kubernetes.io/os": "linux",
  "node-role.kubernetes.io/master": ""
}
{
  "beta.kubernetes.io/arch": "arm",
  "beta.kubernetes.io/os": "linux",
  "kubernetes.io/arch": "arm",
  "kubernetes.io/hostname": "raspi002",
  "kubernetes.io/os": "linux",
  "node-role.kubernetes.io/worker": "worker"
}
{
  "beta.kubernetes.io/arch": "arm",
  "beta.kubernetes.io/os": "linux",
  "kubernetes.io/arch": "arm",
  "kubernetes.io/hostname": "raspi003",
  "kubernetes.io/os": "linux",
  "node-role.kubernetes.io/worker": "worker"
}

arch や os はデフォルトで設定されているみたいです。 次以降の学習のため、ラベルをはります。

pi@raspi001:~/tmp $ k label node raspi002 cputype=low disksize=200
pi@raspi001:~/tmp $ k label node raspi003 cputype=low disksize=300

NodeSelector

最も簡単な NodeAffinity の設定です。 指定するラベルに属する Node に Pod を割り当てるようスケジューリングします。簡易なので、equality-base のみしか指定できません。

では、disksize が 300 の Node(raspi003)に Pod を配置しましょう。

# sample-nodeselector.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-nodeselector
  labels:
    app: sample-app
spec:
  containers:
    - name: nginx-container
      image: nginx:1.12
  nodeSelector:
    disksize: "300"
pi@raspi001:~/tmp $ k apply -f sample-nodeselector.yaml
pi@raspi001:~/tmp $ k get pods sample-nodeselector -o wide
NAME                  READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
sample-nodeselector   1/1     Running   0          21s   10.244.2.130   raspi003   <none>           <none>

期待通りですね。OK です。 nodeSelector はイコールでしか表現できないので、柔軟性に欠けます。

Affinity

Affinity は、NodeSelector よりも柔軟に設定できます。つまり、set-based の指定方法です。 詳しくはこちらを参照下さい。今回は In オペレータを使います。

# sample-node-affinity.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-node-affinity
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: disktype
                operator: In
                values:
                  - hdd
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 1
          preference:
            matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                  - raspi002
  containers:
    - name: nginx-container
      image: nginx:1.12

NodeAffinity では、required と preferred の 2 つ設定できます。

  • required
    • 必須スケジューリングポリシー
  • preferred
    • 優先的に考慮されるスケジューリングポリシー

必須条件が「cputype=low である Node(raspi002,raspi003)」で、優先条件が「hostname=raspi002 である Node」です。 適用してみましょう。

pi@raspi001:~/tmp $ k apply -f sample-node-affinity.yaml
pi@raspi001:~/tmp $ k get pods sample-node-affinity -o wide
NAME                   READY   STATUS              RESTARTS   AGE   IP       NODE       NOMINATED NODE   READINESS GATES
sample-node-affinity   0/1     ContainerCreating   0          5s    <none>   raspi002   <none>           <none>

確かに raspi002 に配置されました。では、raspi002 をスケジューリングできなくするとどうなるのでしょうか。

pi@raspi001:~/tmp $ k delete -f sample-node-affinity.yaml
pi@raspi001:~/tmp $ k cordon raspi002
pi@raspi001:~/tmp $ k apply -f sample-node-affinity.yaml
pi@raspi001:~/tmp $ k get pods sample-node-affinity -o wide
NAME                   READY   STATUS              RESTARTS   AGE   IP       NODE       NOMINATED NODE   READINESS GATES
sample-node-affinity   0/1     ContainerCreating   0          11s   <none>   raspi003   <none>           <none>

今度は、raspi002 を cordon したので、raspi003 に移りました。優先なので、満たされなくても良いのですね。必須条件が満たされなかったら、Pending になります。

元に戻します。

pi@raspi001:~/tmp $ k delete -f sample-node-affinity.yaml
pi@raspi001:~/tmp $ k uncordon raspi002

AND と OR

nodeSelectorTerms や matchExpressions は配列なので複数指定できます。

# sample.yaml
nodeSelectorTerms:
  - matchExpressions:
      - A
      - B
  - matchExpressions:
      - C
      - D

上記の場合は、 (A and B) OR (C and D)という条件になります。

Anti-Affinity

Anti-Affinity は、Affinity の逆です。つまり、特定 Node 以外の Node に割り当てるよう スケジューリングします。特別な指定はなく、単に Affinity の否定形式にするだけです。言葉だけですね。

Inter-Pod Affinity

特定の Pod が実行されているドメイン上へ Pod をスケジューリングするポリシーです。 Pod 間を近づけることができるので、レイテンシを下げることができます。

まず、特定の Pod は、先程の NodeSelector で使ったものとします。

pi@raspi001:~/tmp $ k apply -f sample-node-affinity.yaml
pi@raspi001:~/tmp $ k get pods sample-nodeselector -o wide
NAME                  READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
sample-nodeselector   1/1     Running   0          36m   10.244.2.130   raspi003   <none>           <none>
# sample-pod-affinity-host.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-pod-affinity-host
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app
                operator: In
                values:
                  - sample-app
          topologyKey: kubernetes.io/hostname
  containers:
    - name: nginx-container
      image: nginx:1.12

これだと、sample-app がある Node で kubernetes.io/hostname(=raspi003)と同じ Node に Pod を割り振ります。つまり、raspi003 にできるはずです。

pi@raspi001:~/tmp $ k apply -f sample-pod-affinity-host.yaml
pi@raspi001:~/tmp $  k get pods sample-pod-affinity-host -o wide
NAME                       READY   STATUS              RESTARTS   AGE   IP       NODE       NOMINATED NODE   READINESS GATES
sample-pod-affinity-host   0/1     ContainerCreating   0          11s   <none>   raspi003   <none>           <none>

期待通り raspi003 にできています。 また、required だけでなく、preferred も設定できます。

# sample-pod-affinity-arch.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-pod-affinity-arch
spec:
  affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app
                operator: In
                values:
                  - sample-app
          topologyKey: kubernetes.io/arch
      preferredDuringSchedulingIgnoredDuringExecution:
        - weight: 1
          podAffinityTerm:
            labelSelector:
              matchExpressions:
                - key: app
                  operator: In
                  values:
                    - sample-app
            topologyKey: kubernetes.io/hostname
  containers:
    - name: nginx-container
      image: nginx:1.12

必須条件としては、下記のとおりです。

  • 「label が app=sample-app である Pod が動いている Node(raspi003)で、kubernetes.io/arch が同じ Node(arm)」

これは raspi002(arm),raspi003(arm)どちらにも当てはまります。 そして、優先条件として、下記のとおりです。

  • 「label が app=sample-app である Pod が動いている Node(raspi003)で、kubernetes.io/hostname が同じ Node(raspi003)」

これにより、raspi003 が選ばれるはずです。

pi@raspi001:~/tmp $ k apply -f sample-pod-affinity-arch.yaml
pi@raspi001:~/tmp $ k get pods sample-pod-affinity-arch -o wide
NAME                       READY   STATUS              RESTARTS   AGE   IP       NODE       NOMINATED NODE   READINESS GATES
sample-pod-affinity-arch   0/1     ContainerCreating   0          13s   <none>   raspi003   <none>           <none>

期待通り raspi003 で動いていますね。

Inter-Pod Anti-Affinity

Inter-Pod Affinity の否定形です。以上。

今まで紹介した Affinity、AntiAffinity,Inter-Pod Affinity, Inter-Pod AntiAffinity は、組み合わせることができます。

Taints

Node に対して汚れをつけていきます。汚れた Node に対して、許容する Pod のみがスケジューリングできるようになります。

汚れの種類(Effect)は、3つあります。

  • PreferNoSchedule
    • 可能な限りスケジューリングしない
  • NoSchedule
    • スケジューリングしない(既にスケジューリングされている Pod はそのまま)
  • NoExecute
    • 実行を許可しない(既にスケジューリングされている Pod は停止される)

それでは、まず Node を汚しましょう。

pi@raspi001:~/tmp $ k taint node raspi003 env=prd:NoSchedule
pi@raspi001:~/tmp $ k describe node raspi003 | grep Taints
Taints:             env=prd:NoSchedule

これで raspi003 に Pod をスケジューリングできなくなりました。

Tolerations

さきほど汚した Node に対して、許容(Tolerations)できる Pod を作成しましょう。

key と value(env=prd)と Effect(NoSchedule)が設定された Pod のみ許容されます。作ってみます。

# sample-tolerations.yaml
apiVersion: v1
kind: Pod
metadata:
  name: sample-tolerations
spec:
  containers:
    - name: nginx-container
      image: nginx:1.12
  tolerations:
    - key: "env"
      operator: "Equal"
      value: "prd"
      effect: "NoSchedule"
  nodeSelector:
    disksize: "300"

※ nodeSelector で汚れた Node である raspi003 を指定するようにしています。

operator には、2 種類あります。

  • Equal
    • key と value が等しい
  • Exists
    • key が存在する

では、適用してみます。

pi@raspi001:~/tmp $ k apply -f sample-tolerations.yaml
pi@raspi001:~/tmp $ k get pod sample-tolerations -o=wide
NAME                 READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
sample-tolerations   1/1     Running   0          27s   10.244.2.140   raspi003   <none>           <none>

汚れた Node に許容される Pod が適用されましたね。 許容を一部変えてみる(env=stg)と、もちろん Pending になりました。

もとに戻しておきます。

pi@raspi001:~/tmp $ k taint node raspi003 env-

お片付け

pi@raspi001:~/tmp $ k delete -f sample-nodeselector.yaml -f sample-node-affinity.yaml -f sample-pod-affinity-host.yaml -f sample-pod-affinity-arch.yaml -f sample-tolerations.yaml
pi@raspi001:~/tmp $ k label node raspi002 cputype- disksize-
pi@raspi001:~/tmp $ k label node raspi003 cputype- disksize-

最後に

Pod をどの Node にスケジューリングするのか学習しました。 汚れ(taint)と許容(tolerations)という考えは面白いなと思いました。 ただ、あまり使いすぎると複雑に陥りやすそうなので、注意が必要ですね。 次回は、こちらです。

Tags

Cloud Native Days Tokyo 2019 -2019年7月22-23日参加レポート

2019-07-27

今回、東京で開催されましたCloud Native Days Tokyo 2019に2日間とも参加してきましたので、報告しようと思います。セッション毎の報告というより、全体を通した感想を話そうかなと思います。...

一足遅れて Kubernetes を学び始める - 16. コンポーネント -

2019-06-10

前回 一足遅れて Kubernetes を学び始める - 15. セキュリティ -では、RBACによる権限について学習しました。今回は最後にKubernetesのコンポーネントについて学習します。...

一足遅れて Kubernetes を学び始める - 15. セキュリティ -

2019-06-07

前回 一足遅れて Kubernetes を学び始める - 14. スケジューリング -では、AffinityなどでPodのスケジューリングについて学習しました。今回は、セキュリティについて学習します。...

【大阪・梅田】Kubernetes Meetup Tokyo

2019-06-01

大阪からKubernetes Meetup Tokyoに参加できるとのことで、こちらに参加してきました。Kubernetesの生みの親である3人の内の1人のJoe Bedaから、Kubernetesの歴史の経緯について教えて頂きました。その話がとてもわかりやすく、なるほどなと思ったので、ぜひとも共有したいと思います。...

一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -

2019-05-30

前回 一足遅れて Kubernetes を学び始める - 12. リソース制限 -では、requestsやlimitなどのリソース制限について学習しました。今回は、ヘルスチェックとコンテナライフサイクルについて学習します。...

一足遅れて Kubernetes を学び始める - 12. リソース制限 -

2019-05-29

前回 一足遅れて Kubernetes を学び始める - 11. config&storage その2 -では、storageについて学習しました。今回は、リソース制限について学習します。...

一足遅れて Kubernetes を学び始める - 11. config&storage その2 -

2019-05-27

前回 一足遅れて Kubernetes を学び始める - 10. config&storage その1 -では、configについて学習しました。今回は、storageを学びます。...

一足遅れて Kubernetes を学び始める - 10. config&storage その1 -

2019-05-23

前回 一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -では、様々なserviceを学習しました。今回は、config&storageのconfigを学びます。...

【大阪】BMXUG勉強会 -Kubernates体験&Watson Discovery入門- 2019年3月27日参加レポート

2019-05-22

今回、k8sの体験を目的として参加したのですが、意外な収穫があったので、共有したく、記事を書くことにしました。...

一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -

2019-05-15

前回 一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -でServiceについての概要を学びました。今回は下記を一気に学びます。...

一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -

2019-05-07

前回 一足遅れて Kubernetes を学び始める - 07. workloads その3 -でようやくworkloadsが終了しました。今回は、discovery&LBを進めようと思います。...

一足遅れて Kubernetes を学び始める - 07. workloads その3 -

2019-05-06

前回 一足遅れて Kubernetes を学び始める - 06. workloads その2 -にて、DaemonSetとStatefulSet(一部)を学習しました。今回は、StatefulSetの続きとJob,CronJobを学習します。...

一足遅れて Kubernetes を学び始める - 06. workloads その2 -

2019-05-05

前回 一足遅れて Kubernetes を学び始める - 05. workloads その1 -では、Pod,ReplicaSet,Deploymentの3つを学習しました。今回はDaemonSet,StatefulSet(一部)を学びます。...

一足遅れて Kubernetes を学び始める - 05. workloads その1 -

2019-05-03

前回 一足遅れて Kubernetes を学び始める - 04. kubectl -では、kubenetesのCLIツールkubectlを学習しました。今回は、目玉機能であるworkloadsについて学習します。...

一足遅れて Kubernetes を学び始める - 04. kubectl -

2019-05-02

前回 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -では、RaspberryPiの環境にKubernetesを導入しました。無事、動作確認ができたので、さっそく学習していきたいです。...

一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -

2019-04-28

前回 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -では、MacでKubernetesを軽く動かしてみました。DockerForMacでは、NodeがMasterのみだったため、Kubernetesを学習するには、ものたりない感がありました。そこで、RaspberryPiを使っておうちKubernetesを構築することになりました。...

一足遅れて Kubernetes を学び始める - 02. Docker For Mac -

2019-04-27

前回 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -にて、Kubernetesを学ぶ環境を考えてみました。いきなりGKEを使うんじゃなくて、お手軽に試せるDockerForMacを使おうとなりました。...

一足遅れて Kubernetes を学び始める - 01. 環境選択編 -

2019-04-18

経緯 Kubernetesを使えるようになりたいな〜(定義不明) けど、他にやりたいこと(アプリ開発)あるから後回しにしちゃえ〜!!と、今までずっと、ちゃんと学ばなかったKubernetesを、本腰入れて使ってみようと思います。...

一足遅れて Kubernetes を学び始める - 16. コンポーネント -

2019-06-10

前回 一足遅れて Kubernetes を学び始める - 15. セキュリティ -では、RBACによる権限について学習しました。今回は最後にKubernetesのコンポーネントについて学習します。...

一足遅れて Kubernetes を学び始める - 15. セキュリティ -

2019-06-07

前回 一足遅れて Kubernetes を学び始める - 14. スケジューリング -では、AffinityなどでPodのスケジューリングについて学習しました。今回は、セキュリティについて学習します。...

一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -

2019-05-30

前回 一足遅れて Kubernetes を学び始める - 12. リソース制限 -では、requestsやlimitなどのリソース制限について学習しました。今回は、ヘルスチェックとコンテナライフサイクルについて学習します。...

一足遅れて Kubernetes を学び始める - 12. リソース制限 -

2019-05-29

前回 一足遅れて Kubernetes を学び始める - 11. config&storage その2 -では、storageについて学習しました。今回は、リソース制限について学習します。...

一足遅れて Kubernetes を学び始める - 11. config&storage その2 -

2019-05-27

前回 一足遅れて Kubernetes を学び始める - 10. config&storage その1 -では、configについて学習しました。今回は、storageを学びます。...

一足遅れて Kubernetes を学び始める - 10. config&storage その1 -

2019-05-23

前回 一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -では、様々なserviceを学習しました。今回は、config&storageのconfigを学びます。...

一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -

2019-05-15

前回 一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -でServiceについての概要を学びました。今回は下記を一気に学びます。...

一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -

2019-05-07

前回 一足遅れて Kubernetes を学び始める - 07. workloads その3 -でようやくworkloadsが終了しました。今回は、discovery&LBを進めようと思います。...

一足遅れて Kubernetes を学び始める - 07. workloads その3 -

2019-05-06

前回 一足遅れて Kubernetes を学び始める - 06. workloads その2 -にて、DaemonSetとStatefulSet(一部)を学習しました。今回は、StatefulSetの続きとJob,CronJobを学習します。...

一足遅れて Kubernetes を学び始める - 06. workloads その2 -

2019-05-05

前回 一足遅れて Kubernetes を学び始める - 05. workloads その1 -では、Pod,ReplicaSet,Deploymentの3つを学習しました。今回はDaemonSet,StatefulSet(一部)を学びます。...

一足遅れて Kubernetes を学び始める - 05. workloads その1 -

2019-05-03

前回 一足遅れて Kubernetes を学び始める - 04. kubectl -では、kubenetesのCLIツールkubectlを学習しました。今回は、目玉機能であるworkloadsについて学習します。...

一足遅れて Kubernetes を学び始める - 04. kubectl -

2019-05-02

前回 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -では、RaspberryPiの環境にKubernetesを導入しました。無事、動作確認ができたので、さっそく学習していきたいです。...

一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -

2019-04-28

前回 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -では、MacでKubernetesを軽く動かしてみました。DockerForMacでは、NodeがMasterのみだったため、Kubernetesを学習するには、ものたりない感がありました。そこで、RaspberryPiを使っておうちKubernetesを構築することになりました。...

一足遅れて Kubernetes を学び始める - 02. Docker For Mac -

2019-04-27

前回 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -にて、Kubernetesを学ぶ環境を考えてみました。いきなりGKEを使うんじゃなくて、お手軽に試せるDockerForMacを使おうとなりました。...

一足遅れて Kubernetes を学び始める - 01. 環境選択編 -

2019-04-18

経緯 Kubernetesを使えるようになりたいな〜(定義不明) けど、他にやりたいこと(アプリ開発)あるから後回しにしちゃえ〜!!と、今までずっと、ちゃんと学ばなかったKubernetesを、本腰入れて使ってみようと思います。...

LLVM入門 - javascriptをLLVM(Rust:inkwell)でJITコンパイルするまで

2021-09-04

コンパイラ基盤であるLLVMについて、全く知識がない私が、javascriptソースコードをパースしLLVMでコンパイルできるようになりました。LLVMの記事は数多くありますが、初心者向けの記事が少なく感じたため、本記事では、できる限り分かりやすくLLVMについて紹介できる記事を書こうと思います。ソースコードは、こちらに置いています。...

Apache Beam + Kotlin 開発 実践入門

2020-07-10

どうも、こんにちは。Re:ゼロ2期 始まりましたね、 @silverbirderです。最近、仕事の関係上、Apache Beam + Kotlin を使うことになりました。それらの技術が一切知らなかったので、この記事に学んだことを書いていきます。...

一足遅れて Kubernetes を学び始める - 16. コンポーネント -

2019-06-10

前回 一足遅れて Kubernetes を学び始める - 15. セキュリティ -では、RBACによる権限について学習しました。今回は最後にKubernetesのコンポーネントについて学習します。...

一足遅れて Kubernetes を学び始める - 15. セキュリティ -

2019-06-07

前回 一足遅れて Kubernetes を学び始める - 14. スケジューリング -では、AffinityなどでPodのスケジューリングについて学習しました。今回は、セキュリティについて学習します。...

一足遅れて Kubernetes を学び始める - 13. ヘルスチェックとコンテナライフサイクル -

2019-05-30

前回 一足遅れて Kubernetes を学び始める - 12. リソース制限 -では、requestsやlimitなどのリソース制限について学習しました。今回は、ヘルスチェックとコンテナライフサイクルについて学習します。...

一足遅れて Kubernetes を学び始める - 12. リソース制限 -

2019-05-29

前回 一足遅れて Kubernetes を学び始める - 11. config&storage その2 -では、storageについて学習しました。今回は、リソース制限について学習します。...

一足遅れて Kubernetes を学び始める - 11. config&storage その2 -

2019-05-27

前回 一足遅れて Kubernetes を学び始める - 10. config&storage その1 -では、configについて学習しました。今回は、storageを学びます。...

一足遅れて Kubernetes を学び始める - 10. config&storage その1 -

2019-05-23

前回 一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -では、様々なserviceを学習しました。今回は、config&storageのconfigを学びます。...

【大阪】BMXUG勉強会 -Kubernates体験&Watson Discovery入門- 2019年3月27日参加レポート

2019-05-22

今回、k8sの体験を目的として参加したのですが、意外な収穫があったので、共有したく、記事を書くことにしました。...

一足遅れて Kubernetes を学び始める - 09. discovery&LB その2 -

2019-05-15

前回 一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -でServiceについての概要を学びました。今回は下記を一気に学びます。...

一足遅れて Kubernetes を学び始める - 08. discovery&LB その1 -

2019-05-07

前回 一足遅れて Kubernetes を学び始める - 07. workloads その3 -でようやくworkloadsが終了しました。今回は、discovery&LBを進めようと思います。...

一足遅れて Kubernetes を学び始める - 07. workloads その3 -

2019-05-06

前回 一足遅れて Kubernetes を学び始める - 06. workloads その2 -にて、DaemonSetとStatefulSet(一部)を学習しました。今回は、StatefulSetの続きとJob,CronJobを学習します。...

一足遅れて Kubernetes を学び始める - 06. workloads その2 -

2019-05-05

前回 一足遅れて Kubernetes を学び始める - 05. workloads その1 -では、Pod,ReplicaSet,Deploymentの3つを学習しました。今回はDaemonSet,StatefulSet(一部)を学びます。...

一足遅れて Kubernetes を学び始める - 05. workloads その1 -

2019-05-03

前回 一足遅れて Kubernetes を学び始める - 04. kubectl -では、kubenetesのCLIツールkubectlを学習しました。今回は、目玉機能であるworkloadsについて学習します。...

一足遅れて Kubernetes を学び始める - 04. kubectl -

2019-05-02

前回 一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -では、RaspberryPiの環境にKubernetesを導入しました。無事、動作確認ができたので、さっそく学習していきたいです。...

一足遅れて Kubernetes を学び始める - 03. Raspberry Pi -

2019-04-28

前回 一足遅れて Kubernetes を学び始める - 02. Docker For Mac -では、MacでKubernetesを軽く動かしてみました。DockerForMacでは、NodeがMasterのみだったため、Kubernetesを学習するには、ものたりない感がありました。そこで、RaspberryPiを使っておうちKubernetesを構築することになりました。...

一足遅れて Kubernetes を学び始める - 02. Docker For Mac -

2019-04-27

前回 一足遅れて Kubernetes を学び始める - 01. 環境選択編 -にて、Kubernetesを学ぶ環境を考えてみました。いきなりGKEを使うんじゃなくて、お手軽に試せるDockerForMacを使おうとなりました。...

一足遅れて Kubernetes を学び始める - 01. 環境選択編 -

2019-04-18

経緯 Kubernetesを使えるようになりたいな〜(定義不明) けど、他にやりたいこと(アプリ開発)あるから後回しにしちゃえ〜!!と、今までずっと、ちゃんと学ばなかったKubernetesを、本腰入れて使ってみようと思います。...