Vultr で Kubernetes ノード立ててみたのでメモ
Kubernetes 初心者として、まずはカンタンに始めようと思って、
Vultr でマネージドな Kubernetes を始めてみることにしたのでメモ書き。
1. ノードの立ち上げ
https://my.vultr.com/kubernetes 内の「Add Cluster」からノードを作成します。
Vultr のよくないところとして、
デフォルトでは値段高めのインスタンスを作成させようとする ので、
Node Pool Type を「Optimized Cloud」から 「Regular Cloud Compute」 の方に変更します。
2. Kubernetes ダッシュボードを見られるようにする
右上の Download Configuration から YAML ファイルをダウンロード。
まだ kubectl
コマンドが使える状態になっていなかったので、Homebrew を使ってインストールしました。
brew install kubectl
そうしたら kubectl コマンドが動くことをいったん確認。
kubectl --kubeconfig vke-xxxxxxxxxxxxx.yaml get nodes NAME STATUS ROLES AGE VERSION test-label-2a1617d0261a Ready <none> 15m v1.28.3 test-label-b5a69dff50c2 Ready <none> 15m v1.28.3
https://kubernetes.io/ja/docs/tasks/access-application-cluster/web-ui-dashboard/ を参考に、
ダッシュボードの作成をおこないます。
kubectl --kubeconfig vke-xxxxxxxxxxxxx.yaml apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
ダッシュボードの作成が終わったら
kubectl --kubeconfig vke-xxxxxxxxxxxxxxxxxx.yaml proxy
を実行し、 Starting to serve on 127.0.0.1:8001
と表示されるのを待ちます。
そうすると、
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
にアクセスしてログイン画面を見ることができます。
「Kubeconfig」のほうを選択して、
さっきダウンロードした YAML ファイルを指定して「サインイン」できるかと思いきや、できませんでした。
いろいろ調べた挙げ句、
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.mdを参考に
以下のような YAML ファイルを dashboard-admin-user.yml
として作成しました。
# Creating a Service Account apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- # Creating a ClusterRoleBinding (管理者権限を付与) apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard --- apiVersion: v1 kind: Secret metadata: name: admin-user namespace: kubernetes-dashboard annotations: kubernetes.io/service-account.name: "admin-user" type: kubernetes.io/service-account-token
その後、
kubectl --kubeconfig vke-xxxxxxxxxxxxx.yaml -f dashboard-admin-user.yaml apply
で適用し、強い権限を持った admin-user
を作成。その後、
kubectl --kubeconfig vke-xxxxxxx.yaml get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
でトークンを作成し、そのトークンを入力して「サインイン」したら
無事にダッシュボードに入れました。
最初、上のように「Cron ジョブ」や「イングレス」の項を
権限不足で読み込めない症状があって困りました。
これは
kubectl --kubeconfig vke-xxxxxxxxxxxxx.yaml apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
の v2.7.0
のところを、ドキュメント通りに古い v2.0.0
を指定していたためでした。
最新版のダッシュボードだと問題が起こりませんでした! よかった。
3. Pod の立ち上げ
右上の「+(プラス)」ボタンから Pod の作成ができます。
https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/ に書かれている
YAML ファイルの内容を記載し、nginx の Pod を立ち上げてみました。
上のように記載し「アップロード」ボタンを押すと……
このようにデプロイされました。
これでいったん Kubernetes に入門できた気がします。