Kubernetes

昨今では抑えておくべき技術のKubernetesについて調べました。

 

Kubernetesとは

Kubernets(クーバネテス)とは、Google社主導で開発されたコンテナオーケストレーションシステムであり、コンテナ化されたアプリケーションを管理したりデプロイやスケーリングを自動化するなどが行えるOSSです。

記述するときはK8Sと表記されることが多いです。

恐らくは頭文字"K" + 間"8" 文字 + 末尾"S"でK8Sです。長いですからね。

 

コンテナオーケストレーションシステムとは

Kubernetesは、複数コンテナを統合管理できる「コンテナオーケストレーション」というシステムのうちの1種類です。

コンテナ単体で運用した場合は、コンテナは仮想マシンと比較して隔離レベルが低く複数のコンテナが稼働している場合など管理・監視が難しくなります。

コンテナが一つのホストOS畳であればさほど問題ないのですが、マルチホストで構成されたクラスタ環境の場合はホストOS間のネットワークやストレージの管理、コンテナごとの管理、スケジューリング管理など多岐に及びます。

これらを統合的に管理するための仕組みがコンテナオーケストレーションシステムです。

 

Kubernetesの特長

Kubernetesはコンテナ技術をより効率よく利用するために必要な技術です。

 

・アプリケーションを迅速にデプロイできる

→軽いアプリケーションであれば数秒程度でデプロイ可能

・稼働中のコンテナ数を変更できる

→本番環境などで急激な負荷(例えばキャンペーン期間中に接続に急激に負荷など)が発生した場合に自動的にコンテナ数を増やして負荷を標準になるまで落とす。

・コンテナを実行する最小単位「Pod」

K8Sでは、コンテナを実行するときに「Pod」と呼ばれる最小単位で管理を行う。

Podは一つ以上のコンテナを1つにまとめたもので、これらまとまった機能を増やしたり起動したり停止したりなど必要な構成単位で操作することができる。

・マイクロサービスアーキテクチャと相性がいい

マイクロサービスアーキテクチャはシステムを個々の機能(マイクロサービス)に切り出してそれらを連携・システム全体を構成するアーキテクチャである。

これらを疎結合されたマイクロサービスをまとめてKubernetesで管理・スケールしたり個別にアップデートしたりなど相性がいい。

 

kubernetesを始めるためにあればうれしい知識

Youtubeの動画を見ていて、始めるのであれば抑えておきたい技術は以下の通りです。

 

1. Linuxの知識

コンテナを実現している技術

・namespace

・cgrupなど

 

セキュリティ関連

SELinux, apparmor, seccomp

Linux kernel capabilityなど

 

2. コンテナの基礎知識

まずは「docker」からコンテナ入門を行うこと※コンテナ技術は抑えておくこと

・ユーザ数が多く、情報も豊富

 対比されがちなVMとの違いを把握

リソースのIsolation

セキュリティの考え方

 

実現できること・できないことの把握

・例)カーネルをいじる必要があるアプリはコンテナでは難しい

・自分が実現したいサービスに使えるかどうかの判断のために

 

3. コンテナオーケストレーションの必要性について

コンテナ技術単体では難しい機能

・複数コンテナ実行ノードの管理

・アプリケーションのスケール

・ヘルスチェックやオートヒーリング

・ノード間やコンテナ間のネットワーキング

 サービスディスカバリ

 ロードバランシング

・ローリングアップデート

 

 

オーケストレーションと周辺エコシステムとの連携

・CI/CD, モニタリング etc...

 

4. 言語

英語

 ・日本語の情報も多く存在するが、英語の情報量の多さは無視できない

 ・最新情報のほとんどは英語で発信される

 ・ドキュメントももちろん英語

 

Go言語

 ・dockerもkubernetesもGo言語で開発されている

 ・困ったときにコードを読んで理解できるように

  ドキュメントに詳細がない情報も多数存在

 

他お勧めの書籍

 

DockerとKubernetesについて学べます。

私も読み進めている最中ですが簡単かつ体系的に学ぶことができるのでお勧めの一冊です。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

  • 作者:山田 明憲
  • 発売日: 2018/08/25
  • メディア: 単行本(ソフトカバー)
 

 

 

 参考

 

Kubernetesとは

https://kubernetes.io/ja/

 

Youtube:[1B4] Kubernetesから始めるクラウドネイティブエンジニアへの道

https://www.youtube.com/watch?v=oOAtyYd1pxE

 

コンテナオーケストレーションとは

https://cybersecurity-jp.com/security-measures/34930