Container Service コンソール上で、素早く、簡単に Kubernetes クラスターを作成できます。
背景
クラスターの作成中は、Container Service により以下の操作が行われます:
- ECS (Elastic Compute Service) インスタンスの作成および SSH 公開鍵を利用した管理ノードから他のノードへのログイン設定をします。 CloudInit による Kubernetes クラスターのインストールおよび設定をします。
- セキュリティグループを作成します。 セキュリティグループにより、すべての ICMP ポートの VPC (Virtual Private Cloud) インバウンドアクセスが許可されます。
- 既存の VPC をお使いでない場合、新しい VPC および VSwitch を作成し、VSwitch への SNAT を作成します。
- VPC ルーティングルールを作成します。
- NAT ゲートウェイおよび共有帯域幅パッケージまたは EIP (Elastic IP) を作成します。
- RAM (Resource Access Management) ユーザーおよび Access Key を作成します。 RAM ユーザーは ECS インスタンスの照会、作成、削除に関する権限、クラウドディスクの追加、削除に関する権限、SLB (Server Load Balancer)、CloudMonitor、VPC、Log Service および NAS (Network Attached Storage) 上での操作に関するすべての権限を持ちます。 Kubernetes クラスターにより、設定に応じた SLB インスタンス、クラウドディスクおよび VPC ルーティングのダイナミックな作成が行われます。
- SLB インタンスの作成および 6443 番ポートを開放します。
- SLB インタンスの作成および 6443 番ポートを開放します。 (インターネットからの SSH アクセスの有効化を選択した場合、クラスターの作成時に 22 番ポートが開放されます。 それ以外の場合では 22 番ポートは開放されません。)
前提条件
Container Service、ROS (Resource Orchestration Service) および RAM などのサービスが有効化されている必要があります。
Container Service コンソール、ROS コンソールおよびRAM コンソールにログインし、対応するサービスを有効化します。
制限
- クラスターで作成された SLB インスタンスは 従量課金請求のみのサポートです。
- Kubernetes クラスターは VPC ネットワークタイプのみのサポートです。
- デフォルトでは、それぞれのアカウントには、アカウントによって作成されるクラウドリソースに関する指定されたクォータがあります。 クラウドリソースの数がクォータを超えた場合、アカウントはクラスターを作成できなくなります。 クラスターの作成前に十分なクォータを持っているか確認してください。 クォータを増やす場合は、チケットを起票し、サポートセンターへお問い合わせください。
- デフォルトでは、それぞれのアカウントですべてのリージョンにおいて 5 つまでのクラスターを作成でき、それぞれのクラスターには 40 ノードまで追加できます。 それ以上のクラスターおよびノードを作成する場合は、チケットを起票し、サポートセンターへお問い合わせください。
注 Kubernetes では、デフォルトの VPC ルートの最大数は 48 です。つまり、デフォルトで VPC を使用する場合は、 Kubernetes クラスターは 48 ノードまでとなります。 ノード数を増やしたい場合は、まず、VPC ルート数を増やすためのターゲットとなる VPC に関するチケットを起票し、サポートセンターへお問い合わせの後、Container Service に関するチケットを起票し、サポートセンターへお問い合わせください。
- デフォルトでは、それぞれのアカウントで 100 個のセキュリティグループを作成できます。
- デフォルトでは、それぞれのアカウントで 60 個まで従量課金の SLB インスタンスを作成できます。
- デフォルトでは、20 個まで EIP を作成できます。
- デフォルトでは、それぞれのアカウントですべてのリージョンにおいて 5 つまでのクラスターを作成でき、それぞれのクラスターには 40 ノードまで追加できます。 それ以上のクラスターおよびノードを作成する場合は、チケットを起票し、サポートセンターへお問い合わせください。
- ECS インスタンスの制限は以下のようになります:
- CentOS のみのサポートです。
- 従量課金およびサブスクリプションによる ECS インスタンスが作成できます。
手順
- Container Service コンソールにログインします。
- Kubernetes 上で、左側のナビゲーションウィンドウから [クラスター] をクリックします。
- 右上角の [Kubernetes クラスターの作成] をクリックします。
デフォルトでは、[Kubernetes クラスターの作成] ページが表示されます。
- クラスター名を入力します。
クラスター名は、1 文字以上 63 文字以下で数字、漢字、英字およびハイフン (-) を含むことができます。
- クラスターの設置されているリージョンおよびゾーンを選択します。
- クラスターのネットワークタイプを選択します。 Kubernetes クラスターは VPC ネットワークタイプのみのサポートです。
VPC: [自動作成] を選択して VPC と Kubernetes クラスターを一緒に作成するか、[既存を使う] を選択して既存の VPC を使用します。 [既存を使う] を選択した場合、2 つの表示されたドロップダウンリストから VPC および VSwitch を選択できます。
- 自動作成: クラスター作成時に、システムにより自動的にお使いの VPC への NAT ゲートウェイが作成されます。
- 既存を使う: 選択した VPC に NAT ゲートウェイがある場合、Container Service によりその NAT ゲートウェイが使用されます。 選択した VPC に NAT ゲートウェイがない場合、システムにより自動的にデフォルトの NAT ゲートウェイが作成されます。 システムによる NAT ゲートウェイの自動作成を希望しない場合、[VPC 用 SNAT の設定] をオフにします。
注 オフにした場合、NAT ゲートウェイを設定し、セキュリティ保護されたアクセスによる VPC インターネット環境を実装するか、手動で SNAT の設定が必要です。 NAT ゲートウェイの実装または 手動での SNAT 設定を行わない場合、VPC 上のインスタンスが正常にインターネットにアクセスできず、クラスター作成が失敗します。
- ノードタイプを選択します。 従量課金およびサブスクリプションがサポートされます。
- マスターノードを設定します。
マスターノードのインスタンスタイプを選択します。
注- 現在、CentOS のみのサポートです。
- 現在、マスターノードは 3 つのみ作成できます。
- デフォルトでは、システムディスクはマスターノードに接続されます。 利用可能なシステムディスクは SSD クラウドディスクおよび Ultra クラウドディスクです。
- ワーカーノードを設定します。 ワーカーノードの作成または既存のインスタンスを追加できます。
注
- 現在、CentOS のみのサポートです。
- それぞれのクラスターは 37 個までワーカーノードを含むことができます。 それ以上のノードの作成を希望される場合は、チケットを起票し、サポートセンターへお問い合わせください。
- デフォルトでは、システムディスクはワーカーノードに接続されます。 利用可能なシステムディスクは SSD クラウドディスクおよび Ultra クラウドディスクです。
- ワーカーノードに手動でデータディスクを接続できます。 データディスクには SSD クラウドディスク、Ultra クラウドディスクまたは ベーシックディスクを利用できます。
- ワーカーノードの作成のため、インスタンスタイプを選択し、ワーカーノードの数を設定します。 この例では、1 つのワーカーノードを作成します。
- 既存のインスタンスを追加するには、あらかじめ ECS インタンスを 現在お使いのリージョンに作成する必要があります。
- ログインモードを設定します。
- キーペアを設定します。
クラスター作成時、キーペアログインノードを選択し、 [新しいキーペアの作成] をクリックします。 ECS コンソールで、キーペアを作成します。 詳細は、SSH キーペアの作成をご参照ください。 キーペアの作成後、クラスターへのログイン資格情報としてキーペアを設定します。
- パスワードを設定します。
- ログインパスワード: ノードログインパスワードを設定します。
- パスワードの確認: 設定したノードログインパスワードを確認します。
- キーペアを設定します。
- Pod Network CIDR および Service CIDR パラメーターを設定します。
注 これら 2 つのパラメーターは [既存を使う] VPC を選択した場合のみ利用できます。
Pod Network CIDR および Service CIDR を指定します。 "Pod Network CIDR" および "Service CIDR" のどちらも VPC により使用される CIDR (Classless Inter-Domain Routin) ブロックおよび VPC 上の既存の Kubernetes クラスターと重複できません。 クラスター作成後に値を変更することはできません。 加えて、"Service CIDR" は ポッドネットワーク CIDR と重複できません。 Kubernetes CIDR ブロックの計画法について、詳しくはVPC での Kubernetes CIDR ブロックの設定をご参照ください。
- 利用可能な Docker のバージョンおよび Kubernetes のバージョンが表示されます。 バージョンを参照し、必要に応じてバージョンを選択してください。
- VPC の SNAT ゲートウェイを設定するかどうかを選択します。
注 [自動作成] を選択する場合、SNAT ゲートウェイの設定が必要です。 [既存を使う] を選択する場合、SNAT ゲートウェイを自動的に設定するかどうかを選択できます。 SNAT ゲートウェイの自動設定を選択しない場合、インターネットへのセキュリティ保護されたアクセスを行う VPC インスタンスの NAT ゲートウェイの設定、または SNAT ゲートウェイの設定を手動で行えます。 NAT ゲートウェイの設定または SNAT ゲートウェイの設定を行わない場合、VPC 上のインスタンスがインターネットにアクセスできず、クラスター作成が失敗します。
- [パブリック SLB を利用した API サーバーの公開] を有効化するかどうかの選択をします。
API サーバーにより、様々はリソースオブジェクト (ポッドやサービスなど) への、追加、削除、編集、確認、監視および他のHTTP Rest インターフェイスが提供されます。
- このオプションの有効化を選択した場合、SLB が作成され、マスターノードのために 6443 番ポートが開放されます。 6443 番ポートは API サーバーに対応します。 kubeconfig を使ってインターネットへの接続およびインターネットを介したクラスターの操作を行えます。
- このオプションを有効化しなかった場合、インターネット SLB は作成されません。 kubeconfig をVPC への接続および VPC 内のクラスターの操作にのみ使用できます。
- インターネットからの SSH ログインの有効化するかどうか選択します。
注 インターネットからの SSH アクセスを有効化するために、 [パブリック SLB を利用した API サーバーの公開] を選択する必要があります。
- インターネットからの SSH アクセスを有効化した場合、SSH によるクラスターへのアクセスが可能になります。
- インターネットからの SSH アクセスを有効化しなかった場合、SSH によるクラスターのアクセス、または kubectl によるクラスターへの接続を行えません。 SSH によるクラスターインスタンスへのアクセスには、手動で ECS インタンスへの EIP をバインドし、セキュリティグループルーるを設定し、SSH ポート (22 番) を開放してください。 詳細については、SSH を使用した Kubernetes クラスターへのアクセスをご参照ください。
- お使いの ECS にクラウドモニタリングプラグインをインストールするかどうかを選択します。
ECS ノードにクラウドモニタリングプラグインをインストールできます。これにより、CloudMonitor コンソール上で作成した ESC インスタンスのモニタリング情報を参照できます。
- ログサービスを使うかどうか選択します。 既存のプロジェクトの選択、またはプロジェクトの作成ができます。
[SLS の使用] を選択した場合、クラスターにおいてログサービスプラグインが自動的に設定されます。 アプリケーション作成の際、シンプルな設定により迅速にログサービスを使用できます。 詳しくは、Log Service を利用した Kubernetes クラスターログの収集をご参照ください。
- 高度な設定を表示するかどうかを選択します。
- ネットワークプラグインを選択します。 利用可能なネットワークプラグインは "Flannel" および "Terway" です。 詳しくは、Kubernetes クラスターネットワークには、Terway または Flannel プラグインのどちらを選択するべきですか ?をご参照ください。
- Flannel: シンプルで安定したコミュニティ Flannel CNI プラグインです。 いくつかのシンプルな機能のみ提供されます。 例えば、Kubernetes ネットワークポリシーはサポートしていません。
- Terway: Alibaba Cloud Container サービスにより開発されたネットワークプラグインです。 コンテナーに Alibaba Cloud ENI (Elastic Network Interfaces) を割り当てることができます。 Kubernetes Network Policy によりコンテナー間のアクセスポリシーを定義できます。 加えて、個々のコンテナーに帯域幅制限を設定できます。
- ノードに関するポッド数を設定します。1 つのノードによって実行される最大のポッド数です。 デフォルト値を使用することを推奨します。
- カスタマイズ Cluster CA を使用するかどうか選択します。 このオプションが選択された場合、CA 証明書が Kubernetes クラスターに追加されます。これにより、サーバーとクライアント間での情報交換のセキュリティ保護が向上します。
- ネットワークプラグインを選択します。 利用可能なネットワークプラグインは "Flannel" および "Terway" です。 詳しくは、Kubernetes クラスターネットワークには、Terway または Flannel プラグインのどちらを選択するべきですか ?をご参照ください。
- 右上角の [作成] をクリックします。
クラスターデプロイ結果を参照します。
クラスターの作成が成功した後、Container Service、Kubernetes コンソールのクラスターリストで作成したクラスターを参照できます。
- クラスターログを参照するため、クラスターの右にある、[ログの参照] をクリックします。 より詳細な情報を参照する場合は、[スタックイベント] をクリックします。
- クラスターの右側にある [管理] をクリックすることで、クラスターの基本情報および接続情報を参照できます。
Cluster 情報セクション:- API サーバーインターネットエンドポイント: インターネットを介して Kubernetes API サーバーによりサービスが提供される際の IP アドレスおよびポート番号 これにより、kubectl を使用したクラスターまたはターミナル上での他のツールの管理が可能になります。
- API サーバーイントラネットエンドポイント: クラスター内部で Kubernetes API サーバーによりサービスが提供される際の IP アドレスおよびポート番号です。 この IP アドレスは SLB インスタンスのアドレスで、バックエンドの 3 つのマスターノードによりサービスが提供されます。
- マスターノード SSH IP アドレス: SSH を使って直接マスターノードにログインでき、クラスターのルーチンメンテナンスを実行できます。
- サービスアクセスドメイン: テスト用のアクセスドメイン名によるクラスター上のサービスが提供されます。 サービスアクセスドメイン名のサフィックスは
<cluster_id>.<region_id>.alicontainer.com
です。
例えば、SSH からマスターノードにログインし、kubectl get node
を実行し、クラスターのノード情報を参照できます。
前出の図で示されるように、クラスターは 4 つのノードを持ち、3 つのマスターノードおよび パラメーターを設定した際に設定した 1 つのワーカーノードからなります。