こんにちは!久しぶりの技術ネタです。先月からVultr Kubernetes Engine (VKE)のBetaが始まっているようでして、早速と言うほど早いわけではないですが試してみました。
Vultr Kubernetes Engine Beta Is Now Available in New Jersey – Vultr.com
基本的には以下のガイドに沿っていく感じです。
Vultr Kubernetes Engine – Vultr.com
管理画面に入るとProductsの中にKubernetesがありますので開いています。まだクラスタを作成していなければ以下のような画面のはずですのでAdd Clusterを押します。
クラスタの作成画面になりますので、必要事項を入力します。今回はクラスタ名はtest、ロケーションは日本に近そうなLos Angelesとし、プールは名前だけtest-pool0とし他は初期状態のままとしました。ロケーションについては、この記事執筆時点ではLos AngelesとNew York (NJ)のみという感じで、日本はまだですね。ちなみに初期状態で1vCPU、2GB RAMのノードが3台で月30ドル、コントロールプレーンの費用は発生しないということです。右下のDeploy Nowでクラスタが作成されます。
一覧画面に戻ってきてInstallingということでクラスタを作成しているところです。
ちなみにInstancesを見るとVKEクラスタ用のインスタンスが出ていますね。
ほんの数分でクラスタの作成が完了し、クラスタ一覧でもRunningとなります。
作成したクラスタを選択すると詳細が表示されますので、右上のDownload Configurationを押してkubectlで使用する接続情報を含むファイルをダウンロードします。
あとはダウンロードしたファイルを使用していつもどおりkubectlを叩くだけですね。ガイドのとおりcluster-infoを叩いてみましょう。
$ kubectl --kubeconfig=kube_config.yaml cluster-info
Kubernetes master is running at https://*****.vultr-k8s.com:6443
CoreDNS is running at https://*****.vultr-k8s.com:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
ノードの一覧もちゃんと出ますね。
$ kubectl --kubeconfig=kube_config.yaml get nodes
NAME STATUS ROLES AGE VERSION
test-pool0-***** Ready <none> 27m v1.20.0
test-pool0-***** Ready <none> 26m v1.20.0
test-pool0-***** Ready <none> 27m v1.20.0
一応動いてはいるっぽいですが、ロードバランサの試用も兼ねてnginxを動かしてみます。以下の内容でnginx.yamlを作成します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
---
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/vultr-loadbalancer-protocol: "http"
name: vultr-lb-http
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
name: "http"
そしてapply。
$ kubectl --kubeconfig=kube_config.yaml apply -f nginx.yaml
deployment.apps/nginx-deployment created
service/vultr-lb-http created
get podsしてpodの作成を確認します。良い感じです。
$ kubectl --kubeconfig=kube_config.yaml get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-*********-***** 1/1 Running 0 42s
nginx-deployment-*********-***** 1/1 Running 0 42s
get servicesしてロードバランサの作成状況とIPアドレスを確認します。EXTERNAL-IPが出ていますね。
$ kubectl --kubeconfig=kube_config.yaml get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP **.**.**.** <none> 443/TCP 36m
vultr-lb-http LoadBalancer **.**.**.** **.**.**.** 80:32608/TCP 4m31s
http://<EXTERNAL-IP>/にアクセスするとnginxの初期状態のメッセージが表示され、問題なく動いていることが分かります。
ちなみにロードバランサですが、VKEクラスタとは別料金です。管理画面のLoad Balancersに連携して作成されたロードバランサが表示されています。
またVKEクラスタの詳細画面からも関連するロードバランサとして表示できますね。
以上、VKEを軽く試してみた話でした。手動で作ると結構大変なクラスタ作成も少しの情報入力と数クリックで完了しますし、やはりマネージドk8sは素晴らしいですね。しかもお手頃な価格から始められるということで、使いやすいのではないでしょうか。また他にもブロックストレージや証明書マネージャ、DNSの連携がありますので、そのあたりも試していきたいなと思っています。特にLet’s Encryptとの連携を検証しなければいろいろ移行できないので、そのあたりやりたいですね。それでは!