vm.gowatana.jp

NEOにほんごVMware(仮)

VCF 9.0 で Foundation LB の vSphere Supervisor を構成してみる。Part-07:VKS クラスタへの接続

VMware Cloud Foundation(VCF)9.0 の vCenter で、Foundation ロード バランサを使用したスーパーバイザーを有効化してみます。今回は、vSphere Kubernetes Service(VKS)クラスタに接続してアプリを起動してみます。

前回はこちら。

 

今回の内容です。

 

今回の環境

VKS クラスタを、Linux マシンから操作してみます。事前に、VCF CLI と kubectl のインストールが必要です。

 

VKS クラスタは、下記のように作成してあります。

gowatana@vcf9-work-01 [ ~ ]$ vcf cluster list -A
  NAME   NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES             KUBERNETESRELEASE
  vks01  demo-ns-01  running  1/1           1/1      v1.30.1+vmware.1-fips  v1.30.1---vmware.1-fips-tkg.5

 

1. VKS クラスタへの接続

VKS クラスタへの接続でも、VCF CLI を使用します。以前の kubectl vsphere login と同様に、VKS クラスタの名前と、クラスタを作成してある名前空間の指定が必要です。

コンテキストの名前は、今回は「context-vks01」にしてあります。

vcf context create context-vks01 \
--endpoint=192.168.79.180 \
--username=Administrator@vsphere.local \
--workload-cluster-namespace=demo-ns-01 \
--workload-cluster-name=vks01 \
--type=k8s \
--insecure-skip-tls-verify

 

実際に VKS に接続すると、下記のようになります。

gowatana@vcf9-work-01 [ ~ ]$ vcf context create context-vks01 \
--endpoint=192.168.79.180 \
--username=Administrator@vsphere.local \
--workload-cluster-namespace=demo-ns-01 \
--workload-cluster-name=vks01 \
--type=k8s \
--insecure-skip-tls-verify
Provide Password:



[i] Logging in to Kubernetes cluster (vks01) (demo-ns-01)
[i] Successfully logged in to Kubernetes cluster 192.168.79.183

You have access to the following contexts:
   context-vks01
   context-vks01:vks01

If the namespace context you wish to use is not in this list, you may need to
refresh the context again, or contact your cluster administrator.

To change context, use `vcf context use `
[ok] successfully created context: context-vks01
[ok] successfully created context: context-vks01:vks01
gowatana@vcf9-work-01 [ ~ ]$

 

VKS クラスタのコンテキスト(context-vks01:vks01)が作成されています。

gowatana@vcf9-work-01 [ ~ ]$ vcf context list
  NAME                         CURRENT  TYPE
  context-vks01                false    kubernetes
  context-vks01:vks01          false    kubernetes
  sv-01                        false    kubernetes
  sv-01:demo-ns-01             true     kubernetes
  sv-01:svc-tkg-domain-c10     false    kubernetes
  sv-01:svc-velero-domain-c10  false    kubernetes

[i] Use '--wide' to view additional columns.

 

VKS クラスタのコンテキストに切り替えます。

gowatana@vcf9-work-01 [ ~ ]$ vcf context use context-vks01:vks01
[ok] Token is still active. Skipped the token refresh for context "context-vks01:vks01"
[i] Successfully activated context 'context-vks01:vks01' (Type: kubernetes)
[i] Fetching recommended plugins for active context 'context-vks01:vks01'...
[ok] No recommended plugins found.

 

context-vks01:vks01 コンテキストが「CURRENT: true」になりました。

gowatana@vcf9-work-01 [ ~ ]$ vcf context list
  NAME                         CURRENT  TYPE
  context-vks01                false    kubernetes
  context-vks01:vks01          true     kubernetes
  sv-01                        false    kubernetes
  sv-01:demo-ns-01             false    kubernetes
  sv-01:svc-tkg-domain-c10     false    kubernetes
  sv-01:svc-velero-domain-c10  false    kubernetes

[i] Use '--wide' to view additional columns.

 

KUBECONFIG は共通なので、kubectl でもコンテキストが切り換えられています。

gowatana@vcf9-work-01 [ ~ ]$ kubectl config get-contexts
CURRENT   NAME                          CLUSTER                        AUTHINFO                                                   NAMESPACE
          context-vks01                 context-vks01:192.168.79.180   context-vks01:Administrator@vsphere.local@192.168.79.180
*         context-vks01:vks01           context-vks01:192.168.79.183   context-vks01:Administrator@vsphere.local@192.168.79.183   demo-ns-01
          sv-01                         sv-01:192.168.79.180           sv-01:Administrator@vsphere.local@192.168.79.180    
          sv-01:demo-ns-01              sv-01:192.168.79.180           sv-01:Administrator@vsphere.local@192.168.79.180           demo-ns-01
          sv-01:svc-tkg-domain-c10      sv-01:192.168.79.180           sv-01:Administrator@vsphere.local@192.168.79.180           svc-tkg-domain-c10
          sv-01:svc-velero-domain-c10   sv-01:192.168.79.180           sv-01:Administrator@vsphere.local@192.168.79.180           svc-velero-domain-c10

 

これで、VKS クラスタが操作可能になりました。

gowatana@vcf9-work-01 [ ~ ]$ kubectl get nodes
NAME                                  STATUS   ROLES           AGE   VERSION
vks01-gtwtn-4m77w                     Ready    control-plane   39m   v1.30.1+vmware.1-fips
vks01-node-pool-1-zdxn6-qm6hr-27cvw   Ready    <none>          36m   v1.30.1+vmware.1-fips

 

2. デモ アプリの起動

だいぶ古いデモですが、今回も Guestbook アプリを起動してみます。

 

VKS クラスタに、名前空間を作成します。

gowatana@vcf9-work-01 [ ~ ]$ kubectl create ns app-ns-01
namespace/app-ns-01 created

 

デモ アプリむけに、名前空間のセキュリティ設定を緩和します。

gowatana@vcf9-work-01 [ ~ ]$ kubectl label namespace app-ns-01 pod-security.kubernetes.io/enforce=baseline
namespace/app-ns-01 labeled
gowatana@vcf9-work-01 [ ~ ]$ kubectl get ns app-ns-01 -o yaml | grep pod-security
    pod-security.kubernetes.io/enforce: baseline

 

デモ アプリ(Guestbook)の起動には、下記の YAML ファイルを使用します。

guestbook.yml

gist.github.com

 

デモ アプリを起動します。

gowatana@vcf9-work-01 [ ~ ]$ kubectl apply -n app-ns-01 -f guestbook.yml
deployment.apps/mongo created
service/mongo created
deployment.apps/frontend created
service/frontend created

 

Pod や Service が起動されました。Service の EXTERNAL-IP に設定されている IP アドレスは、Foundation LB 用に設定した範囲から採番されています。

gowatana@vcf9-work-01 [ ~ ]$ kubectl get all -n app-ns-01
NAME                            READY   STATUS    RESTARTS   AGE
pod/frontend-64b557c8c7-22pch   1/1     Running   0          61s
pod/frontend-64b557c8c7-97dsg   1/1     Running   0          61s
pod/frontend-64b557c8c7-ppnmb   1/1     Running   0          61s
pod/mongo-7c55f7b678-tvgfj      1/1     Running   0          62s

NAME               TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)        AGE
service/frontend   LoadBalancer   10.128.179.195   192.168.79.184   80:30274/TCP   61s
service/mongo      ClusterIP      10.128.235.158   <none>           27017/TCP      62s

NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/frontend   3/3     3            3           61s
deployment.apps/mongo      1/1     1            1           62s

NAME                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/frontend-64b557c8c7   3         3         3       61s
replicaset.apps/mongo-7c55f7b678      1         1         1       62s

 

Web ブラウザでアクセスすると、下記のように Guestbook アプリが表示されるはずです。

 

以上、VCF 9.0 で Foundation LB の vSphere Supervisor を構成してみる話でした。