私はこのエラーと数時間戦ってきました。いくつかの記事が見つかりましたが、これまでのところ何も役に立ちませんでした。
私の作業は、https://docs.microsoft.com/en-us/azure/aks/azure-disk-volumeの「ハウツーガイド>データボリュームの構成> Azureディスク-静的」に基づいています。私の知る限り、私はどのステップも逃していません。
YAMLファイルのconfigで次のように定義しました:
種類:デプロイメント メタデータ: 名前:phio-dep-db 名前空間:本番 仕様: セレクター: matchLabels: アプリ:phio レプリカ:1 戦略: タイプ:RollingUpdate テンプレート: メタデータ: ラベル: アプリ:phio 仕様: terminationGracePeriodSeconds:1 ボリューム: -名前:dbvolume azureDisk::/ subscriptions / my - sub- id / 種類:管理 diskName:PHIO_DB_VOL diskURI:/ subscriptions / <my - sub - id / resourceGroups / <my - grp> /providers/Microsoft.Compute/disks/PHIO_DB_VOL コンテナ:-イメージ:phioweb.azurecr.io/phiodb 名:db ポート:-containerPort :3306 volumeMounts: -mountPath:/ var / lib / mysql name:dbvolume
ただし、kubectl apply -f .ymlを実行すると、ポッドが起動しません。「kubectldescribeall -n production」を実行すると、次のように表示されます。
タイプ ReasonAge From Message ---- ------ ---- -------------通常のスケジュール済み31mdefault-schedulerにproduction / phio-dep-db-6c6ddc885-p4ntgが正常に割り当てられましたaks-nodepool1-18816840-vmss000001 警告FailedAttachVolume79s(x23 over 31m)attachdetach-controllerAttachVolume.Attachがボリューム "dbvolume"で失敗しました:compute.DisksClient#Get:リクエストへの応答に失敗しました:StatusCode = 403-元のエラー:autorest / Azure:サービスがエラーを返しました。Status = 403 Code = "AuthorizationFailed" Message = "オブジェクトID '<sameGUID>'のクライアント '<GUID>'には、スコープ '/ subscriptions / <に対してアクション' Microsoft.Compute / disks / read 'を実行する権限がありません。 my-sub-id / resourceGroups / <my-grp> /providers/Microsoft.Compute/disks/PHIO_DB_VOL 'またはスコープが無効です。アクセスが最近許可された場合は、資格情報を更新してください。」 警告FailedMount23s(x14 over 29m)kubelet、aks-nodepool1-18816840-vmss000001ポッド "phio-dep-db-6c6ddc885-p4ntg_production(0e326781-2936-4451-9446-9608a8f41439)"のボリュームをマウントできません:タイムアウトが待機中ポッド「production」/「phio-dep-db-6c6ddc885-p4ntg」用にアタッチまたはマウントするボリューム。マウントされていないボリュームのリスト= [dbvolume]。アタッチされていないボリュームのリスト= [dbvolumedefault-token-s7svk]
Azureディスクへのアクセス許可の割り当てに関するMSドキュメントには何もありません。また、YAMLに欠落している明らかなパラメーターもありません。
誰かが私が欠けているアイデアを持っていますか?
どうもありがとう。
(出力を少しサニタイズしましたが、すべてテストであり、Azureサブスクリプションは、本番環境と表示されていても、この作業の後にビニングされます)
AKSで使用するAzureディスクを作成する場合、ノードリソースグループにディスクリソースを作成できます。このアプローチにより、AKSクラスターはディスクリソースにアクセスして管理できます。代わりに別のリソースグループにディスクを作成する場合は、クラスターのAzure Kubernetes Service(AKS)サービスプリンシパルにディスクのリソースグループへのコントリビューターロールを付与する必要があります。または、サービスプリンシパルの代わりに、システムに割り当てられた管理対象IDをアクセス許可に使用することもできます。詳細については、「管理対象IDの使用」を参照してください。
別のリソースグループにある既存のディスクリソースにアクセスする必要がある場合があります。次の一連の役割権限のいずれかを割り当てます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加