基本構成を使用して管理者クラスタとユーザー クラスタを作成する方法について説明します。
このトピックの手順は、管理ワークステーションの作成に gkeadm
を使用したことを前提としています。gkeadm
を使用せず、高度なトピックの静的 IP アドレスを使用した管理ワークステーションの作成を行った場合は、必要となる調整について手順の中で都度説明します。DHCP 管理ワークステーションの場合は、対応する DHCP インストールガイドを使用する必要があります。
プロキシの内側から操作する場合、すべての gkectl
コマンドは、管理ワークステーションからのインターネット リクエストの構成ファイルで設定したものと同じプロキシを自動的に使用します。管理ワークステーションが同じプロキシの内側にない場合は、「管理ワークステーションの作成」の「手動プロキシオプション」における静的 IP と DHCP の高度なトピックをご覧ください。
管理ワークステーションへの SSH 接続
管理ワークステーションへの SSH 接続の確立の手順に沿って、管理ワークステーションに SSH 接続します。
許可リストに登録されたサービス アカウントは、管理ワークステーションで有効化されます。このトピックの残りの手順はすべて管理ワークステーションで行います。
管理クラスタの静的 IP を構成する
管理クラスタに使用する静的 IP アドレスを指定するには、admin-hostconfig.yaml
という名前のホスト構成ファイルを作成します。この演習では、管理クラスタで使用する IP アドレスを 5 つ指定する必要があります。
5 つのホストを持つホスト構成ファイルの例を、次に示します。
hostconfig: dns: 172.16.255.1 tod: 216.239.35.0 otherdns: - 8.8.8.8 - 8.8.4.4 othertod: - ntp.ubuntu.com searchdomainsfordns: - "my.local.com" blocks: - netmask: 255.255.252.0 gateway: 172.16.23.254 ips: - ip: 172.16.20.10 hostname: admin-host1 - ip: 172.16.20.11 hostname: admin-host2 - ip: 172.16.20.12 hostname: admin-host3 - ip: 172.16.20.13 hostname: admin-host4 - ip: 172.16.20.14 hostname: admin-host5
ips
フィールドは、IP アドレスとホスト名の配列です。これらは、GKE On-Prem が管理クラスタノードに割り当てる IP アドレスとホスト名です。
ホスト構成ファイルでは、管理クラスタノードが使用する DNS サーバー、タイムサーバー、デフォルト ゲートウェイのアドレスも指定します。
searchdomainsfordns
フィールドは、クラスタで使用する DNS 検索ドメインの配列です。これらのドメインは、ドメイン検索リストの一部として使用されます。
ユーザー クラスタの静的 IP を構成する
ユーザー クラスタに使用する静的 IP アドレスを指定するには、user-hostconfig.yaml
という名前のホスト構成ファイルを作成します。
3 つのホストを持つホスト構成ファイルの例を、次に示します。
hostconfig: dns: 172.16.255.1 tod: 216.239.35.0 otherdns: - 8.8.8.8 - 8.8.4.4 othertod: - ntp.ubuntu.com searchdomainsfordns: - "my.local.com" blocks: - netmask: 255.255.252.0 gateway: 172.16.23.254 ips: - ip: 172.16.20.15 hostname: user-host1 - ip: 172.16.20.16 hostname: user-host2 - ip: 172.16.20.17 hostname: user-host3
ips
フィールドは、IP アドレスとホスト名の配列です。これらは、GKE On-Prem がユーザー クラスタノードに割り当てる IP アドレスとホスト名です。
ホスト構成ファイルでは、ユーザー クラスタノードが使用する DNS サーバー、タイムサーバー、デフォルト ゲートウェイのアドレスも指定します。
searchdomainsfordns
フィールドは、クラスタで使用する DNS 検索ドメインの配列です。これらのドメインは、ドメイン検索リストの一部として使用されます。
GKE On-Prem の構成ファイルで入力されたフィールド
管理ワークステーションを作成したときに、admin-ws-config.yaml
という名前の構成ファイルに入力ました。gkeadm
コマンドライン ツールで admin-ws-config.yaml
ファイルを使用して管理ワークステーションを作成しました。
gkeadm
で管理用ワークステーションを作成したとき、2 つ目の構成ファイルの config.yaml
が生成されています。管理ワークステーションにあるこの構成ファイルは、GKE On-Prem クラスタを作成するためのものです。
admin-ws-config.yaml
ファイルと config.yaml
ファイルには複数の共通のフィールドがあります。この共通フィールドの値は、すでに config.yaml
ファイルで入力されています。
管理ワークステーションの作成時に指定した値が入力されているフィールドは、次のとおりです。
vcenter: credentials: address: username: password: datacenter: datastore: cluster: network: resourcepool: cacertpath: gkeconnect: projectid: registerserviceaccountkeypath: agentserviceaccountkeypath: stackdriver: projectid: serviceaccountkeypath: gcrkeypath:
残りの GKE On-Prem 構成ファイルに入力する
次に、config.yaml
ファイルの残りのフィールドを入力します。
bundlepath
GKE On-Prem のバンドル ファイルには、GKE On-Prem の特定のリリースのすべてのコンポーネントが含まれています。bundlepath
の値を管理ワークステーションのバンドル ファイルのパスに設定します。
bundlepath: /var/lib/gke/bundles/gke-onprem-vsphere-1.3.2-gke.1-full.tgz
vcenter.datadisk
GKE On-Prem は、管理クラスタの Kubernetes オブジェクト データを保持する仮想マシンディスク(VMDK)を作成します。インストーラによって VMDK が作成されますが、vcenter.datadisk
フィールドに VMDK の名前を指定する必要があります。次に例を示します。
vcenter: ... datadisk: "my-disk.vmdk"
- vSAN データストア: VMDK 用フォルダの作成
vSAN データストアを使用する場合は、VMDK をフォルダに格納する必要があります。フォルダは、事前に手動で作成する必要があります。
govc
を使用してフォルダを作成することで、これを行えます。govc datastore.mkdir -namespace=true my-gke-on-prem-folder
次に、
vcenter.datadisk
を VMDK のパス(フォルダを含む)に設定します。次に例を示します。vcenter: ... datadisk: "my-gke-on-prem-folder/my-disk.vmdk"
バージョン 1.1.1 では、既知の問題により、フォルダのファイルパスではなく、Universally Unique Identifier(UUID)のパスを指定する必要があります。
proxy
ネットワークがプロキシ サーバーの背後にある場合は、プロキシ アドレスと、プロキシ サーバーを経由しないアドレスを指定する必要があります。
proxy.url
を設定して、プロキシ サーバーの HTTP
アドレスを指定します。スキームのデフォルト ポートと同じ場合でも、ポート番号を含める必要があります。ここで指定するプロキシ サーバーは、GKE On-Prem クラスタで使用されます。また、管理ワークステーションで HTTPS_PROXY
環境変数を設定しない限り、管理ワークステーションはこの同じプロキシ サーバーを使用するように自動的に構成されます。
プロキシ サーバーを経由しない IP アドレス、IP アドレス範囲、ホスト名、ドメイン名のリストを定義するには、proxy.noproxy
を設定します。GKE On-Prem がこれらのアドレス、ホスト、ドメインのいずれかにリクエストを送信する場合、そのリクエストは直接送信されます。
例:
proxy: url: "http://my-proxy.example.local:80" noproxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
admincluster.ipblockfilepath
静的 IP アドレスを使用しているため、静的 IP の構成で説明されているホスト構成ファイルが必要です。ホスト構成ファイルへのパスを admincluster.ipblockfilepath
フィールドに入力します。例:
admincluster: ipblockfilepath: "/my-config-directory/admin-hostconfig.yaml"
admincluster.bigip.credentials
GKE On-Prem では、F5 BIG-IP ロードバランサの IP アドレスまたはホスト名、ユーザー名、パスワードの情報が必要です。admincluster.bigip
で値を設定して、この情報を指定します。credentials
の後ろにアンカーの &bigip-credentials
を置くことにより、この情報を usercluster
セクションで繰り返す必要がなくなります。例:
admincluster: ... bigip: credentials: &bigip-credentials address: "203.0.113.2" username: "my-admin-f5-name" password: "rJDlm^%7aOzw"
admincluster.bigip.partition
以前は、管理クラスタ用に BIG-IP パーティションを作成しました。admincluster.bigip.partition
をパーティションの名前に設定します。例:
admincluster: ... bigip: partition: "my-admin-f5-partition"
admincluster.vips
admincluster.vips.controlplanevip
の値を、管理クラスタの Kubernetes API サーバー用のロードバランサに構成するよう選択した IP アドレスに設定します。ingressvip
の値を、管理クラスタの Ingress サービスのロードバランサに構成するために選択した IP アドレスに設定します。例:
admincluster: ... vips: controlplanevip: 203.0.113.3 ingressvip: 203.0.113.4
admincluster.serviceiprange
と admincluster.podiprange
管理クラスタには、Service に使用する IP アドレスの範囲と Pod に使用する IP アドレスの範囲が必要です。これらの範囲は、admincluster.serviceiprange
フィールドと admincluster.podiprange
フィールドで指定します。gkectl create-config
を実行すると、これらのフィールドに入力されます。入力した値は、必要に応じて任意の値に変更できます。
Service と Pod の範囲は重複しないようにします。また、Service と Pod の範囲が、クラスタ内のノードで使用する IP アドレスと重複しないようにしてください。
例:
admincluster: ... serviceiprange: 10.96.232.0/24 podiprange: 192.168.0.0/16
usercluster.ipblockfilepath
静的 IP アドレスを使用しているため、静的 IP の構成で説明されているホスト構成ファイルが必要です。ホスト構成ファイルへのパスを usercluster.ipblockfilepath
フィールドに入力します。例:
usercluster: ipblockfilepath: "/my-config-directory/user-hostconfig.yaml"
usercluster.bigip.credentials
usercluster.bigip.credentials
の後にリファレンスの *bigip-credentials
を置いて、admincluster.bigip.credentials
で指定したものと同じ address
、username
、password
を使用します。例:
usercluster: ... bigip: credentials: *bigip-credentials
usercluster.bigip.partition
以前は、ユーザー クラスタ用に BIG-IP パーティションを作成しました。usercluster.bigip.partition
をパーティションの名前に設定します。例:
usercluster: ... bigip: partition: "my-user-f5-partition" ...
usercluster.vips
usercluster.vips.controlplanevip
の値を、ユーザー クラスタの Kubernetes API サーバー用のロードバランサに構成するよう選択した IP アドレスに設定します。ingressvip
の値を、ユーザー クラスタの Ingress サービスのロードバランサに構成するために選択した IP アドレスに設定します。例:
usercluster: ... vips: controlplanevip: 203.0.113.6 ingressvip: 203.0.113.7
usercluster.serviceiprange
と usercluster.podiprange
ユーザー クラスタには、Service に使用する IP アドレスの範囲と Pod に使用する IP アドレスの範囲が必要です。これらの範囲は、usercluster.serviceiprange
フィールドと usercluster.podiprange
フィールドで指定します。gkectl create-config
を実行すると、これらのフィールドに入力されます。入力した値は、必要に応じて任意の値に変更できます。
Service と Pod の範囲は重複しないようにします。また、Service と Pod の範囲が、クラスタ内のノードで使用する IP アドレスと重複しないようにしてください。
例:
usercluster: ... serviceiprange: 10.96.233.0/24 podiprange: 172.16.0.0/12
VMware DRS の反アフィニティ ルールの無効化
GKE On-Prem はユーザー クラスタのノードに対して VMware Distributed Resource Scheduler(DRS)の反アフィニティ ルールを自動的に作成し、データセンター内の少なくとも 3 つの物理ホストにそれを分散させます。
この機能を使用するには、vSphere 環境が次の条件を満たしている必要があります。
- VMware DRS が有効になっていること。VMware DRS には、vSphere Enterprise Plus ライセンス エディションが必要です。DRS を有効にする方法については、クラスタ内の VMware DRS の有効化をご覧ください。
vcenter
フィールドで指定された vSphere ユーザー アカウントにHost.Inventory.EditCluster
権限があること。- 利用可能な物理ホストが少なくとも 3 つあること。
前述のとおり、vSphere スタンダード ライセンスがある場合、VMware DRS を有効にすることはできません。
DRS が有効になっていない場合、または vSphere VM をスケジュール設定できるホストが 3 つ以上ない場合は、usercluster.antiaffinitygroups.enabled: false
を構成ファイルに追加します。例:
usercluster: ... antiaffinitygroups: enabled: false
詳細については、バージョン 1.1.0-gke.6 のリリースノートをご覧ください。
lbmode
lbmode
を "Integrated"
に設定します。例:
lbmode: "Integrated"
stackdriver.clusterlocation
stackdriver.clusterlocation
を、ログを保存する Google Cloud リージョンに設定します。お使いのオンプレミス データセンターの近くのリージョンを選択することをおすすめします。
stackdriver.enablevpc
クラスタのネットワークが VPC によって制御されている場合は、stackdriver.enablevpc
を true
に設定します。これにより、すべてのテレメトリーが Google の制限された IP アドレスを通過するようになります。
構成ファイルの追加フィールド
GKE On-Prem の構成ファイルには、このトピックに示されているフィールド以外にもいくつかのフィールドがあります。たとえば、manuallbspec
フィールドを使用して、GKE On-Prem を手動負荷分散モードで実行するように構成できます。
構成ファイルのフィールドの詳細については、DHCP を使用したインストールと静的 IP アドレスを使用したインストールをご覧ください。
構成ファイルを検証する
構成ファイルを変更したら、gkectl check-config
を実行して、ファイルが有効でインストールに使用できることを確認します。
gkectl check-config --config config.yaml
コマンドが FAILURE
メッセージを返した場合は、問題を修正してファイルを再度検証します。
時間のかかる検証をスキップする場合は、--fast
フラグを渡します。個別の検証をスキップするには、--skip-validation-xxx
フラグを使用します。check-config
コマンドについて詳しくは、プリフライト チェックの実行をご覧ください。
gkectl prepare
を実行する
gkectl prepare
を実行して、vSphere 環境を初期化します。
gkectl prepare --config config.yaml --skip-validation-all
管理クラスタとユーザー クラスタを作成する
gkectl create cluster
コマンドを実行して、管理クラスタとユーザー クラスタを作成します。gkectl create cluster --config config.yaml --skip-validation-all
gkectl create cluster
コマンドは、現在のディレクトリに[CLUSTER_NAME]-kubeconfig
という名前のkubeconfig
ファイルを作成します。ここで、[CLUSTER_NAME] はcluster
に設定した名前です。例:MY-CLUSTER-kubeconfig
GKE On-Prem のドキュメントでは、次のプレースホルダを使用して、これらの
kubeconfig
ファイルを参照します。- 管理クラスタ: [ADMIN_CLUSTER_KUBECONFIG]
- ユーザー クラスタ: [USER_CLUSTER_KUBECONFIG]
クラスタが作成され、運用中であることを確認します。
管理クラスタを確認するには、次のコマンドを実行します。
kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]
出力には、管理クラスタノードが表示されます。
ユーザー クラスタを確認するには、次のコマンドを実行します。
kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]
出力には、ユーザー クラスタノードが表示されます。例:
NAME STATUS ROLES AGE VERSION xxxxxx-1234-ipam-15008527 Ready <none> 12m v1.14.7-gke.24 xxxxxx-1234-ipam-1500852a Ready <none> 12m v1.14.7-gke.24 xxxxxx-1234-ipam-15008536 Ready <none> 12m v1.14.7-gke.24
ユーザー クラスタにアプリケーションをデプロイする方法については、次のセクションに進んでください。