Macho000

1. k8s(kubernetes)とは

Kubernetesとは、コンピュータ・クラスター内およびコンピュータ・クラスター間でのアプリケーションコンテナの配置および実行を調整する、プロダクショングレードのオープンソースプラットフォームのこと 機能としては、単一のユニットとして機能するように接続された、可用性の高いコンピュータのクラスターをまとめあげる機能であると公式HPには書かれています。

これだけだと分かりづらいのK8sクラスターの図を以下に示す

picture 1

この図のようにK8sクラスターはクラスターを管理するマスターとアプリケーションを動かすワーカーとなるノードからなる。

2. Kubernetes Deployementsとは

Kubernetesクラスターを実行すると、その上にコンテナ化アプリケーションをデプロイできる。

これを図にしたものを以下に示す

picture 2

デプロイを行うことによって先程作成したコンテナの上にアプリケーションを乗せることができる

3. Kubernetes Podとは

Podは1つ以上のアプリケーションコンテナのグループであり、共有ストレージ、IPアドレス、それらの実行方法に関する情報が含まれている

これを図にすると以下の通り

picture 3

1つのPodに1つのアプリがある場合もあれば、1つのPodに複数のアプリと共有コンテナが共存する場合もある

4. Kubernetes ノードとは

Podは常にノード上で動作をする。ノードは複数のPodを持つことができ、Kubernetesマスターはクラスター内のノード間でPodのスケジュールを自動的に処理をする。

これを図にすると以下の通り

picture 4

ノードの中には複数のPodが存在している

5. Kubernetes Serviceとは

Serviceは、Podの論理セットを定義し、それらのPodに対する外部トラフィックの公開、負荷分散、およびサービス検出を可能にする抽象化層のこと

これを図にすると以下の通り

picture 5

Serviceは、一連のPodにトライフィックをルーティングする。さらにServiceは、アプリケーションに影響を与えることなく、Podが死んだり複製したりすることを可能にする抽象概念のことである。 K8sの肝であるルーティングや、自動スケーリング、Podが死んでも立ち直るのはこのServiceがあるおかげである。

5.1. Serviceの種類

6. アプリケーションのスケーリング

ユーザーの需要に対応するためにアプリケーションをスケール必要がある

kubectl create deploymentコマンドの--replicasパラメーターを使用することで、最初から複数のインスタンスを含むDeploymentを作成できる

6.1. スケーリングの概要1

picture 8

6.2. スケーリングの概要2

picture 9

7. ローリングアップデートの実行

ローリングアップデートでは、Podを新しいインスタンスで段階的にアップデートすることで、ダウンタイムなしDeploymentをアップデートできる

7.1. アプリケーションのアップデート

開発者は新しいバージョンを1日に数回デプロイすることが期待される。Kubernetesではこのアップデートをローリングアップデートを行うことによってダウンタイムなしでDeploymentをアップデートできる。

## ローリングアップデートの概要1

picture 10

## ローリングアップデートの概要2

picture 11

## ローリングアップデートの概要3

picture 12

## ローリングアップデートの概要4

picture 13

8. 参考文献

https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/

https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/

#kubernetes