はじめに
Kubernetesは近年のマイクロサービス化の流れに伴い使用されている技術です。
42Tokyoの課題でKubernetesを学ぶ機会がありました。
当時の自分にはハードルが高かったですが、触れるには良い機会だったと思います。
環境
XUbuntu 18.04.5
minikube v1.14.2
kubectl v1.18.0
docker v19.03.6
Kubernetes(K8s)とは
Kubernetesとは、コンテナオーケストレーションツールの一つです。
コンテナオーケストレーションとは、複数あるDockerコンテナの管理をする技術です。
図のPodはデプロイできる最小単位のリソースで、1つ以上のコンテナをまとめたものです。
Nodeは1つのVMまたは物理的なマシンを表します。
Clusterはコンテナ化されたアプリケーションを実行するNodeの集合体を表します。
Kubernetesで出来ること
- 複数のDockerホストの管理
- コンテナのスケジューリング
- ローリングアップデート
- スケーリング / オートスケーリング
- コンテナの死活監視
- 障害時のセルフヒーリング(自己回復)
- サービスディスカバリ
- ロードバランシング
- データの管理
- ワークロードの管理
- ログの管理
- Infrastructure as Code
- その他エコシステムとの連携や拡張
自己回復機能を試す
準備
ローカル環境でKubernetesクラスタを立ち上げるためにMinikubeを使いました。
マニフェスト
Podの設定はマニフェストに記述します。
replicas
を設定していることによってPodが死んでも、その数になるようにPodを立て直します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3 #レプリカ数。この数だけPodを立てる。
selector:
matchLabels:
app: nginx #このラベルに一致するPodを立てる
template:
metadata:
name: nginx-pod #Pod名
labels:
app: nginx #ラベル
spec:
containers:
- name: nginx #コンテナ名
image: nginx:latest #Docker image
Podを起動させる
kubectl apply -f nginx.yaml
起動されたPodをダッシュボード上で確認します。
3つのPodが立てられました。
Podを削除する
起動しているPodのうちの1つをコマンドで削除し、自己回復機能を試します。
kubectl delete pod nginx-deployment-85ddd67557-4pgkd
削除後に新しいPodが立てられました。これが自己回復機能です。
今回は試してませんが、Podを同時に削除されても合計3つになるように復活します。
おまけ
Youtubeにローリングアップデートのデモがあったので共有です。
https://youtu.be/ObA1OEVdrQY