概要
前回 kubernetes 上に DockerHub で公開しているイメージからコンテナをデプロイしてみました
今回はデプロイしたコンテナをスケールアウトしてみたいと思います
環境
- macOS 10.13.2
- minikube 0.25.0
- kubectl 1.9.2
- VertualBox 5.1.30r118389
スケールアウト
scale コマンドを使います
スケールアウトするコンテナ数は replicas で指定します
kubectl scale deployments/request-dumper --replicas=4
kubectl get deployments でスケールアウトしているか確認してみましょう
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
request-dumper 4 4 4 4 32m
こんな感じで数字の部分が 4 になっていれば OK です
kubectl get pods -o wide
でコンテナの一覧を確認することができます
ロードバランシング
kubernetes はデフォルトでロードバランシングの機能があります
まず service を作成しましょう
kubectl expose deployment/request-dumper --type="NodePort" --port 4567
そしてホスト側でバインドしているポートを取得します
export NODE_PORT=$(kubectl get services/request-dumper -o go-template='{{(index .spec.ports 0).nodePort}}')
あとはこのポートにアクセスすれば勝手にバランシングしてくれます
curl $(minikube ip):$NODE_PORT
要するにいつものように service を定義すれば expose した deployment 配下にあるコンテナを自動でバランシングしてくれます
念のため kubectl logs -f [container_name]
でログを確認しながらやるとちゃんとバランシングされていることがわかると思います
スケールダウン
最後にスケールダウンしてみましょう
と言ってもスケールアウトと同じです
kubectl scale deployments/request-dumper --replicas=2
これで kubectl get deployments/request-dumper で確認しましょう
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
request-dumper 2 2 2 2 47m
こんな感じでコンテナ数がスケールダウンしているのがわかります
deployments でイベントを確認してもスケールダウンしているのがわかります
kubectl describe deployments/request-dumper
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 51m deployment-controller Scaled up replica set request-dumper-5d75b447 to 1
Normal ScalingReplicaSet 22m deployment-controller Scaled up replica set request-dumper-5d75b447 to 4
Normal ScalingReplicaSet 5m deployment-controller Scaled down replica set request-dumper-5d75b447 to 2
最後に
kubernetes 上でコンテナのスケールアウト/ダウンを試してみました
ロードバランシングがデフォルトで付いているのは嬉しい点かなと思います
docker swarm の場合は haproxy などを使ってバランシングするのが定石ですが kubenetes ではそれらが不要になります
また今回紹介したロードバランシング以外にも External Load Balancer という機能もあるようです
0 件のコメント:
コメントを投稿