Kubernetesとプライベートクラウド
管理画面での場所: Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s)、続いて Services › Kubernetes (Overview, Clusters, Versions, Policy)。プライベートクラウド: Services › Private Cloud (Overview/vpc、 VPC/vpc/list、 Plans & pricing/vpc/plans)。System › Admin › License & updates から両方のモジュールを有効にします。
動作内容
- Kubernetes。 お客様はCloudStack Kubernetes Service (CKS)を使用して、CloudStack上にマネージドKubernetesクラスターを作成できます。コントロールプレーンは無料ですが、ワーカーノードに対して料金が発生します。NexCMPはクラスターごとに個別のネットワークとパブリックIPを作成し、お客様ごとのクラスターを分離します。
- プライベートクラウド。 お客様は、ルーター、サブネット(ティア)、ファイヤーウォールルール(ネットワークACL)、仮想マシンを含むプライベートネットワーク(CloudStack VPC)を利用できます。専用かつ無制限の速度(例: 50、100、500 Mbps、1、3 Gbps)を持つ帯域幅プランで販売されます。既定では、お客様ごとに1つのVPCを持つことができます。
どちらも CloudStack を基盤として構築されており、同じ接続を介してAPIを使用します。
要件
Kubernetes
| 項目 | 要件 |
|---|---|
| CloudStack | 4.23(テスト済み)。CKSを有効にする必要があります(cloud.kubernetes.service.enabled = true)。 |
| アカウント | お客様専用ドメインの Domain Admin アカウント。これにより、NexCMP は顧客ごとに CloudStack プロジェクトを作成し、その中のリソース制限を管理できます。CloudStack を参照してください。 |
endpoint.url | CloudStack のグローバル設定は、クラスター内の仮想マシンから到達可能な管理 API を指している必要があります。NexCMP は値とエンドポイントのチェック結果を表示します。 |
| バージョン | バイナリ ISO を持ち、状態が Enabled である Kubernetes サポートバージョンエントリが少なくとも 1 つ必要です。サポート終了 (EOL) を迎えたバージョンを販売することはできません。 |
| コントロールプレーンのオファリング | アカウントに表示される、厳密に 2 vCPU、2048 MB RAM、CPU キャップ (limitcpuuse = true) を備えた無料サービスオファリング。サーバーはこれ以外を cp_offering_invalid で拒否します。 |
| ネットワーク | 有効化されている CKS 対応の単一ネットワークオファリング。 |
| IP | 販売可能な範囲内の無料パブリック IPv4 アドレス。各クラスターが 1 つ使用します。 |
| 容量 | コントロールプレーンと小規模なルーター仮想マシン用に、クラスターあたり 2 〜 4 GB の RAM が必要です。容量タブを確認してください。 |
プライベートクラウド
| 項目 | 要件 |
|---|---|
| CloudStack | 4.23 (テスト済み)、VPC 有効。 |
| VPC オファリング | 1 つの VPC オファリング。デュアルスタックオファリングを使用すると、各ティアに IPv6 の /64 も割り当てられます。 |
| ティアネットワークオファリング | 帯域幅プランごとに 1 つのネットワークオファリングを VPC 用に作成し、ネットワークレート (Mbps) をプランの値に合わせます。さらに、未払いで VPC がロックされたときに適用される 1 Mbps のロックされたオファリングを 1 つ作成します。 |
| アカウント | 専用アカウント (Domain Admin を推奨)。VPC ネットワークはプロジェクト内ではなく、アカウント内に保持されます。 |
| IP | 無料パブリック IPv4 アドレス (各 VPC がソース NAT に 1 つ使用します)。 |
| アドレス空間 | 各 VPC は 10.128.0.0/9 から /16 を受け取ります。ご自身のネットワークではその範囲を使用しないでください。 |
| 依存関係 | CloudStack 接続済み。モジュールは Private Cloud です。 |
インフラストラクチャの準備
Kubernetes: CKS の有効化とバージョンの追加
サービスを有効にしてエンドポイントを設定し、管理サーバーを再起動します。
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementendpoint.urlはクラスターのコントローラーからコールバックされるため、クラスターの仮想マシンから到達可能なアドレスである必要があります。CloudStack ソースツリーの
create-kubernetes-binaries-iso.shスクリプトを使用して、販売するバージョンの Kubernetes バイナリ ISO をビルドし、それを Web サーバーでホストして登録します。bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateISO の状態が Ready になり、バージョンが Enabled になるのを待ちます。
NexCMP ドメインに限定して、コントロールプレーンオファリングを作成します。
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>CKS ネットワークオファリングが有効になっていることを確認します。
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
プライベートクラウド: オファリングの作成
CloudStack UI (Service Offerings › Network Offerings › Add network offering) または cmk を使用します:
現在の状況を一覧表示します:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,state有効な VPC オファリングを使用します (IPv6 が必要な場合はデュアルスタック)。新しいものが必要な場合は、CloudStack のデフォルトの VPC オファリングを複製して有効化します。
販売する各帯域幅プランに対して、VPC 用のネットワークオファリングを作成し (デフォルトの "isolated network offering for VPC networks" を複製)、Network rate (Mb/s) をプランの速度 (
50、100、500、1000、3000) に設定します。各オファリングを有効にします。ロックされた VPC 用に、ネットワークレート 1 (
VPC-LOCKED-1M) を持つオファリングをもう 1 つ作成します。顧客は引き続き SSH でサーバーにアクセスできますが、速度は制限されます。すべての提供物のUUIDを控えておきます。次のセクションでNexCMPに入力する必要があります。
設定されている提供物IDがクラウド内に存在しません
プライベートクラウドのフォームには、別のCloudStack環境に属する提供物UUIDがあらかじめ入力されています。最初のVPCの注文が失敗しないよう、すべてご自身のUUIDに置き換えてください。
NexCMP での接続
Kubernetes
Infrastructure › Cloud provider › CloudStackを開き、Kubernetes (CKS)タブを選択します。右側のカードCKS status on CloudStack (read-only)には、Endpoint check、CKSネットワークオファリング、
kubernetesserviceenabled、endpoint.urlの設定、ISOとバージョンのリストがcloud.kubernetes.*表示されます。何か修正した後はRecheckをクリックします。Sales configで、Control plane Offeringを選択し(2 vCPU / 2048 MB / CPU上限を満たしていない場合は警告が表示されます)、Max workers per clusterを設定し(1から9まで:CKSではコントロールノードを含めて10ノードまで許可されています)、Enable CKS for this backendのスイッチをオンにしてSaveをクリックします。提供物が選択されるまで、スイッチは無効のままになります。

Services › Kubernetes › Versionsを開き、Sync from CloudStackをクリックします。販売するバージョンのAvailable for new clustersスイッチをオンにし、デフォルトを設定して、必要に応じて**End of life (EOL)**の日付を設定します。
Services › Kubernetes › Policyを開きます。Worker plansで、Plan code(A〜Z、0〜9、ハイフン、最大16文字)を指定してプランを追加します。NVMe per worker (GB)、Min and max workers、およびクラスタの制限(アカウントごとのアクティブクラスタ数、24時間あたりの作成数、グローバル上限、同時CKS操作数)を設定します。その後、**Sell Kubernetes (CKS)**スイッチをオンにします。少なくとも1つのプランを販売中に維持する必要があります。

プライベートクラウド
Services › Private Cloud(概要)を開きます。ポリシーカードで、VPC offeringとLocked offering tierをご自身のUUIDに置き換えます。制限(アカウントごとのVPC数、ティア、VPCごとのVMおよびACLルール数、作成に必要なプラン料金の時間単位の残高、24時間あたりのプラン変更数、緊急停止の場合は0とする同時操作数)とDNSサーバーを確認します。Saveをクリックします(理由の入力が求められます)。

Services › Private Cloud › Plans & pricingを開きます。各プランのEditをクリックし、VND price per month、On sale、およびネットワーク速度がプランのMbpsと一致するCloudStack tier offeringのUUIDを設定します。行にはフル稼働時のコストと利益が表示されるため、どのプランがコストを下回っているかを確認できます。

Sell Private Cloudスイッチをオンにします。最初に動作確認を行うには、Beta accountsにテスト用のアカウントIDを追加します。これらのアカウントは、販売スイッチがオフの間でもサービスを利用できます。
確認
- Kubernetes:ステータスカードに
kubernetesserviceenabled: true、正常なエンドポイントチェック、および有効化されたバージョンが表示されます。顧客として1ワーカーのテスト用クラスタを作成すると、実行状態になり、kubectl get nodesで準備完了状態が表示されるはずです。その後削除してください。ネットワークとIPはプールに戻ります。 - プライベートクラウド:テスト顧客として最小のプランでVPCを作成します。VPCがアクティブになり、ティアにサブネットが割り当てられ、ティア内のVMがVPCルーター経由でインターネットに到達し、より大きなプランへのChange planが接続を切断することなく約20秒以内に反映されます。
制限と注意点
- Kubernetes:ワーカーはVMと同様にプラン価格で課金され、VMの制限においてVMとしてカウントされます。CKSの10ノード制限のため、クラスタには最大9つのワーカーを持たせることができます。
- Kubernetes:クラスタのコントロールプレーン、ルーター、パブリックIPは顧客にとって無料であり、そのコストはお客様の負担となります。
- プライベートクラウド:すべてのプランが従量制ではありません(unmetered)。フォーム内の価格は月額ベトナムドンです。コスト列にはお客様のものではない参考価格が使用されているため、ご自身の数値を使用してください。
- ロックされたVPCは1 Mbpsに制限され、課金されず、自動的に削除されません。
- プライベートクラウドでは、冗長ペアではなくVPCごとに1つのルーターを使用します。そのホストが障害を起こした場合、CloudStack数分で再構築します。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
cp_offering_invalid / 「このプランは 2 vCPU / 2048 MB / limitcpuuse ではありません」 | コントロールプレーンのプランのサイズが異なるか、CPU制限がありません | 手順3のようにプランを作成し、再度選択してください。 |
| Enable CKS スイッチが無効になっています | コントロールプレーンのプランが選択されていません | 最初にいずれかを選択してください。 |
kubernetesserviceenabled: false | CloudStackでCKSが無効になっています | 有効にして管理サーバーを再起動してください。 |
| エンドポイントのチェックに失敗しました | クラスターVMから endpoint.url にアクセスできません | アクセス可能なURLを設定し、管理サーバーを再起動して、Recheck をクリックします。 |
| 「EOL: 販売を有効にできません」 | バージョンのサポート終了日(EOL)が過ぎています | 新しいバージョンを登録してください。 |
| 「バージョンがありません: Sync from CloudStack をクリックしてください」 | Kubernetesのバージョンが登録されていません | バージョンを登録して同期してください。 |
| 「CKSバックエンドがOFFです: 販売フラグが有効でも、お客様はクラスターを作成できません」 | 販売スイッチはオンですが、CKSバックエンドがオフになっています | CloudStackタブでCKSを有効にしてください。 |
| 「少なくとも1つのプランを販売中にする必要があります」 | 最後のワーカープランが削除されました | 少なくとも1つのプランを維持するか、Kubernetesの販売をオフにしてください。 |
| クラスターの作成がスタックしています | 容量が不足しているか、ISOがありません | 容量タブとバージョンのISO状態を確認してください。 |
| 新しいVPCが最初のステップで失敗します | VPCオファリングまたはティアオファリングのIDが無効です | すべてのオファリングUUIDをCloudStackのものに置き換えてください。 |
| 「cs_offering_id は UUID である必要があります」 | オファリングIDがUUIDではありません | cmk list networkofferings からIDを貼り付けてください。 |
| プランの変更に失敗しました | 新しいティアオファリングが存在しないか、ネットワークレートが正しくありません | オファリングのUUIDとネットワークレートを確認してください。 |