Member-only story
KubernetesでのノードおよびPod Affinity/Anti-Affinityの実装:実用例
15 min readApr 30, 2020
先週のチュートリアルで、ノードとポッドのアフィニティ/アンチアフィニティの概念を紹介しました。 現実のシナリオを通して、このアイデアをさらに探求します。
Objective
4ノードのKubernetesクラスターに、MySQL、Redis、Python / Flask Webアプリの3つのマイクロサービスをデプロイします。 ノードの1つがSSDディスクに接続されているため、MySQL Podが同じノードでスケジュールされるようにします。 Redisを使用してデータベースクエリをキャッシュし、アプリケーションのパフォーマンスを加速します。
ただし、複数のPod of Redisを実行するノードはありません。 Redisはキャッシュとして使用されるため、ノードごとに複数のポッドを実行することは意味がありません。 次の目標は、WebポッドがRedisポッドと同じノードに配置されるようにすることです。 これにより、Webとキャッシュレイヤー間の低レイテンシーが保証されます。 Webポッドのレプリカの数をスケーリングしても、Redisポッドを持たないノードには配置されません。
Setting up a GKE Cluster and Adding an SSD Disk
GKEクラスターを起動し、SSD永続ディスクをいずれかのノードの一つに追加して、ノードにラベルを付けましょう。
gcloud container clusters create "tns" \--zone "asia-south1-a" \--username "admin" \--cluster-version "1.13.11-gke.14" \--machine-type "n1-standard-4" \--image-type "UBUNTU" \--disk-type "pd-ssd" \--disk-size "50" \--scopes…