<

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

ストーリー

  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 を学び始める - 15. セキュリティ -では、RBAC による権限について学習しました。今回は最後に Kubernetes のコンポーネントについて学習します。

コンポーネント

Kubernetes では、下記のような構成になっています。

kubernetes_master.png
kubernetes_master.png

https://kubernetes.io/docs/concepts/architecture/cloud-controller/

それぞれのコンポーネントについて学習します。

現状確認

pi@raspi001:~/tmp $ k get nodes
NAME       STATUS   ROLES    AGE   VERSION
raspi001   Ready    master   42d   v1.14.1
raspi002   Ready    worker   42d   v1.14.1
raspi003   Ready    worker   42d   v1.14.1
pi@raspi001:~/tmp $ k get pods -n kube-system -o=wide
NAME                               READY   STATUS    RESTARTS   AGE   IP             NODE       NOMINATED NODE   READINESS GATES
coredns-fb8b8dccf-mtzvd            1/1     Running   34         37d   10.244.0.26    raspi001   <none>           <none>
coredns-fb8b8dccf-nv6dj            1/1     Running   81         37d   10.244.2.151   raspi003   <none>           <none>
etcd-raspi001                      1/1     Running   31         42d   192.168.3.32   raspi001   <none>           <none>
kube-apiserver-raspi001            1/1     Running   95         42d   192.168.3.32   raspi001   <none>           <none>
kube-controller-manager-raspi001   1/1     Running   89         42d   192.168.3.32   raspi001   <none>           <none>
kube-flannel-ds-arm-4s22p          1/1     Running   73         38d   192.168.3.34   raspi003   <none>           <none>
kube-flannel-ds-arm-7nnbj          1/1     Running   88         38d   192.168.3.33   raspi002   <none>           <none>
kube-flannel-ds-arm-ckwq5          1/1     Running   86         38d   192.168.3.32   raspi001   <none>           <none>
kube-proxy-6fwl5                   1/1     Running   31         42d   192.168.3.32   raspi001   <none>           <none>
kube-proxy-wgjdq                   1/1     Running   28         42d   192.168.3.33   raspi002   <none>           <none>
kube-proxy-zvmqf                   1/1     Running   28         42d   192.168.3.34   raspi003   <none>           <none>
kube-scheduler-raspi001            1/1     Running   87         42d   192.168.3.32   raspi001   <none>           <none>

下記は、MasterNode で動いています。

  • etcd-raspi001
  • kube-apiserver-raspi001
  • kube-controller-manager-raspi001
  • kube-scheduler-raspi001

下記は、全 Node で動いています。

  • kube-flannel-ds
  • kube-proxy

coredns は、Master1 台と Worker1 台で動いています。

このときに設定しました。

etcd

MasterNode に存在するコンポーネントです。 分散 Key-ValueStore である etcd は、Kubernetes のクラスタにある全情報が保存されています。そのため、単一障害にならないようクラスタを組むことが推奨されているみたいです。ここのデータにアクセスするのは kube-apiserver から経由しなければなりません。 直接確認したい場合は、etcdctl を使ってみると良いです。

kube-apiserver

MasterNode に存在するコンポーネントです。 KubernetesAPI を提供するコンポーネントです。kube-scheduler や kube-controller-manager,kubelet から呼ばれます。 etcd に対してリソースを管理するだけで、Pod の起動はしません。

kube-scheduler

MasterNode に存在するコンポーネントです。 Node 情報が未割り当ての Pod を検知して、その Pod に Node を割り当てるリクエストを kube-apiserver に送ります。 割り当てるだけであって、Pod を起動させません。Node を割り当てる際、NodeAffinity や Taints などを考慮に入れます。

kubelet

各 Node 上で動作するコンポーネントです。未割り当てだった Node が割り当てられたことを検知し、 実際に Pod を起動します。

kube-controller-manager

MasterNode に存在するコンポーネントです。 様々なコントローラを実行するコンポーネントです。Deployment や ControllerReplicaSetController では、 状態を監視し、期待する Pod 数と現在の Pod 数を見ます。kube-apiserver に対して、過不足分の Pod を調整するよう要求します。 その後は、さきほどの kube-scheduler,kubelet の一連の流れになります。

kube-proxy

各 Node 上で動作するコンポーネントです。NodePort や ClusterIP 宛のトラフィックを転送します。

kube-dns

kubernetes クラスタ内の名前解決やサービスディスカバリに利用される DNS サーバです。 私の環境では、CoreDNS を使っていました。

そのほか

CustomResourceDefinition(CRD)と Operator

CRD は独自のリソースを定義できるリソースです。このような拡張性をもたせることで、様々な開発が進められます。 CRD は、単なる Kubernetes オブジェクトなだけなので、Operator というカスタムコントローラをセットで作る必要があります。 Operator Framework と呼ばれるもので簡単に作成できるそうです。

最後に

ようやく Kubernetes 完全ガイドの内容を読み切ることができました。 当初は、ここまで記事にアウトプットし続けるつもりはなかったです。 実際に kubernetes を raspberryPi 上で動かしてみると、 いろいろな発見があってのめり込んでしまいました。

ただ、一足遅れて Kubernetes を学び始める - 12. リソース制限 -ぐらいから、いろいろとあって、 書籍の内容を、ほぼそのまま使わさせてもらいました。(笑)

これからは、実際に GKE を使ってアプリケーション開発をしてみようと思います。

Tags

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

2019-07-27

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

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

2019-06-07

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

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

2019-06-05

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

【大阪・梅田】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 を学び始める - 15. セキュリティ -

2019-06-07

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

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

2019-06-05

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

一足遅れて 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 を学び始める - 15. セキュリティ -

2019-06-07

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

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

2019-06-05

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

一足遅れて 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を、本腰入れて使ってみようと思います。...