vSphere Supervisor において Windows オペレーティングシステム(OS)のワーカーノードをプロビジョニングできない
search cancel

vSphere Supervisor において Windows オペレーティングシステム(OS)のワーカーノードをプロビジョニングできない

book

Article ID: 425961

calendar_today

Updated On:

Products

VMware vSphere Kubernetes Service

Issue/Introduction

免責事項:これは英文の記事「Unable to Provision Windows Operating System (OS) Worker Nodes in vSphere Supervisor 」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

vSphere Supervisor クラスタ内のワークロードクラスタに Windows ノードプールを追加しようとした際に、以下のいずれかのエラーが返されます:

  • ワークロードクラスタの YAML を編集して保存した後、以下のようなエラーが返されます:
    Error from server (Forbidden): error when creating "<workload cluster name>": admission webhook "tkr-resolver-cluster-webhook.tanzu.vmware.com" denied the request: Could not resolve KR/OSImage 
    
    Missing compatible KR/OSImage for the cluster

     

  • Windows ノードプール配下のワーカーノードが Provisioning または Provisioned の状態で停止します。

Environment

vSphere Supervisor

vKR v1.31 and higher

Windows Server 2022

Cause

本問題は、以下のいずれかの原因により発生する可能性があります:

  • クラスタ YAML におけるノードプールのアノテーション設定の誤り
    • photon および ubuntu ではアノテーションに os-name を使用しますが、windows では
      os-type を使用します。

  • Windows ノードに対するクラスタ構成要件が満たされていない
    • Windows OS を使用できるのはワーカーノードのみです。コントロールプレーンノードは photon または ubuntu OS のみをサポートします。
    • Windows ノードでサポートされている Container Network Interface(CNI)は Antrea のみです。

  • カスタム Windows イメージ、またはそのコンテンツライブラリが Supervisor クラスタ環境で認識されていない。

Resolution

Cluster YAML 手順

ノードプールで Windows OS を使用することを指定するアノテーションは、以下のとおり os-type=windows を使用して一致させる必要があります:

- class: node-pool
        metadata:
          annotations:
            run.tanzu.vmware.com/resolve-os-image: os-type=windows

カスタム Windows イメージがシステムで検出されない場合は、以下の例のようにアノテーション内でコンテンツライブラリの ID を指定する必要があります:

- class: node-pool
        metadata:
          annotations:
            run.tanzu.vmware.com/resolve-os-image: os-type=windows, content-library=cl-<ID>

 

以下のコマンドを使用して、コンテンツライブラリ ID を確認できます:

  1. Supervisor クラスタのコンテキストに接続します。


  2. Supervisor クラスタから参照可能なすべてのコンテンツライブラリアイテムと、そのコンテンツライブラリ ID(cl-<ID>)の一覧を取得します:
    kubectl get contentlibraryitem -A
    
    clitem-<ID> <image-name> cl-<ID> OVF

     

  3. 以下のコマンドを使用して、Supervisor クラスタから参照可能なすべてのコンテンツライブラリとその ID を一覧表示することもできます:
    kubectl get contentlibrary -A
    
    <namespace> cl-<ID> <name in vsphere> <Local/Subscribed>

     

アノテーションを修正後、Windows ノードプール内の次回のワーカーノード作成は正常に完了するはずです。

それでも成功しない場合は、以下のドキュメントに記載されているすべての要件が満たされていることを確認してください:

Windows ノードプールを使用した TKG クラスタのプロビジョニング

 

OSImage 手順

Supervisor クラスタのコンテキストに接続した状態で、カスタム Windows イメージが osImage として存在しない場合:

kubectl get osimages

 

  1. カスタム Windows イメージを含むコンテンツライブラリを Supervisor クラスタが認識していることを確認します:
    kubectl get contentlibraryitem -A
    kubectl get contentlibrary -A

     

  2. vSphere Web UI にて、[Workload / Supervisor Management]に移動し、Windows ノードプールをデプロイする対象のネームスペースへ移動します。
    VM Service カードの Manage Content Libraries にて、カスタム Windows イメージを含むコンテンツライブラリが当該ネームスペースにアタッチされていることを確認してください:



  3. システムは、Supervisor 環境内のネームスペースにアタッチされたコンテンツライブラリに対して、自動的に osImage を取得・作成しようとします。

Additional Information

Windows ノードプールを使用した TKG クラスタのプロビジョニング

VKR イメージ競合の解決

--------

「VMware は vSphere Kubernetes Service Image Builder に関する問題についてはサポートを提供しますが、イメージのカスタマイズおよびカスタムアプリケーションに起因する問題については、お客様の責任となります。」

https://github.com/vmware/vks-image-builder