1. k8s(kubernetes)とは
Kubernetesとは、コンピュータ・クラスター内およびコンピュータ・クラスター間でのアプリケーションコンテナの配置および実行を調整する、プロダクショングレードのオープンソースプラットフォームのこと
機能としては、単一のユニットとして機能するように接続された、可用性の高いコンピュータのクラスターをまとめあげる機能である
と公式HPには書かれています。
これだけだと分かりづらいのK8sクラスターの図を以下に示す
この図のようにK8sクラスターはクラスターを管理するマスター
とアプリケーションを動かすワーカーとなるノード
からなる。
2. Kubernetes Deployementsとは
Kubernetesクラスターを実行すると、その上にコンテナ化アプリケーションをデプロイできる。
これを図にしたものを以下に示す
デプロイを行うことによって先程作成したコンテナの上にアプリケーションを乗せることができる
3. Kubernetes Podとは
Podは1つ以上のアプリケーションコンテナのグループであり、共有ストレージ、IPアドレス、それらの実行方法に関する情報が含まれている
これを図にすると以下の通り
1つのPodに1つのアプリがある場合もあれば、1つのPodに複数のアプリと共有コンテナが共存する場合もある
4. Kubernetes ノードとは
Podは常にノード上で動作をする。ノードは複数のPodを持つことができ、Kubernetesマスターはクラスター内のノード間でPodのスケジュールを自動的に処理をする。
これを図にすると以下の通り
ノードの中には複数のPodが存在している
5. Kubernetes Serviceとは
Serviceは、Podの論理セットを定義し、それらのPodに対する外部トラフィックの公開、負荷分散、およびサービス検出を可能にする抽象化層のこと
これを図にすると以下の通り
Serviceは、一連のPodにトライフィックをルーティングする。さらにServiceは、アプリケーションに影響を与えることなく、Podが死んだり複製したりすることを可能にする抽象概念のことである。 K8sの肝であるルーティングや、自動スケーリング、Podが死んでも立ち直るのはこのServiceがあるおかげである。
5.1. Serviceの種類
- ClusterIP(既定値) - クラスター内の内部IPでServiceを公開する
- NodePort - NATを使用して、クラスター内の選択された各ノードの同じポートにServiceを公開する。
- LoadBalancer - 現在のクラウドに外部ロードバランサを作成し、Serviceni固定の外部IPを割り当てる
- ExternalName - 使用の
externalName
で指定した名前のCNAMEレコードを返す
6. アプリケーションのスケーリング
ユーザーの需要に対応するためにアプリケーションをスケール必要がある
kubectl create deploymentコマンドの--replicasパラメーターを使用することで、最初から複数のインスタンスを含むDeploymentを作成できる
6.1. スケーリングの概要1
6.2. スケーリングの概要2
7. ローリングアップデートの実行
ローリングアップデートでは、Podを新しいインスタンスで段階的にアップデートすることで、ダウンタイムなしDeploymentをアップデートできる
7.1. アプリケーションのアップデート
開発者は新しいバージョンを1日に数回デプロイすることが期待される。Kubernetesではこのアップデートをローリングアップデートを行うことによってダウンタイムなしでDeploymentをアップデートできる。
## ローリングアップデートの概要1
## ローリングアップデートの概要2
## ローリングアップデートの概要3
## ローリングアップデートの概要4
8. 参考文献
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/
https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/