4
1

More than 3 years have passed since last update.

TKGを使ってvSphere上にKubernetesクラスタをデプロイする

Posted at

はじめに

Tanzu Kubernetes Grid(TKG)がリリースされたので、自宅のvSphere環境で検証しました。

すでにmasanaraさんが「Tanzu Kubernetes Grid 1.0 を使ってみた」でTKGをご紹介されていますが、今回はBootstrap環境にmacOSを使用して、GUIからデプロイする手順を書きます。

今回検証した環境

Bootstrap環境

今回はmacOSをBootstrap環境として使用します。

  • macOS Catalina 10.15.4

vSphere環境

Kubernetesクラスタをデプロイする環境としてvSphere 6.7u3を使用します。

  • vCenter Server 6.7u3 build-15976728
  • ESXi 6.7u3 build-15160138 x 1台 ※公式には2台以上のESXiホストが必要です。
    • モデル:Supermicro SYS-E200-8D
    • CPU:Xeon D-1528 (6 CPUs x 1.9 GHz)
    • メモリ:64GB

TKGを使ってvSphere上にKubernetesクラスタをデプロイする

Bootstrap環境を準備する

macOSでTKGを使用する場合、以下をインストールする必要があります。

また、システム時刻をNTPサーバと同期させておく必要もあります。

vSphere環境を準備する

TKGを使うためには、事前に以下について準備しておく必要があります。

  • TKGインスタンス用クラスタ(TKG-Cluster )でDRSを有効化する
  • TKGインスタンス用のリソースプール(TKG-Pool)を作成する
  • TKGインスタンス用のフォルダ(TKG-Folder)を作成する
  • TKGインスタンス用に十分な容量を持つデータストア(datastore1)が存在する
  • TKGインスタンスが接続するネットワーク(vm-pg)上でDHCPが動作している
  • すべてのホストがNTPサーバと同期している

※()内は今回使用する環境で作成したオブジェクトの名前です。

govc findコマンドで確認すると以下のように出力されます。

$ govc find        
/
/Datacenter
/Datacenter/vm
/Datacenter/host
/Datacenter/datastore
/Datacenter/network
/Datacenter/network/vm-pg
/Datacenter/datastore/datastore1
/Datacenter/host/TKG-Cluster
/Datacenter/host/TKG-Cluster/Resources
/Datacenter/host/TKG-Cluster/esxi01.tta.local
/Datacenter/host/TKG-Cluster/Resources/Mgmt-Pool
/Datacenter/host/TKG-Cluster/Resources/Private-Pool
/Datacenter/host/TKG-Cluster/Resources/TKG-Pool
/Datacenter/vm/TKG-Folder

TKGインスタンスのベースとなるテンプレートイメージをvSphereにインポートする

  1. MyVMwareから以下のOVAをダウンロードします。

    • photon-3-v1.17.3_vmware.2.ova
    • photon-3-capv-haproxy-v0.6.3_vmware.1.ova
  2. ダウンロードしたOVAをvCenter Serverへデプロイします。

  3. デプロイしたOVAをテンプレートに変換します。

以下は、govc findコマンドで確認した結果です。

$ govc find -type m  
/Datacenter/vm/Template/photon-3-kube-v1.17.3+vmware.2
/Datacenter/vm/Template/capv-haproxy

TKGをmacOSにインストールする

  1. MyVMwareから以下のファイルをダウンロードします。

    • tkg-darwin-amd64-v1.0.0_vmware.1.gz
  2. gunzipコマンドで展開します。、/usr/local/bin/に移動+リネームし、実行権限を付与します。

    $ gunzip tkg-darwin-amd64-v1.0.0_vmware.1.gz
    
  3. 展開したバイナリを/usr/local/bin/に移動して、tkgにリネームします。

    $ mv ./tkg-darwin-amd64-v1.0.0_vmware.1 /usr/local/bin/tkg
    
  4. 実行権限を付与します。

    $ chmod +x /usr/local/bin/tkg
    
  5. tkg versionコマンドを実行して、バージョンが表示されることを確認します。

    $ tkg version
    Client:
        Version: v1.0.0
        Git commit: 60f6fd5f40101d6b78e95a33334498ecca86176e
    

TKGを使ってManagementクラスタをデプロイする

  1. tkg init --uiコマンドを実行すると、ブラウザでTanzu Kubernetes Gridのインストーラーが起動します。

    tkg_installer-1.png

  2. DEPLOY ON VSPHEREボタンをクリックします。

  3. vCenter Serverに接続するための情報を入力して、CONNECTをクリックします。

    tkg_installer-3.png

  4. Managementクラスタをデプロイするデータセンターを選択します。また、Bootstrap環境で使用しているsshの公開鍵も入力します。

    tkg_installer-5.png

  5. Managementクラスタのコントロールプレーンノードの数を決めます。1台デプロイする場合はDevelopmentを、3台デプロイする場合はProductionをクリックします。

  6. INSTANCE TYPEのドロップダウンメニューから、コントロールプレーンノードVMのサイズを選択します。

  7. MANAGEMENT CLUSTER NAMEにManagementクラスタの名前を入力します(オプション)。API SERVER LOAD BALANCERのドロップダウンメニューから、APIサーバ用ロードバランサーのテンプレート(capv-haproxy)を選択します。

    tkg_installer-7.png

  8. Managementクラスタをデプロイするリソースプール、仮想マシンフォルダ、データストアを選択します。

    tkg_installer-9.png

  9. Kubernetesクラスタのための、ネットワークを設定します。

    tkg_installer-11.png

  10. TKGインスタンス用のテンプレートを選択します。

    tkg_installer-13.png

  11. REVIEW CONFIGURETIONをクリックして、これまでの設定を確認します。問題ないようであれば、DEPLOY MANAGEMENT CLUSTERをクリックして、Managementクラスタのデプロイを開始します。

    tkg_installer-16.png

  12. Managementクラスタのデプロイが完了したら、ブラウザを閉じます。

    tkg_installer-17.png

  13. tkg get management-clusterコマンドでManagementクラスタがデプロイされたことを確認します。

    $ tkg get management-cluster      
    +-----------------------------------+-----------------------------------------------------------------------+
    | MANAGEMENT CLUSTER NAME           | CONTEXT NAME                                                          |
    +-----------------------------------+-----------------------------------------------------------------------+
    | tkg-mgmt-vsphere-20200420012716 * | tkg-mgmt-vsphere-20200420012716-admin@tkg-mgmt-vsphere-20200420012716 |
    +-----------------------------------+-----------------------------------------------------------------------+
    

TKGを使ってKubernetesクラスタを展開する

  1. tkg createコマンドを実行して、Kubernetesクラスタをデプロイします。

    $ tkg create cluster dev-cluster --plan=dev
    Logs of the command execution can also be found at: /var/folders/15/gygby50x4h15p8zgz27b71g80000gp/T/tkg-20200420T020425978485888.log
    Creating workload cluster 'dev-cluster'...
    
    Context set for workload cluster dev-cluster as dev-cluster-admin@dev-cluster
    
    Waiting for cluster nodes to be available...
    
    Workload cluster 'dev-cluster' created
    
  2. kubectl config get-contextsコマンドとvCenter Serverからdev-clusterが展開されていることを確認します。

    kubectl config get-contexts
    CURRENT   NAME                                                                    CLUSTER                           AUTHINFO                                NAMESPACE
    *         dev-cluster-admin@dev-cluster                                           dev-cluster                       dev-cluster-admin                       
              tkg-mgmt-vsphere-20200420012716-admin@tkg-mgmt-vsphere-20200420012716   tkg-mgmt-vsphere-20200420012716   tkg-mgmt-vsphere-20200420012716-admin
    

    tkg_dev-cluster.png

おまけ:Waiting for cert-manager to be available...でタイムアウトして、Managementクラスタのデプロイに失敗する

Managementクラスタのデプロイ中、以下のようにWaiting for cert-manager to be available...の部分でタイムアウトして、デプロイに失敗しました。

tkg_cert-manager_error.png

いろいろと調べた結果、DHCPサーバにvSphere環境用のDNSサーバを通知する設定を入れていないことが原因でした。ManagementクラスタがvCenter Serverと通信するために、vCenter Serverを名前解決できる必要があることを失念していました...

最終的に、DHCPサーバにDNSサーバを通知する設定を追加してリトライすることで、Managementクラスタのデプロイに成功しました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1