この記事は Kubernetes道場 Advent Calendar 2018 1日目の記事です。

今回はKubernetes道場についてと、1回目の内容でKubernetesの概要について。

Kubernetes道場について

一つは自分の知識のOutput。 Kubernetes勉強したが、何もやってない凄いのでBlogにでも学んだ内容を書いていこうと思い、そのうちのネタの一つ。

もう一つは、今となっては日本語の文献がや書籍が多くなってたが、自分が学び始めようと思ったときは何から手を付けていいか全くわからない状態だった。 今から勉強する人たちの役に立てればと思う。

そんな感じ。

Kubernetesとは?

Kubernetesはコンテナオーケストレーションプラットフォーム。 自動的なコンテナのデプロイ、スケーリング、管理などをやってくれる。

このKubernetesはGoogleが15年間の本番での実行経験(BorgやOmegaのことですね) を元に、コミュニティの経験とアイデアを組み合わせて開発されている。

公式サイト

Kubernetes - GitHub

現在はCloud Native Computing Foundationによりホストされている。

Kubernetesで何が出来るのか

  • 複数ホストへのコンテナの展開
  • コンテナのヘルスチェック
  • コンテナのスケーリング
  • サービスディスカバリ
  • 展開されてるコンテナのローリングアップデート
  • MonitoringとLogging
  • Authn/Authz
  • ストレージのマウント

などなど。

掘り下げていくと、様々なコンポーネントが協調して動作してこれらやより良い機能を提供してくれることが 分かってくるが、それはまた後日。

なぜKubernetesを学ぶのか

  • コンテナマネジメントツールとしてほぼデファクト
  • DevとOpsの分離
  • Infrastructure as Code
  • その他エコシステムとの統合

あとは上記の機能の恩恵を受けるため、と個人的には考えている。

まぁ、コンテナオーケストレーションにおいてデファクトだから、だけで十分学ぶ価値はあると思う。

Kubernetesのアーキテクチャ

Kubernetesを扱う上で絶対抑えること、というわけでもないが、知っておくと拡張する際や先の学習で理解が 進むと思うので簡単に紹介。

Kubernetesは主に2つの役割に分かれている。

Master

  • kube-apiserver: APIの提供やAuthn/Authz
  • kube-controller-manager: リソースの制御
  • kube-scheduler: コンテナのスケジューリング
  • etcd: クラスタのデータの永続化

Worker

  • kubelet: コンテナの起動・監視
  • kube-proxy: 接続の転送
  • Container Runtime: コンテナランタイム。Dockerやcri-oなど

というわけで今回はここまで。次回はKubernetesのローカル環境を作ってみましょう。

それでは。