SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for the ‘Azure Stack HCI’ tag

CPU 要件を満たしていているが Nested Hyper-V (入れ子になった仮想化) が有効化できない場合の対応

leave a comment

検証用で使用している Intel NUC Gen11 (NUC11TNHv70L) の CPU は、Core i7-1185G7 が搭載されており、VT-x が使用できますので、Nested Hyper-V (入れ子になった仮想化) を使用することができる CPU となっています。

Nested Hyper-V の有効化については、入れ子になった仮想化による仮想マシンでの Hyper-V の実行 で公開されており、今回使用している NUC のような物理ハードウェア上にインストールした仮想マシンで実行するのであれば、

  • Nested Hyper-V を有効にしたい仮想マシンが停止した状態で、Nested Hyper-V を有効化
    • Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true
  • Nested Hyper-V を有効にしたい仮想マシンで MAC アドレスのスプーフィングを有効化する
    • Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

ことで、Nested Hyper-V を使用することができます。

しかし、今回使用している Gen 11 の NUC では、上記の対応を行っても Nested Hyper-V を有効化することができませんでした。

Twitter でつぶやいたところ次のようなアドバイスをいただき、教えていただいた方法を使用することで Nested Hyper-V を有効化することができました。

今後も何回か同じ事象でハマりそうなので、対応方法を残しておきたいと思います。

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 18th, 2021 at 8:40 pm

AKS on Azure Stack HCI の v1.21.2 の k8s でコントロールプレーンノードの再起動後に k8s が起動しない

leave a comment

タイトルの通りですが、AKS on Azure Stack HCI の k8s を v1.21.2 で展開した後に、コントロールプレーンノードを再起動した後に k8s が起動しないという事象が発生しました。

「systemctl status kubelet」で状態を確認してみると、次のようなエラーが発生し、kubelet が起動していませんでした。

Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.936688     741 kuberuntime_sandbox.go:68] "Failed to create sandbox for pod" err="rpc error: code = Unknown desc = failed to get sandbox image \"ecpacr.azurecr.io/pause:3.2\": failed to pull image \"ec
pacr.azurecr.io/pause:3.2\": failed to pull and unpack image \"ecpacr.azurecr.io/pause:3.2\": failed to resolve reference \"ecpacr.azurecr.io/pause:3.2\": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized" pod="kube-system
/etcd-moc-lrr9qh1ew26"
Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.936713     741 kuberuntime_manager.go:790] "CreatePodSandbox for pod failed" err="rpc error: code = Unknown desc = failed to get sandbox image \"ecpacr.azurecr.io/pause:3.2\": failed to pull image \"ec
pacr.azurecr.io/pause:3.2\": failed to pull and unpack image \"ecpacr.azurecr.io/pause:3.2\": failed to resolve reference \"ecpacr.azurecr.io/pause:3.2\": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized" pod="kube-system
/etcd-moc-lrr9qh1ew26"
Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.936764     741 pod_workers.go:190] "Error syncing pod, skipping" err="failed to \"CreatePodSandbox\" for \"etcd-moc-lrr9qh1ew26_kube-system(8e85a0583a698c64f4daca0d375decfa)\" with CreatePodSandboxErro
r: \"Failed to create sandbox for pod \\\"etcd-moc-lrr9qh1ew26_kube-system(8e85a0583a698c64f4daca0d375decfa)\\\": rpc error: code = Unknown desc = failed to get sandbox image \\\"ecpacr.azurecr.io/pause:3.2\\\": failed to pull image \\\"ecpacr.azurecr.io/pause:3
.2\\\": failed to pull and unpack image \\\"ecpacr.azurecr.io/pause:3.2\\\": failed to resolve reference \\\"ecpacr.azurecr.io/pause:3.2\\\": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized\"" pod="kube-system/etcd-moc-l
rr9qh1ew26" podUID=8e85a0583a698c64f4daca0d375decfa
Nov 30 11:35:13 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:13.981869     741 kubelet.go:2291] "Error getting node" err="node \"moc-lrr9qh1ew26\" not found"
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.035070     741 event.go:273] Unable to write event: '&v1.Event{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"moc-lrr9qh1ew26.16bc4fcc087e2ba6", GenerateName:"", Namespace
:"default", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string(nil),
Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, InvolvedObject:v1.ObjectReference{Kind:"Node", Namespace:"", Name:"moc-lrr9qh1ew26", UID:"moc-lrr
9qh1ew26", APIVersion:"", ResourceVersion:"", FieldPath:""}, Reason:"Starting", Message:"Starting kubelet.", Source:v1.EventSource{Component:"kubelet", Host:"moc-lrr9qh1ew26"}, FirstTimestamp:v1.Time{Time:time.Time{wall:0xc061a0f98b59afa6, ext:11623948584, loc:(
*time.Location)(0x74be600)}}, LastTimestamp:v1.Time{Time:time.Time{wall:0xc061a0f98b59afa6, ext:11623948584, loc:(*time.Location)(0x74be600)}}, Count:1, Type:"Normal", EventTime:v1.MicroTime{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, Series:(*v
1.EventSeries)(nil), Action:"", Related:(*v1.ObjectReference)(nil), ReportingController:"", ReportingInstance:""}': 'Post "https://10.5.0.2:6443/api/v1/namespaces/default/events": EOF'(may retry after sleeping)
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.082278     741 kubelet.go:2291] "Error getting node" err="node \"moc-lrr9qh1ew26\" not found"
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: I1130 11:35:14.104104     741 trace.go:205] Trace[2056973426]: "Reflector ListAndWatch" name:k8s.io/client-go/informers/factory.go:134 (30-Nov-2021 11:35:02.280) (total time: 11824ms):
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: Trace[2056973426]: [11.824032031s] [11.824032031s] END
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.104137     741 reflector.go:138] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1.RuntimeClass: failed to list *v1.RuntimeClass: an error on the server ("") has prevented the request from
 succeeding (get runtimeclasses.node.k8s.io)
Nov 30 11:35:14 moc-lrr9qh1ew26 kubelet[741]: E1130 11:35:14.182788     741 kubelet.go:2291] "Error getting node" err="node \"moc-lrr9qh1ew26\" not found"

 

kubelet の起動のパラメーターを見ると、「–pod-infra-container-image=ecpacr.azurecr.io/pause:3.2」が指定されており、上記のメッセージでも pause コンテナーのイメージのアクセスでエラーが発生しているようでした。

image

Read the rest of this entry »

Written by Masayuki.Ozawa

11月 30th, 2021 at 8:53 pm

Posted in Azure Stack HCI

Tagged with

ACR と Helm と SQL Server のメモ

leave a comment

ACR に格納した Helm のチャートで SQL Server の展開を行おうとした場合のメモ。

AKS on HCI でも一部の展開には Helm が使用されているので、概要はつかんでおかないとと思った次第です。

この辺の情報を取り掛かりにすれば、手を動かすことはできそうです。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 30th, 2021 at 9:16 am

AKS on Azure Stack HCI (Windows Server 2019) に対して Azure DevOps でパイプラインを実行するためのメモ

leave a comment

AKS on Azure Stack HCI (OS は HCI OS ではなく、Windows Server 2019) に対して、Azure DevOps パイプラインを実行しようと思った際の作業した内容のメモを。

最終的には Azure Arc Enabled Kubernetes の GitOps を使用することになるのかなとは思うのですが、今回はそこまでは試せていません。

Read the rest of this entry »

Written by Masayuki.Ozawa

9月 6th, 2021 at 10:35 pm

AKS on Azure Stack HCI 検証方法 Tips

leave a comment

AKS on Azure Stack HCI を Windows Server 2019 の 1 ノード環境ではありますが、1 台起動したままにすることができそうなので、この機会に勉強を兼ねてメモを残しておきたいと思います。

AKS on Azure Stack HCI は、検証用途であれば 1 台の Windows Server 2019 上で動作させることができます。(Azure のサポート内で AKS on Azure Stack HCI のサポートを受ける場合は、OS に Azure Stack HCI OS を使用していたほうがスムーズになりますので、リソースに余裕がある場合は、HCI OS で環境を構築していたほうが良いかと)

image

64 GB / 4 Core (HT : 8 Core) の NUC が 1 台あれば、構築することができ、Windows Server 上で Kubernetes を展開することができます。

私のような今まで Windows をメインに触ってきたエンジニアでも Kubernetes の検証環境を容易に作ることができますので、k8s の勉強環境にも活用できるかと。

基本的には、Azure Stack HCI の Azure Kubernetes Service のドキュメント のドキュメントを確認しながら、勉強した内容を適宜更新していきたいと思います。

私の場合は、仕事の領域が「SQL Server のデータベースエンジン」となりますので、AKS on HCI を使用するのは、Azure Arc Enabled SQL Managed Instance を検証することが目的であり、Enabled SQL Managed Instance 観点の情報も記載しています。

Read the rest of this entry »

Written by Masayuki.Ozawa

7月 15th, 2021 at 12:13 am

Azure Stack HCI で Azure Kubernetes Service (AKS) を動作させる際のメモ

leave a comment

Azure Stack HCI では、 Azure Kubernetes Service (AKS) を実行することができます。

この AKS 上で、Azure Arc Enabled Data Services を動作させることもでき、展開用のテンプレートについては、Azure Data Studio でも、提供されています。
image

検証用途で自宅の NUC を使用して環境を構築できるか検証して、構築ができましたのでその際のメモを残しておこうと思います。

Azure Stack HCI は、HCI ((Hyper Converged Infrastructure) を Windows 環境で実現するものです。
標準的な HCI というと構成済みの環境をベンダーから購入して導入するイメージですが、現時点では、Azure Stack HCI Preview の登録 から、Azure Stack HCI OS (HCI OS の Previw をダウンロードして、検証環境を構築することもできるようになっていますので、検証環境を自由に構築することが可能です。

最終的に、Hyper-V のゲスト OS として、HCI クラスターを構築し、その HCI クラスター上で、Azure Arc Enabled Data Services の検証を行うことは可能でした。

image

Read the rest of this entry »

Written by Masayuki.Ozawa

12月 8th, 2020 at 8:47 am