CAPX(Cluster API Provider Nutanix Cloud Infrastructure)の Workload Cluster で、kube-vip による LoadBalancer Service を作成してみます。
今回の内容です。
下記のあたりが参考になります。
- https://opendocs.nutanix.com/capx/v1.2.x/getting_started/
- https://kube-vip.io/docs/usage/kubernetes-services/
CAPX の Wrokload Cluster の作成
下記の投稿の、「3. 環境設定(clusterctl.yaml)」の設定ファイルに少し追記して、Wrokload Cluster のを作成します。
今回の clusterctl.yaml ファイルは、下記のようになります。
- 16~18行が追記されています。
Workload Cluster「capx01」を作成し、Pod がすべて起動された状態にしておきます。
# kubectl --kubeconfig=kubeconfig.capx01 get nodes NAME STATUS ROLES AGE VERSION capx01-kcp-25dt8 Ready control-plane 63m v1.26.7 capx01-wmd-2fcfz-zrg6n Ready <none> 61m v1.26.7 # kubectl --kubeconfig=kubeconfig.capx01 get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-79b487d764-gjxbc 1/1 Running 0 49m calico-apiserver calico-apiserver-79b487d764-mws4h 1/1 Running 0 49m calico-system calico-kube-controllers-588c69c7c6-6rwd8 1/1 Running 0 51m calico-system calico-node-8sg4m 1/1 Running 0 51m calico-system calico-node-gqh6g 1/1 Running 0 51m calico-system calico-typha-6679489f5c-zn9w6 1/1 Running 0 51m calico-system csi-node-driver-cp4tj 2/2 Running 0 51m calico-system csi-node-driver-nmfqj 2/2 Running 0 51m kube-system coredns-787d4945fb-6n8v9 1/1 Running 0 63m kube-system coredns-787d4945fb-rxwz9 1/1 Running 0 63m kube-system etcd-capx01-kcp-25dt8 1/1 Running 0 63m kube-system kube-apiserver-capx01-kcp-25dt8 1/1 Running 0 63m kube-system kube-controller-manager-capx01-kcp-25dt8 1/1 Running 0 63m kube-system kube-proxy-hfl8n 1/1 Running 0 63m kube-system kube-proxy-x6bzg 1/1 Running 0 61m kube-system kube-scheduler-capx01-kcp-25dt8 1/1 Running 0 63m kube-system kube-vip-capx01-kcp-25dt8 1/1 Running 0 63m kube-system nutanix-cloud-controller-manager-7946b47574-sjm2b 1/1 Running 0 63m tigera-operator tigera-operator-5db468f88d-cjbzk 1/1 Running 0 53m
LoadBalancer Service の作成(kubectl のみ)
動作確認用の Pod を起動します。
# kubectl --kubeconfig=kubeconfig.capx01 run web2048 --image=gowatana/docker-2048 pod/web2048 created
そして、LoadBalancer Service を作成します。
# kubectl --kubeconfig=kubeconfig.capx01 expose pod web2048 --port=80 --target-port=80 --type=LoadBalancer --load-balancer-ip=192.168.12.202 service/web2048 exposed
LoadBalancer Service が作成されました。
# kubectl --kubeconfig=kubeconfig.capx01 get svc web2048 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE web2048 LoadBalancer 172.19.24.4 192.168.12.202 80:30911/TCP 6s
Web ブラウザから EXTERNAL-IP のアドレス(192.168.12.202)にアクセスすると、Pod に接続できるはずです。
Pod と Service を削除しておきます。
# kubectl --kubeconfig=kubeconfig.capx01 delete svc web2048 service "web2048" deleted kubectl --kubeconfig=kubeconfig.capx01 delete pod web2048 pod "web2048" deleted
LoadBalancer Service の作成(YAML)
この Pod と Service は、下記のような YAML でも作成できます。
web2048.yml
kubectl で、下記のように適用します。
# kubectl --kubeconfig=kubeconfig.capx01 apply -f web2048.yml
以上。