★悩み★
・Deploymentを用いてKubernetesにPodを作成する手順を知りたい。
・Deploymentの書き方を知りたい。もしくは、サンプルが欲しい。
・そもそもKubernetesのDeployment(デプロイメント)とは、何ですか?
こういった「悩み」に答えます。
★本記事の内容★
① KubernetesのDeployment(デプロイメント)とは、何か?をご紹介
② KubernetesのDeploymentでPodを作成するための準備をご紹介
③ KubernetesのDeploymentでPodを作成する手順をご紹介
これからご紹介する「KubernetesのDeploymentでPodを作成する手順」を実践したことで、2時間以内で「Deploymentを用いてKubernetes上にPodを作成」できました。
記事の前半では「KubernetesのDeployment(デプロイメント)とは、何か?」を解説しつつ、記事の後半では「Deploymentの書き方(KubernetesにPodを作成する定義)とサンプル」を紹介します。
この記事を読み終えることで、「Kubernetes上にPodを作成するためのDeploymentの書き方を理解した」状態になります。
★Kubernetesとは★
Kubernetesを利用することで、マイクロサービスなシステムを構築できます。Kubernetesを利用したマイクロサービスに関して知りたい方は、以下の記事をご覧ください。
Kubernetesとマイクロサービスについて
ちなみに、「Kubernetesを体系的に学習したい」方には、以下の記事がお勧めです。
KubernetesのDeployment(デプロイメント)とは、何か?
「KubernetesのDeployment(デプロイメント)とは、何か?」に関してご説明します。
「KubernetesのDeployment(デプロイメント)とは、何か?」を図を活用しながらご説明しますね。
KubernetesのDeployment(デプロイメント)は、以下の機能を提供します。
★KubernetesのDeployment(デプロイメント)が提供する機能★
・Podの監視を実施し、Podの数を調整
→ 起動中のPodが異常終了した場合、新しいPodを自動的に起動できる
・Podのローリングアップデート
→ 起動中のPodを徐々に新しいPodに入れ替える
・Podのロールバック
→ アップデート前(1つ前など)のPodへ戻すことができる
KubernetesのDeployment(デプロイメント)を利用することで、Kubernetes上で起動したPodの数が減った場合、下図のように自動的に新しいPodを作成してくれます。
また、KubernetesのDeployment(デプロイメント)を利用することで、Podのローリングアップデートができます。
KubernetesのDeployment(デプロイメント)による「Podのローリングアップデート」は、下図のように「新しいPodの数を徐々に増やしていき、変更前のPod数を徐々に減らしていく」のように処理されます。
「作成したPodの世代管理をしたい」や「負荷分散を考慮し、Podの数を常に一定に保ちたい」を実現したい方は、KubernetesのDeployment経由でPodをKubernetes上に作成しましょう。
以上が、「KubernetesのDeployment(デプロイメント)とは、何か?」となります。
Kubernetesでは、Podだけで起動することはほぼありません。DeploymentやReplicaSetなどの管理用リソースを通してPodをKubernetes上で起動します。
KubernetesのDeploymentでPodを作成するための準備
「KubernetesのDeploymentでPodを作成するための準備」に関してご説明します。
★KubernetesのDeploymentでPodを作成するための準備の流れ★
手順1:Kubernetesクラスタを構築
手順2:構築したKubernetesクラスタの状態確認
上記の流れで、「KubernetesのDeploymentでPodを作成するための準備」ができます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年6月3日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「KubernetesのDeploymentでPodを作成するための準備の流れ」の各手順に関してご説明します。
手順1:Kubernetesクラスタを構築
「手順1:Kubernetesクラスタを構築」に関してご説明します。
KubernetesのDeploymentでPodを作成するために、Kubernetesクラスタを構築しましょう。
「Kubernetesクラスタの構築手順」に関しては、以下の記事をご覧ください。
上記手順を実施することで、以下のKubernetesクラスタを構築できます。
以降の手順では、上図のKubernetesクラスタを想定として手順を解説します。
既にKubernetesクラスタを構築済みである場合、本手順を省略してください。
以上で、「手順1:Kubernetesクラスタを構築」は完了です。
手順2:構築したKubernetesクラスタの状態確認
「手順2:構築したKubernetesクラスタの状態確認」に関してご説明します。
構築したKubernetesにおいて、Deploymentを用いてPodを作成できる状態になっているかを確認しましょう。
「構築したKubernetesクラスタの状態確認」に関しては、以下の記事「手順2:構築したKubernetesクラスタの状態確認」をご覧ください。
以上で、「手順2:構築したKubernetesクラスタの状態確認」は完了です。
上記の流れで、KubernetesのDeploymentでPodを作成するための準備ができました。
KubernetesのDeploymentでPodを作成する手順
「KubernetesのDeploymentでPodを作成する手順」に関してご紹介します。
★KubernetesのDeploymentでPodを作成する流れ★
手順1:KubernetesのDeployment経由で起動したいコンテナイメージを作成
手順2:Kubernetes上でPodを作成するためのDeploymentを作成
手順3:Deployment経由でKubernetes上にPodを作成
手順4:Deployment経由で作成したKubernetesのPodの動作確認
上記手順を実施することで、Deployment経由でKubernetes上にPodを作成できます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2021年6月3日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「KubernetesのDeploymentでPodを作成する流れ」の各手順に関してご説明します。
手順1:KubernetesのDeployment経由で起動したいコンテナイメージを作成
「手順1:KubernetesのDeployment経由で起動したいコンテナイメージを作成」に関してご説明します。
KubernetesのDeployment経由で起動したいDockerのコンテナイメージを作成しましょう。
「KubernetesのDeployment経由で起動したいコンテナイメージを作成する手順」に関しては、以下の記事をご覧ください。
以上で、「手順1:KubernetesのDeployment経由で起動したいコンテナイメージを作成」は完了です。
手順2:Kubernetes上でPodを起動するためのDeploymentを作成【書き方を解説】
「手順2:Kubernetes上でPodを起動するためのDeploymentを作成」に関してご説明します。
Deploymentの書き方に関して、サンプルを交えながらご紹介しますね。
Deployment経由でKubernetes上にPodを作成するために、以下の定義ファイルを作成しましょう。下記サンプル定義ファイル内の「適宜変更」と書いてある部分は、自分用に書き換えてください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: fastapi-deployment # Deploymentリソースの名前を指定
spec:
replicas: 2 # 作成するPodの数を指定
selector:
matchLabels:
app: fastapi # replicasの設定をどのラベルに適用するかを指定
template:
metadata:
labels:
app: fastapi # 起動するPodの名前を指定
spec:
containers: # Deployment経由で起動したいコンテナイメージの設定
- name: fastapi-pod
image: docker.io/herokakedashi/fastapi
# ↑↑ Deployment経由で起動したいコンテナイメージを指定
# docker.io/<DockerHubのアカウント名>/<リポジトリ名>の形式で記載(適宜変更) ↑↑
ports:
- containerPort: 8000 # Pod内部において外部に公開したいポートを指定
name: "fastapi"
上記の定義を「deployment.yaml」というファイル名で保存しましょう。
以上で、「手順2:Kubernetes上でPodを起動するためのDeploymentを作成」は完了です。
手順3:Deployment経由でKubernetes上にPodを作成
「手順3:Deployment経由でKubernetes上にPodを作成」に関してご説明します。
手順2で作ったDeployment経由でKubernetes上にPodを作成してみましょう。
Deployment経由でKubernetes上にPodを作成するために、マスターで以下のコマンドを順に実行してください。
# kubectl create -f deployment.yaml
deployment.apps/fastapi-deployment created
# kubectl get po
NAME READY STATUS RESTARTS AGE
fastapi-deployment-5fcb78cf48-gxf7p 1/1 Running 0 58s
fastapi-deployment-5fcb78cf48-wqnkp 1/1 Running 0 58s
#
コマンド実行後、「Running」が2つ表示された場合、「Deployment経由でKubernetes上にPodを作成できた」と判断できます。
以上で、「手順3:Deployment経由でKubernetes上にPodを作成」は完了です。
手順4:Deployment経由で作成したKubernetesのPodの動作確認
「手順4:Deployment経由で作成したKubernetesのPodの動作確認」に関してご説明します。
Podの数が一定数保たれるかを検証してみましょう。
Deployment経由で作成したPodを1つ削除するために、マスターで以下のコマンドを実行してください。コマンド内の「適宜変更」と書いてある部分は、自分用に書き換えてください。
# ↓fastapi-deployment-5fcb78cf48-gxf7pは適宜変更↓
# kubectl delete po fastapi-deployment-5fcb78cf48-gxf7p
pod "fastapi-deployment-5fcb78cf48-gxf7p" deleted
#
コマンド実行後、Podが自動的に起動され、Podの数が一定数保たれているかを確認するために、マスターで以下のコマンドを実行してください。
# kubectl get po
NAME READY STATUS RESTARTS AGE
fastapi-deployment-5fcb78cf48-wqnkp 1/1 Running 0 10m
fastapi-deployment-5fcb78cf48-wtc2n 1/1 Running 0 41s
#
コマンド実行後、新しいPodが起動されていた場合、「KubernetesのDeployment機能が正常に稼働している」と判断できます。
以上で、「手順4:Deployment経由で作成したKubernetesのPodの動作確認」は完了です。
上記の流れで、Deployment経由でKubernetesにPodを作成できました。
ちなみに、「Kubernetesのアーキテクチャを体系的に学びたい」や「定義ファイルの書き方やサンプルを知りたい」方は、以下の参考書がオススメです。
動画で「Kubernetesのアーキテクチャを体系的に学びたい」や「定義ファイルの書き方やサンプルを知りたい」を学びたいという方には、以下がオススメです。
【まとめ】KubernetesのDeploymentでPodを作成する手順
今回の記事を通して、「KubernetesのDeploymentでPodを作成する手順」をご紹介することで、以下の悩みを解消しました。
★悩み★
・Deploymentを用いてKubernetesにPodを作成する手順を知りたい。
・Deploymentの書き方を知りたい。もしくは、サンプルが欲しい。
・そもそもKubernetesのDeployment(デプロイメント)とは、何ですか?
「Deploymentの書き方やサンプルを知りたい」や「Deployment経由でKubernetes上にPodを作成する手順は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント