LoginSignup
1
0

More than 1 year has passed since last update.

ACK(Alibaba Cloud Container Service for Kubernetes)を使って、Alibaba Cloudでk8sを動かしてみる

Last updated at Posted at 2022-12-10

はじめに

みなさん、Kubernetes使っていますか?
AWSであればEKS、Google CloudであればGKEと、マネージドなk8s環境の運用管理サービスがありますよね。

今回はAlibaba Cloudのマネージドなk8s実行環境提供サービスであるACK(Alibaba Cloud Container Service for Kubernetes)を使って、Alibaba Cloud上のk8s実行基盤にアプリケーションをデプロイしてみます。

ベースは公式のGetting Startedです。日本語ドキュメントよりも英語のほうが充実していたため、英語のドキュメントをベースに進めていきましょう。

最終的な成果物

k8sクラスター上にルービックキューブ的なゲームをデプロイするハンズオンのようですね。
こういう遊び心があるハンズオンはいいですね!
2022-12-06_22-54-23.png

ACKの有効化

まずは下記のリンクからACKコンソールを開きます。
https://cs.console.aliyun.com/?spm=5176.12818093.0.dcsk.6c9c12d20DzcmP#/k8s/cluster/list
※ はじめてACKコンソールを開く場合は、ACKの有効化が必要になります。

  • Container Service for Kubernetes Terms of Service にチェックをいれる
  • 画面右下のActivate Now をクリック
    image.png

Activateに成功したら以下のような画面が表示されます。
image.png
Activateには1 ~ 5分ほどかかるようなので、少し待ってConsoleに戻りましょう。
ACK Consoleをはじめて開く場合には、Default Roleの作成を促されるので、指示に従いCloud Resource Access AuthorizationからACK用のロールを作成しましょう。
AWSのIAMロールなどと同じように、有効化しない限りは該当のリソースを作成したり、操作したりすることができない仕様になっています。面倒かもしれませんが、逆にセキュリティが高いということの証明ですね。

クラスターの作成

ACKコンソール画面の左にある Clusters を開きます。
image.png

画面右上の Create Kubernetes Cluster をクリックします。
image.png

パラメータの設定

Managed Kubernates タブにて、作成するクラスタのパラメータを設定していきます。
image.png

設定項目
Cluster Specification Professional
Cluster Name ACK-Demo
Region Japan(Tokyo)

VPCの作成

すでに作成済みのVPCを利用してもよいですが、ここでは Create VPC をクリックして、新規にVPCを作成していきます。

VPC作成画面では以下の通り設定を行います。
image.png

vSwitchの作成も行います。vSwtichはAWSでいうサブネットグループですね。
image.png

設定ができたら OK をクリックしてVPCを作成します。
ACK Clusterの設定画面に戻り、先ほど作成したVPCを選択します。
vSwitchにもチェックをいれます。
image.png

Access to API Server欄についても Expose API Server with EIP をチェックします。
image.png

Node Poolの設定

ノードプールは、クラスタの中で「同じ構成をもったワーカーノード」のグループです。
まずはインスタンスタイプですね。ドキュメントによると、クラスタの安定性を高めるために、少なくとも
4vCPU 8GiBのメモリ のインスタンスタイプを選択することが推奨されているようです。

Filterで上記の条件を設定し、表示された Enhanced Compute Type c6e を選択します。
Selected Types欄に選択したインスタンスタイプが表示されたらOKです。

image.png

起動するワーカーノードの台数を Quantity で設定します。
ワーカーノードを1台で起動することも可能ですが、その場合このワーカーノードが単一障害点となってしまいます。片方のワーカーノードに障害が発生したとしても、問題なくシステムが動作するように最低2台を起動しておきましょう。

System Diskについては、確保したサイズ分料金が増えてしまうので、今回は40GiBとしています。
image.png

最後に Logon Type を選択します。
今回はパスワードでのログインを選択しています。
2022-12-10_09-37-25.png

設定が完了したら、画面下部にあるNext:Component Configurationsをクリックします。
ちなみに、この時点で左側に時間当たりのコストが表示されています。親切な設計ですね!
image.png

Component Configurationsの設定

Component Configurationsページでは、以下の通りUse Default Alert Rule Templateのチェックを外します。有効化してもいいのですが、アラートルールの作成が求められるので、簡略化のため今回は無効化しています。
image.png

最後に画面下部のNext:Confirm Orderをクリックします。
image.png

確認画面が出るので、Terms of Serviceにチェックを入れて、画面下部のCreate Clusterをクリックします。
image.png

クラスタの作成には10分程度かかるため、作成完了まで待ちましょう。
ClusterダッシュボードでCluster StatusRunningになっていたらOKです。
image.png

アプリケーションの公開と作成

では、早速ACKクラスタ上にアプリケーションを公開していきましょう。
クラスタ名をクリックします。
image.png

WorkloadsからDeploymentを選択します。
image.png

Create from image をクリックします。
ここでいうイメージは、ACK上で動作させるアプリケーションのコンテナイメージのことですね。
image.png

Basic Informationページにて、Nameにack-cubeを設定します。
任意の名前なので、それ以外の名前でもOKです。
そして、右下の Next をクリックします。
image.png

コンテナのパラメータを設定します。
Image Nameに、registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cubeを設定します。これはルービックキューブゲームのコンテナイメージが格納されているパスです。

Image Version1.0とします。ちなみに、ここを指定しない場合は最新のバージョンが自動的に取得されます。

次に、動作するアプリケーションのリソース制限を行います。
現在、ACKクラスターの基盤としてEnhanced Compute Type c6eインスタンスタイプが2台起動しており、コンテナはその上で動作します。
その際、それぞれのコンテナは基盤となるクラスターのリソースを利用しますが、ここで設定を行うことで、1つのコンテナが過剰にリソースを利用することを防ぐことができます。

Resource Limitは、アプリケーションのリソース制限です。
CPU1 CoreMemory1024MiBを選択します。

反対に、Requiredは、最低限確保するリソースの量です。リソース不足でアプリケーションが起動しないといった自体を避けることができます。
CPU0.5 CoreMemory512MiBを選択します。
image.png

Portの設定も行います。+ボタンを押して追加を行い、
Nameack-cubeContainer Port80とします。
設定ができたら、画面右上のNextをクリックします。
image.png

Advancedな設定ページで Services の隣の Create をクリックします。
image.png

この Service は、k8sの主要なリソースの1つです。コンテナ(Pod)にアクセスするための、ロードバランサーやDNSサーバーのような役割を担うリソースです。

TypeServer Load Balancer - Public Access - Create SLB Instance を選択します。
Modifyをクリックすることで、SLB Instanceのタイプを変更することができます。今回はデフォルトのslb.s1.smallを選択します。

image.png

Port Mappingでは、以下のように設定します。

設定項目
Name ack-cube-svc
Service Port 80
Container Port 80

設定ができたら、右下のCreateをクリックして、Serviceの設定ウインドウを閉じます。
最後に、画面右下のCreateをクリックして、アプリケーションの作成を行います。
image.png

以下のような画面が表示されたら、アプリケーションの作成が正常に完了しています。
image.png

アクセスしてみる

ACK-Demo クラスタ画面で、左から Network -> Services をクリックします。
image.png

サービスの一覧が表示されるので、アプリケーションに紐づいたack-cube-svcのレコードを探し、External Endpoint欄のIPアドレスをクリックします(画像は黒塗りにしています)
image.png

ACKクラスター上で稼働している、ルービックキューブアプリケーションにインターネット経由でアクセスができました!やった!!
image.png

アプリケーションのモニタリング

ここからは、ACK上で稼働するアプリケーションのモニタリング機能の確認です。
ACK-Demo クラスタの画面左から、Operations -> Prometheus Monitoringを選択します。
image.png

Prometheus(プロメテウス)はOSSのモニタリングツールです。
Prometheus Monitoringページが開いたら、Application Monitoring -> Deployment Detailsタブをクリックします。
namespacedefaultに、deploymentack-cubeに設定します。
この設定を行うことで、先ほど作成したルービックキューブアプリケーションに絞って、メモリ使用量やCPU使用率の監視を行うことができます。
image.png

さいごに

今回は、公式のGetting Startedをベースに、Alibaba Cloud上でACKを利用したk8sクラスターの作成、アプリケーションのデプロイ、モニタリングまでを行いました。
UIが非常に洗練されていて、個人的にはGoogle CloudのGKEや、AWSのEKSよりも直感的に操作することができたと感じます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0