Edited at

仕組みがわかるKubernetesでハマった話まとめ(第一章, 第二章)


本書

リンク:https://www.shoeisha.co.jp/book/detail/9784798157849

読み始めたばかりですが、丁寧でいい本です

この記事では手を動かしてハマったところをまとめておきます。


イメージビルドで早速詰まった話

本書を読みながら、ふんふんとまずはサンプルをビルドしようとした.

本書のネタバレにならないようにサンプルプロジェクトをクローンして、プロジェクトディレクトリに入り、

az acr build --registry $ACR_NAME --image photo-view:v1.0 v1.0/

コマンドを打つと

結構こんもり目にエラーでます

ふんふんと「cffi_backend」がなさそう

とおもむろにググると

https://github.com/Azure/azure-cli/issues/5034

先人はちゃんとissueに上げるもんなのですな。

と、同様のエラーが発生しているので、

python3 -m pip install cffi

とおもむろに入れると治りました。というクソどうでもいい話でした


クラスタ作成で詰まった話

さきほどのやつを乗り越えふんふんと進んでいくと次はクラスタの作成

az aks create \

--name $AKS_CLUSTER_NAME \
--resource-group $AKS_RES_GROUP \
--node-count 3 \
--kubernetes-version 1.11.4 \
--node-vm-size Standard_DS1_v2 \
--generate-ssh-keys \
--service-principal $APP_ID \
--client-secret $SP_PASSWD

このコマンドでStandard_DS1_v2を3台のノードで立ち上げるということで、コマンドを実行すると、

とまたも詰まる。

調べると、どうやらazureのkubernetesのバージョンが上がっているので、このバージョンはサポートされていない模様。

https://github.com/MicrosoftDocs/azure-docs/issues/19881


Updated kubertenes version as 1.11.4 is not supported. #189

1.11.4はもうサポートされないとのこと。


じゃあ、どうやってしらべるのっていう話ですが、

az aks get-versions --location eastus --output table

これで出ました

ためしに1.11.8でやると動きました。

同じ現象が起きた方はこのコマンド打つと吉


クラスタ接続のための認証情報の設定

az aks get-credentials --adomin --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME

で認証の情報の設定ができるのですが、

az: error: unrecognized arguments: --adomin

adomin -> admin

で動きました

また随時更新します


認証設定(二回目以降)で詰まったところ

azureはクラスターが可動している間や、ACRレジストリにコンテナをおいている間に課金が発生するので、

az group delete --name $ACR_RES_GROUP

az group delete --name $AKS_RES_GROUP
az ad sp delete --id=$(az ad sp show --id http://$SP_NAME --query appId --output tsv)

でレジストリグループやクラスタをその都度落とすといいという話ですが、

二回目以降クラスタを構築し、認証設定を行おうとすると以下のエラーになります。

「すでに登録されているクラスタです」

この状態だと kubectl get podすらたたけないです。

解決方法は、issueにも乗っていますが、

az aks get-credentials --adomin --resource-group $AKS_RES_GROUP --name $AKS_CLUSTER_NAME --overwrite-existing

「--overwrite-existing」

のオプションを付けると大丈夫です。