⛵️
DigitalOcean Kubernetesに入門した時のメモ
流石にGKEのプリエンプティブルインスタンスとまではいかないものの、
他のマネージドK8sより安いと聞いて触ってみた時の備忘録です。
※ブログからの移行記事です。
TL;DR
- とにかくシンプル
- 機能は少なめ
- Ingress Controllerは自分で入れてね(Nginx Ingressなど)という感じ
- 比較的小〜中規模アプリ向け
- 公式の手順でリソースのクリーンアップを行っても、LoadBalancerは自動削除されないので注意
- CNIプラグインにCiliumを採用してるのがちょっと珍しい
検証環境
- MacOS Catalina
- kubectl: v1.17.2
作業録
- アカウント作成
Sign UP->クレジットカード登録->本人確認(パスポート or 運転免許証)
という流れでした。
ちなみにパスポート写真を登録しようとしたら、撮影時に何回もglare detectedと怒られてなかなか進めなかったです。
(結局暗めの場所に移動して、画面が均一な明るさになるようにケアしたら上手く行った)
- ダッシュボードが表示されたら、サイドバーのKubernetesタブを選択
- <Create a Kubernetes Cluster>を選択
- 利用したいバージョンを選択
2020年5月現在は1.16.6がlatestだったので、こちらを選択しました。
- リージョンを選択
日本にDCがないので、最寄りのシンガポールを選択しました。
- スペックを選択
最低スペックが1vCPU/2GB Memoryだったので、こちらを選択しました。
なお、ここで選んだWorkerノード数だけDroplets(AWSでいうEC2)が裏で構築される。
ちなみにMasterノードに対しては課金されないようです。
- タグを選択
タグは付けなくても良いですが、ある単位でタグ付けしておくと
クラスターが増えてきたときに後で検索しやすくなります。
- 一通り選択し終わったらクラスター作成
作成すると画面上部にプログレスバーが現れます。
- 以下Get Startedを押す
- kubectlとdoctlをインストール
kubectlはすでに手元のMacにインストール済みなので、doctlだけインストール。
$ brew install doctl
- クラスターに接続
# アクセストークンを入力(今回はRead+Write権限を持ったトークンを払い出した)
$ doctl auth init
# クラスター一覧を確認
$ doctl kubernetes cluster list
ID Name Region Version Auto Upgrade Status Node Pools
74c5e403-9abb-4dfd-999e-d7bc082af416 k8s-1-16-6-do-2-sgp1-1588317607439 sgp1 1.16.6-do.2 false running pool-sfg8xa6gz
# 接続したいクラスターのContextを追加
$ doctl kubernetes cluster kubeconfig save k8s-1-16-6-do-2-sgp1-1588317607439
Notice: Adding cluster credentials to kubeconfig file found in "/Users/xxxxx/.kube/config"
Notice: Setting current-context to do-sgp1-k8s-1-16-6-do-2-sgp1-1588317607439
# ノード確認
$ kubectl get no
NAME STATUS ROLES AGE VERSION
pool-sfg8xa6gz-38k81 Ready <none> 136m v1.16.6
pool-sfg8xa6gz-38k8z Ready <none> 134m v1.16.6
- サンプルアプリをデプロイ
※このタイミングでDigitalOceanのマネージドのLoadBalancerが作られるので、課金に注意
# リポジトリをクローン
git clone https://github.com/digitalocean/doks-example
# デプロイ
kubectl apply -f manifest.yaml
# Load Balancer ServiceのEXTERNAL-IPが付与されるまで待機
kubectl get svc -w
EXTERNAL-IPが付与されたらhttp://${EXTERNAL-IP}
にアクセスすると、
サンプルアプリの表示が確認できます。
- リソースのクリーンアップ
冒頭にも書きましたが、クラスターを削除しても
作成されたLoadBalancerリソースは削除されないので注意しましょう。
# クラスター削除
$ doctl k8s cluster delete k8s-1-16-6-do-2-sgp1-1588317607439
Warning: Are you sure you want to delete this Kubernetes cluster? (y/N) ? y
Notice: Cluster deleted, removing credentials
Notice: Removing cluster credentials from kubeconfig file found in "/Users/xxxxx/.kube/config"
Notice: The removed cluster was set as the current context in kubectl. Run `kubectl config get-contexts` to see a list of other contexts you can use, and `kubectl config set-context` to specify a new one.
$ doctl k8s cluster list
ID Name Region Version Auto Upgrade Status Node Pools
$
# Load Balancer削除
$ doctl compute load-balancer list --format ID
ID
4a1931ce-28a1-4f80-acc3-2b87b1009bc8
$ doctl compute load-balancer delete 4a1931ce-28a1-4f80-acc3-2b87b1009bc8
Warning: Are you sure you want to delete this load balancer? (y/N) ? y
$ doctl compute load-balancer list --format ID
ID
$
Discussion