GCPでインフラつくるときに知らなかった用語
最近になって GCP でインフラ構築をしはじめたけど、AWS 経験があっても知らない用語がたくさんでてきたので書き留めておくことにしました。
ネットワーク設定
VPC フローログ
2018年4月6日に追加された機能で VPC ネットワーク内のトラフィックをみれる。料金はログ1GB毎に0.5ドル。AWS では2015年6月から存在しているようだが自分は一度も見たことない。
ハイブリッド接続
GCP だけではなく、オンプレミスのデータセンターや、AWS のような外部クラウドプロバイダーと協調してネットワーク接続すること。Google はインフラの併用や移行を促すためにハイブリッド接続を標榜している。
Cloud Router
インターネットとは、たくさんのネットワーク網を相互通信させる技術とも表現できる。別のネットワークに接続するためにはパケットの宛先を知り、保持しておかなければいけないが、この技術を経路制御という。経路制御のための代表的なプロトコルが BGP。BGP で GCP 内外のネットワークとルーティングするためのサービスが Cloud Router。
動的ルーティングモード
ルーティングには手動で管理・運用が必要な静的ルーティングと、保守が不要で障害時に自動的にルーティングを変更してくれる動的ルーティングがあり、通常は動的ルーティングを使用する。VPC の設定では動的ルーティングモードとして REGIONAL
と GLOBAL
が設定できる。
例えば GKE で東京リージョンと大阪リージョンを使ったマルチリージョン構成にする場合、その GKE がオンプレミスのような外部ネットワークと連携する場合、GLOBAL
にしておくことで東京と大阪リージョンが個別に外部接続しなくとも片方のリージョンのネットワークを経由してルーティングできるようになるため、ネットワーク障害時のルーティングの可用性が高まる。マルチリージョン構成で且つ外部ネットワークに接続するような場合にだけ必要になる設定なのでほとんどの場合 REGIONAL
で良い。
アドバタイズする
ネットワーク制御分野の用語。Cloud Router の場合、隣接するネットワークのルータに対象(サブネットや外部 IP アドレス)への経路情報を伝達することを指す。
VM
プリエンプティブルインスタンス
ここでいう preempt (先に専有する) とは、GCP 側が必要なときにこのインスタンスを専有 (停止) して利用できることを意味する。利用者はいつ停止されても構わないという条件の元に、1/4くらいの低価格で利用できるインスタンスのこと。
AWS ではスポットインスタンスと呼ばれている。
単一テナントノード
英語で sole-tenant node。通常、クラウド事業者の物理サーバーは仮想化されて複数の顧客によって共有して使われているが、専有できるのが単一テナントノード。セキュリティやコンプライアンス面で厳しい要件が課されているプロジェクトで使われる。
ノードアフィニティ
クラスタリング関連の概念らしい。
Google Compute Engine では単一テナントノード上で VM インスタンスをプロビジョニングするための設定として存在する。単一テナントノードにはノードグループという概念があり、ラベルを指定できる。ノードアフィニティとは指定ラベルのついたノードグループに VM インスタンスをプロビジョニングするための設定。
Kubernetes にも Pod アフィニティという似た仕組みがある。
アンチアフィニティ
上記のノードアフィニティとは逆に、プロビジョニングしないための設定。通常のアフィニティではノードグループの指定ラベルに対して operator="IN" とすることでプロビジョニング対象とするが、operator="NOT" とすることでプロビジョニング対象外にできる。これをアンチアフィニティという。
GKE
Anthos
GCP のマネージドサービスである GKE を、オンプレミスや AWS を利用してマルチクラウドで実現するためのサービス。
リリースチャンネル
Kubernetes の自動アップグレードを制御する仕組み。3つのリリースチャンネルがあり利用可能な Kubernetes のバージョンが順に保守的なものとなるため、自動アップグレードの頻度も緩やかになる。
Rapid
Regular
Stable
本番環境では Regular
か Stable
が推奨されている。デフォルトでは Regular
となる。
2021-02-14 現在、Kubernetes の最新バージョンは v1.20 で 2020-12-09 にリリースされているが、Rapid でもまだ使えない。
マシンタイプ
GKE のデフォルトは e2-medium
。vCPU 2個、メモリ4GB。
VPC ネイティブクラスタ
GKE のクラスターネットワークモードには下記2つがある。
- VPC-native
- Routes-based
VPC ネイティブなクラスタとは --enable-ip-alias
オプションを指定することで作成できるが、Pod の IP アドレス範囲をサブネットから割り当てることを指す。ワーカーノードの Pod に展開される各サービス毎に異なる IP アドレスを割り振れる、らしい。
クラスタの可用性タイプ
- ゾーンクラスタ
- シングルゾーンクラスタ
- マルチゾーンクラスタ
- リージョンクラスタ
GCP では AWS と同様に東京・大阪・オレゴンのような大分類としてのリージョンがあり、リージョンの中に a, b, c といった形式で複数のゾーンが存在する。一般的に Web サービスの本番環境のサーバーでは複数ゾーンにアプリケーションを分散させることで可用性を担保している。
シングルゾーンクラスタは単一ゾーンに GKE のコントロールプレーンとワーカーノードを展開する。可用性はもっとも低いがコストも低く済む。
マルチゾーンクラスタは単一ゾーンにコントロールプレーン、他のゾーンにワーカーノードを展開する。クラスタのアップグレード中でもワーカーノードは動作し続けるためアプリケーションを止めずに済むが、その最中はクラスタの設定等ができない。
リージョンクラスタはコントロールプレーンとノードプールを3つのゾーンに展開する。もっとも可用性が高いためよっぽどコスト削減に傾倒していない限りは、本番環境ではリージョンクラスタを使うこととなる。
Discussion