1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python(AzureML)からAKSを構築する~初心者がKubernetesでアプリをデプロイするまで2 ~

Last updated at Posted at 2021-03-10

#目的
前回
まずは、開発とデプロイの環境を整えましょう。

###kubernetesについて
Kubernetesを使えるサービスは以下の通りですね。
Azure:AKS
AWS:EKS
Google Cloud:GKE

筆者はAzureを使っているので、AKSをベースに記載していきます。
Kubernetes(以降、K8S)の開発に入れば、どれを使おうともほぼ変わらないと思います。

##AKSの構築
Azure Portalからも作るのが一般的ですが、Azure CLIやPythonのライブラリazureml.core.computeからも作れます。

今回は、色々な事情からAzureMLのpythonライブラリを使用したいと思います。
前回作成したAzure VM環境から以下のPythonコマンドでAKSを作成します。
注)成功した時点から課金が始まります。

create_aks.py
from azureml.core.compute import AksCompute, ComputeTarget

prov_config = AksCompute.provisioning_configuration(
  agent_count=3,
  vm_size='Standard_D4a_v4',
  location='japaneast'  
)

aks_name = 'myaks'
aks_target = ComputeTarget.create(
  workspace = ws,
  name = aks_name,
  provisioning_configuration = prov_config
)

aks_target.wait_for_completion(show_output = True)

なるべく安く、しかも画像を扱う深層学習を扱いたいので、メモリのVMはStandard_D4a_v4を使用しました。
Standard_D4a_v4のスペック

vCPU RAM 一時ストレージ
4 16GiB 100GiB

また、K8Sの機能を発揮するためにノードは3としています。
この構成で、2021年1月現在で無停止で月々5万円強のコストとなります。
なので、使わないときは停止しておきましょう。

7~8分程度で、AKSが作成されます。
AKSが作成されると、AKSようのリソースグループが新たに作成されます。

aks_azure_portal.png

作成されたリソースグループに、指定したノード分の仮想マシンと仮想ディスク、ネットワークインターフェースのリソースが作成されていることが分かります。
※この図には、のちに作成するウェブアプリのためのリソースも含まれています。

###クラスタへの接続
Azure CLIが使用できるコマンドラインから、以下のコマンドでAKSクラスタに接続します。

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

myResourceGroupはAKS作成時に生成されたリソースグループではなく、AKSを管理するリソースグループを指定します。
このコマンドを使用することで、AKSへのアクセス情報を記載した設定ファイルが、~/.kube/configに作成されます。
したがって、以降は、AKSを新たに作らない限り、このコマンドの実行は不要です。

試しにkubectl get nodeコマンドで、生成されたノードを確認してみましょう。

kubectl get node
NAME                       STATUS   ROLES   AGE    VERSION
aks-agentpool-12345678-0   Ready    agent   14m45s   v1.17.9
aks-agentpool-12345678-1   Ready    agent   14m45s   v1.17.9
aks-agentpool-12345678-2   Ready    agent   14m45s   v1.17.9

ノードが3つ生成されていることが分かります。
ノードの数は後から自由に変更可能です。
0にすることもできますが、復旧が困難となるため、やめましょう。
kubectlは、かなり権限の広いコマンドで以下のようにすべてのノード、コンテナを削除することも可能ですが、環境破壊者なので、使わないように注意しましょう。

# 使っちゃだめ
kubectl delete node --all
kubectl delete pods --all
kubectl delete services --all

(続く)

1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?