2.9.3.3. 他のインフラストラクチャーコンポーネント
- 1 つの VPC
- DNS エントリー
- ロードバランサー (classic または network) およびリスナー
- パブリックおよびプライベート Route 53 ゾーン
- セキュリティーグループ
- IAM ロール
- S3 バケット
非接続環境で作業している場合、EC2 および ELB エンドポイントのパブリック IP アドレスに到達することはできません。これを解決するには、VPC エンドポイントを作成し、これをクラスターが使用するサブネットに割り当てる必要があります。エンドポイントの名前は以下のように指定する必要があります。
-
ec2.<region>.amazonaws.com
-
elasticloadbalancing.<region>.amazonaws.com
-
s3.<region>.amazonaws.com
必要な VPC コンポーネント
お使いのマシンとの通信を可能にする適切な VPC およびサブネットを指定する必要があります。
コンポーネント | AWS タイプ | 説明 | |
---|---|---|---|
VPC |
| 使用するクラスターのパブリック VPC を指定する必要があります。VPC は、各サブネットのルートテーブルを参照するエンドポイントを使用して、S3 でホストされているレジストリーとの通信を強化します。 | |
パブリックサブネット |
| VPC には 1 から 3 のアベイラビリティーゾーンのパブリックサブネットが必要であり、それらを適切な Ingress ルールに関連付ける必要があります。 | |
インターネットゲートウェイ |
| VPC に割り当てられたパブリックルートを持つパブリックインターネットゲートウェイが必要です。提供されるテンプレートでは、各パブリックサブネットに EIP アドレスと NAT ゲートウェイがあります。これらの NAT ゲートウェイは、プライベートサブネットインスタンスなどのクラスターリソースがインターネットに到達できるようにするもので、一部のネットワークが制限された環境またはプロキシーのシナリオでは必要ありません。 | |
ネットワークアクセス制御 |
| VPC が以下のポートにアクセスできるようにする必要があります。 | |
ポート | 理由 | ||
| インバウンド HTTP トラフィック | ||
| インバウンド HTTPS トラフィック | ||
| インバウンド SSH トラフィック | ||
| インバウンド一時 (ephemeral) トラフィック | ||
| アウトバウンド一時 (ephemeral) トラフィック | ||
プライベートサブネット |
| VPC にはプライベートサブネットを使用できます。提供される CloudFormation テンプレートは 1 から 3 アベイラビリティーゾーンのプライベートサブネットを作成できます。プライベートサブネットを使用できる場合は、それらの適切なルートおよびテーブルを指定する必要があります。 |
必要な DNS および負荷分散コンポーネント
DNS およびロードバランサー設定では、パブリックホストゾーンを使用する必要があり、クラスターのインフラストラクチャーをプロビジョニングする場合にインストールプログラムが使用するものと同様のプライベートホストゾーンを使用できます。ロードバランサーに解決する DNS エントリーを作成する必要があります。api.<cluster_name>.<domain>
のエントリーは外部ロードバランサーを参照し、api-int.<cluster_name>.<domain>
のエントリーは内部ロードバランサーを参照する必要があります。
またクラスターには、Kubernetes API とその拡張に必要なポート 6443、および新規マシンの Ignition 設定ファイルに必要なポート 22623 のロードバランサーおよびリスナーが必要です。ターゲットはマスターノードになります。ポート 6443 はクラスター外のクライアントとクラスター内のノードからもアクセスできる必要があります。ポート 22623 はクラスター内のノードからアクセスできる必要があります。
コンポーネント | AWS タイプ | 説明 |
---|---|---|
DNS |
| 内部 DNS のホストゾーン。 |
etcd レコードセット |
| コントロールプレーンマシンの etcd の登録レコード。 |
パブリックロードバランサー |
| パブリックサブネットのロードバランサー。 |
外部 API サーバーレコード |
| 外部 API サーバーのエイリアスレコード。 |
外部リスナー |
| 外部ロードバランサー用のポート 6443 のリスナー。 |
外部ターゲットグループ |
| 外部ロードバランサーのターゲットグループ。 |
プライベートロードバランサー |
| プライベートサブネットのロードバランサー。 |
内部 API サーバーレコード |
| 内部 API サーバーのエイリアスレコード。 |
内部リスナー |
| 内部ロードバランサー用のポート 22623 のリスナー。 |
内部ターゲットグループ |
| 内部ロードバランサーのターゲットグループ。 |
内部リスナー |
| 内部ロードバランサーのポート 6443 のリスナー。 |
内部ターゲットグループ |
| 内部ロードバランサーのターゲットグループ。 |
セキュリティーグループ
コントロールプレーンおよびワーカーマシンには、以下のポートへのアクセスが必要です。
グループ | タイプ | IP プロトコル | ポート範囲 |
---|---|---|---|
|
|
|
|
|
| ||
|
| ||
|
| ||
|
|
|
|
|
| ||
|
|
|
|
|
|
コントロールプレーンの Ingress
コントロールプレーンマシンには、以下の Ingress グループが必要です。それぞれの Ingress グループは AWS::EC2::SecurityGroupIngress
リソースになります。
Ingress グループ | 説明 | IP プロトコル | ポート範囲 |
---|---|---|---|
| etcd |
|
|
| Vxlan パケット |
|
|
| Vxlan パケット |
|
|
| 内部クラスター通信および Kubernetes プロキシーメトリクス |
|
|
| 内部クラスター通信 |
|
|
| Kubernetes kubelet、スケジューラーおよびコントローラーマネージャー |
|
|
| Kubernetes kubelet、スケジューラーおよびコントローラーマネージャー |
|
|
| Kubernetes Ingress サービス |
|
|
| Kubernetes Ingress サービス |
|
|
ワーカーの Ingress
ワーカーマシンには、以下の Ingress グループが必要です。それぞれの Ingress グループは AWS::EC2::SecurityGroupIngress
リソースになります。
Ingress グループ | 説明 | IP プロトコル | ポート範囲 |
---|---|---|---|
| Vxlan パケット |
|
|
| Vxlan パケット |
|
|
| 内部クラスター通信 |
|
|
| 内部クラスター通信 |
|
|
| Kubernetes kubelet、スケジューラーおよびコントローラーマネージャー |
|
|
| Kubernetes kubelet、スケジューラーおよびコントローラーマネージャー |
|
|
| Kubernetes Ingress サービス |
|
|
| Kubernetes Ingress サービス |
|
|
ロールおよびインスタンスプロファイル
マシンには、AWS でのパーミッションを付与する必要があります。提供される CloudFormation テンプレートはマシンに対し、以下の AWS::IAM::Role
オブジェクトについてのパーミッションを付与し、それぞれのロールセットに AWS::IAM::InstanceProfile
を指定します。テンプレートを使用しない場合、マシンには以下の広範囲のパーミッションまたは個別のパーミッションを付与することができます。
ロール | 結果 | アクション | リソース |
---|---|---|---|
マスター |
|
|
|
|
|
| |
|
|
| |
|
|
| |
ワーカー |
|
|
|
ブートストラップ |
|
|
|
|
|
| |
|
|
|