SE(しがないエンジニア)のブログ

IT技術ネタ(クラウド・セキュリティ周り)が中心です!他雑記(お馬さん 他いろいろ)もあり。

Kubernetes(AKS)をやさしく学ぶ旅 その1

Kubernetes をやさしく学びたい

 「Kubernetes」と聞くと「コンテナ系のアレでしょ」(実に曖昧)という感じで結局のところ良く分かっていないので今回 Kubernetes を初学者として学ぶにはどうすれば良いのかな、と考えました。AKS(Azure Kubernetes Service)を題材に何度かに分けてアウトプットしようと思います。

azure.microsoft.com

ちなみに、これからのアウトプットの為に読了した書籍(Kindle)は下記の書籍です。

www.shoeisha.co.jp

まず第一に・・・・。

Kubernetes」てなんやねん!というところから。Google検索すると 2019/09/04 現在で「約 23,200,000 件 (0.51 秒)」ヒットすることから世間の関心の高さは伺えます。また、転職市場でも非常にもてはやされており、国内でいうとヤフーさんが募集してます。また、海外の転職市場でも求人の伸び率は凄いみたいです!

ヤフー株式会社/Kubernetesエンジニアの求人情報 - 転職ならdoda(デューダ)

Kuberenetesのスキルは、いま飛び抜けて米国の転職で有利。米Dice&米Indeed - Publickey

と、前置きで話が逸れたのですが一言でいうと「コンテナオーケストレーションシステム」です。「オーケストレーション」という言葉をピックアップすると「複雑なコンピュータシステム/ミドルウェア/サービスの配備/設定管理の自動化を指す」用語のようです。ここで「コンテナ」とくっつけると Docker のようなコンテナの管理を自動化するという解釈になります。ちなみに、 Docker と Kubernetes がどうくっついていったかの経緯は下記サイトが非常に参考になります。

コンテナオーケストレーションツールの“事実上の標準”という座をつかんだ「Kubernetes」。その重要性とは? | 新野淳一コラム | 東京エレクトロンデバイス株式会社

Kubernetes自体はGoogleが開発したものですが、GKSというマネージドサービスで提供されており、AmazonはEKS、AzureはAKSで提供しております。ちなみに Alibaba Cloud や Oracle Cloud も同様のサービスを提供しており、どのパブリッククラウドを利用(メジャーどころ)しても Kubernetes のマネージドサービスは利用できるといった状況です。

Kubernetes を利用するのであれば Docker の前提知識も

オーケストレーションシステム(Kubernetes)を利用するのであればそのベースとなるコンテナを知る必要もあります。下記サイトは Docker の説明から各種環境の構築まで計6回に分けて記事を掲載しております。

Docker入門 #1 【Dockerとは】 - Qiita

Kubernetesをおさえる上で知っておきたい単語たち

・Node(ノード のーど)

Kubernetes の本を読んでいる中で一番頻出の単語。仮想サーバや物理サーバを指す。後述の Pod を実行する為に必要なサービスを保持してマスタ構成要素によって管理される。ノード上のサービスには Docker/kubelet/kube-proxy を含む。

・Cluster(クラスター くらすたー)

Kubernetes のリソースを管理する集合体のこと。リソースには前述の Node や後述の Pod が含まれるがリソースで一番大きな概念が Node となる。Cluster は1つの Master Node と 複数の Node から構成される。

・Pod(ポッド ぽっど)

Pod はコンテナの集合体であり、 Pod はNodeの中で動作して1つ以上のコンテナを持っている。 Kubernetes にデプロイする場合は Pod 単位に行う。

 

まず、ここまでの単語を汚い(スミマセン)概念図で表すと下記のような感じです。

f:id:btsn:20190904013054j:plain

更に、、

・Container(コンテナ こんてな)

Docker コンテナのこと。

・Replica Set(レプリカセット れぷりかせっと)

同一仕様の Pod を複数生成する仕組み。

・Service(サービス さーびす)

Pod にアクセスするための経路を定義する。

・Deployment(デプロイメント でぷろいめんと)

Replica Set の上位リソースにあたり、Replica Set を管理する。Replica Set が Pod を管理・操作するのと同様、Deployment は Replica Set を管理・操作する。Replica Set の新しいバージョンのリリースを可能とし世代管理を行うこともできる。その為、ロールバック(巻き戻し)も可能。

 

図の黄色部分に関しては「こんな用語があるんだな」くらいで今はご認識頂ければ。今後はこの概念図や用語を基に話を進めていこうと思います。