はじめに
- Azure Kubernetes Service(AKS)を楽しんでいますか
- 私はKubernetes初心者です1
- 「Azure Kubernetes Serviceに関する記事を投稿しよう!」を期に入門してみようとおもいます
コンテナー化されたアプリケーションを Azure Kubernetes Service にデプロイする
どこから始めたらいいの?
MS Learnでしょ
ってことで「コンテナー化されたアプリケーションを Azure Kubernetes Service にデプロイする」から取り組んでみました。
しかし、「演習 - Azure Kubernetes Service クラスターを作成する」がどうもうまくいきませんでしたよ
必殺技の$\huge{英語で読む}$リンクを押して、英語のページを読んで英語は英語のまま理解することを心がけている私には解決できませんでした。
アクティブ化したら、サンドボックス用の Azure portal にサインインします。 必ず、サンドボックスをアクティブ化したときと同じアカウントを使用してください。
When the sandbox is activated, sign into the Azure portal for sandbox. Make sure to use the same account you activated the sandbox with.
この手順で「サンドボックス用の Azure portal にサインイン」したあとに何かsomethingをする必要があるのではないかとおもいますがよくわかりませんでした。
エラー
こんなエラーです。
赤い文字が怖い。
とにかく貼っておきます。
torifuku_kaiou@Azure:~$ export RESOURCE_GROUP=learn-f2e5c9f0-7772-4a45-ae69-2de97f79cf04
torifuku_kaiou@Azure:~$ export CLUSTER_NAME=aks-contoso-video
torifuku_kaiou@Azure:~$ az aks create \
> --resource-group $RESOURCE_GROUP \
> --name $CLUSTER_NAME \
> --node-count 2 \
> --enable-addons http_application_routing\
> --generate-ssh-keys \
> --node-vm-size Standard_B2s \
> --network-plugin azure
(RequestDisallowedByPolicy) Provisioning of resource(s) for container service aks-contoso-video in resource group learn-f2e5c9f0-7772-4a45-ae69-2de97f79cf04 failed. Message: Resource 'aks-nodepool1-37735957-vmss' was disallowed by policy. Policy identifiers: '[{"policyAssignment":{"name":"containers-assignment","id":"/providers/Microsoft.Management/managementGroups/eab64c3d-95b6-9f1f-755f-9f8578c31e45/providers/Microsoft.Authorization/policyAssignments/containers-assignment"},"policyDefinition":{"name":"Allowedresource types","id":"/providers/Microsoft.Authorization/policyDefinitions/a08ec900-254a-4555-9bf5-e42af04b5c5c"},"policySetDefinition":{"name":"containers-initiative","id":"/providers/Microsoft.Management/managementGroups/learn-sandbox-prod/providers/Microsoft.Authorization/policySetDefinitions/containers-initiative"},"policyDefinitionReferenceId":"allowed-resource-types_1"}]'.. Details:
Code: RequestDisallowedByPolicy
Message: Provisioning of resource(s) for container service aks-contoso-video in resource group learn-f2e5c9f0-7772-4a45-ae69-2de97f79cf04 failed. Message: Resource 'aks-nodepool1-37735957-vmss' was disallowed by policy. Policy identifiers: '[{"policyAssignment":{"name":"containers-assignment","id":"/providers/Microsoft.Management/managementGroups/eab64c3d-95b6-9f1f-755f-9f8578c31e45/providers/Microsoft.Authorization/policyAssignments/containers-assignment"},"policyDefinition":{"name":"Allowed resource types","id":"/providers/Microsoft.Authorization/policyDefinitions/a08ec900-254a-4555-9bf5-e42af04b5c5c"},"policySetDefinition":{"name":"containers-initiative","id":"/providers/Microsoft.Management/managementGroups/learn-sandbox-prod/providers/Microsoft.Authorization/policySetDefinitions/containers-initiative"},"policyDefinitionReferenceId":"allowed-resource-types_1"}]'.. Details:
さすがにここで辞めちゃうのははやすぎるし、そうだ、私はKubernetes初心者です。1
まだ私にはAzure Kubernetes Service(AKS)は早かったようです。
まずはKubernetesをローカルマシンでイゴかす2ところからやってみよう
次になにをやろうかしら。
そんなときにも$\huge{MS\ Learn}$
.NET マイクロサービスを Kubernetes にデプロイする
結論から申しますと、最後まで行けました。
ただ、2021年11月10日現在、日本語訳にはいくつか誤りがあります。
そこは、必殺技の$\huge{英語で読む}$リンクを押して、英語のページを読んで英語は英語のまま理解することを心がけている私は解決できました。
このLearnでは以下を学べます。
- 既にコンテナー化されたマイクロサービスに分割されている .NET アプリケーションを、Kubernetes 環境にデプロイする方法
- Docker Hub に Docker イメージをプッシュして、Kubernetes インスタンスによってイメージをダウンロードできるようにしてから、Kubernetes が各マイクロサービスに対して実行する内容を宣言的に記述するデプロイファイルを作成
- Kubernetes を使用してコンテナー化されたマイクロサービスをスケーリングすることがいかに簡単かを体験
もちろん誤りがあったところはちゃ〜んと、問題を報告しておきました。
はじめに
あなたは、世界で最も人気のあるピザ店である Contoso Pizza でソフトウェア開発者として新しい仕事を始めたとします。 ビジネスが好調なので、最近、ピザの在庫があるかどうかを表示する Contoso Pizza の Web サイトは Docker コンテナーでホストされるマイクロサービスにリファクターされました。
オーケストレーターとは
説明を味読しました。
とてもコンパクトに大事なことがまとまっています。
私みたいなKubernetes初心者はまずここをよく読むことから始めるとよいとおもいます。3
オススメです。
マヂおすすめです。
演習 - マイクロサービス イメージを Docker Hub にプッシュする
Docker HubへのPushは経験があります。
日本語訳に誤りがあります。たいした問題ではないです。
問題報告
ちゃ〜んと、問題を報告しておきました。
マイクロサービス コンテナーを Kubernetes にデプロイする
ここが難関でした。
日本語訳をそのまま写すと、だってこんな画面ですよ
$ kubectl apply -f backend-deploy.yml
$ kubectl apply -f frontend-deploy.yml
と、馴染みのないコマンドを意味をわからずに打ったあとの画面がこれ↓↓↓
困ったときは、必殺技の$\huge{英語で読む}$リンクを押して、英語のページを読んで英語は英語のまま理解することを心がけている私はイゴかす1ことができました。
backend-deploy.yml
に誤りがあります。
もちろんちゃ〜んと、問題を報告しておきました。
誤りを含んでいるbackendの止め方がわからず右往左往しました。
こんな感じで止めました。
$ kubectl get deployments --all-namespaces
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
default pizzabackend 1/1 1 1 99m
default pizzafrontend 1/1 1 1 104m
kube-system coredns 2/2 2 2 3h16m
$ kubectl delete -n default deployment pizzabackend
$ kubectl delete -n default deployment pizzafrontend
pizzafrontend
はそのままでよかったのかも。
気を取り直して再度、
$ kubectl apply -f backend-deploy.yml
$ kubectl apply -f frontend-deploy.yml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
pizzabackend-85fd76dd68-mt2wm 1/1 Running 0 20s
pizzafrontend-df9d577d5-s9thl 1/1 Running 0 6s
$\huge{all\ right}$
Kubernetes でコンテナー インスタンスをスケーリングする
あなたのマイクロサービスは、1 日のうちの特定の時間帯に大きな負荷がかかることがあります。 Kubernetes を使用すると、追加のインスタンスが自動的に追加され、マイクロサービスを簡単にスケーリングすることができます。
へえ〜 って感じで記事の通りにスケールアップ、スケールダウンができました
$ kubectl scale --replicas=5 deployment/pizzabackend
$ kubectl scale --replicas=1 deployment/pizzabackend
Kubernetes でマイクロサービスの回復性を証明する
$ kubectl delete pod pizzafrontend-5b6cc765c4-hjpx4
記事の通りにこんな感じでdelete
しても、すぐに別のポッドインスタンスが起動されます。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
pizzabackend-7445bdb5c9-pnpk6 1/1 Running 0 31m
pizzafrontend-5b6cc765c4-vwmv8 1/1 Running 0 7s
こういうのはどうかなってことで、試してみました。
Dockerには多少の心得はござる。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a937d6e26641 torifukukaiou/pizzafrontend "dotnet frontend.dll" 5 minutes ago Up 5 minutes k8s_pizzafrontend_pizzafrontend-df9d577d5-s9thl_default_e62d197d-9ddb-4f2b-a3c5-13482c57edf2_0
3b9ea4c77361 torifukukaiou/pizzabackend "dotnet backend.dll" 5 minutes ago Up 5 minutes k8s_pizzabackend_pizzabackend-85fd76dd68-mt2wm_default_d6baca90-ea65-4544-92c2-b1654046c4be_0
$ docker stop a937d6e26641
a937d6e26641
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
pizzabackend-85fd76dd68-mt2wm 1/1 Running 0 7m6s
pizzafrontend-df9d577d5-s9thl 1/1 Running 1 6m52s
また復活しています。立ち上がっています。
不死身です。
不死鳥です。
すばらしい
まとめ
がんばりました
おわりに
$\huge{MS\ Learn最高です🎉}$