Docker Desktop上のKubernetesを利用
はじめに
久しぶりにKubernetesを触ってみたので備忘録として残す。
まえにMinikubeを試したが、今回はDocker Desktop上に作成できるKubernetesクラスタで試してみた。
TL;DR
Docker Desktop上でKubernetesクラスタを有効にして、Dashboadまでアクセス。
前提環境
- OS: Windows 11
- Docker Desktop: 4.37.1
- Docker: 27.4.0
- Kubernetes: 1.30.5
Docker Desktop上でKubernetesクラスタの有効化
(前提)Docker Desktopのインストール
下記リンクを参考にWindowsへDocker Desktopをインストールします。
Windows に Docker Desktop をインストール
Kubernetesクラスタの有効化
Docker Desktop上でSettings > Kubernetes
に遷移して「Enable Kubernetes」を有効にします。
有効にならない場合は、「Apply & restart」を押してみてください。
ちなみに、Kubernetesクラスタ上でいろいろ試してリセットしたい場合は「Reset Kubernetes Cluster」でリセットできるようです。
コンポーネントのversion確認
$ docker --version
Docker version 27.4.0, build bde2b89
$ docker-compose --version
Docker Compose version v2.31.0-desktop.2
$ kubectl version
Client Version: v1.30.5
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.5
Dashboadの有効化
事前準備
Dashboadをデプロイする前に管理ユーザーService AccountとClusterRoleBindingを作成します。
kubernetes/dashboadのcreating-sample-user.mdにあるように以下のようなyamlファイルを作成し、kubectl apply
します。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
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
下記コマンドで適用します。
$ kubectl apply -f dashboard-adminuser.yml
serviceaccount/admin-user created
$ kubectl apply -f dashboard-crb.yml
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
Dashboadへログインする際は上記で作成したユーザーのBearerトークンが必要です。
下記のようにコマンドを実行してトークンを取得しておきます。
$ kubectl -n kubernetes-dashboard create token admin-user
<bearerトークン>
Dashboadのdeploy
日本語ページの情報(古い)
Web UI (Dashboard)のダッシュボードUIのデプロイに記載のあるコマンドを実行します。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
Warning: spec.template.metadata.annotations[seccomp.security.alpha.kubernetes.io/pod]: non-functional in v1.27+; use the "seccompProfile" field instead
deployment.apps/dashboard-metrics-scraper created
英語のページ(最新)
Deploy and Access the Kubernetes Dashboard
deployの確認
$ kubectl get ns
NAME STATUS AGE
default Active 5h35m
kube-node-lease Active 5h35m
kube-public Active 5h35m
kube-system Active 5h35m
kubernetes-dashboard Active 66m
$ kubectl -n kubernetes-dashboard get all
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-687dbbb9c4-kwwc8 1/1 Running 0 68m
pod/kubernetes-dashboard-6d65597fcd-5tnb4 1/1 Running 0 68m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.105.47.163 <none> 8000/TCP 68m
service/kubernetes-dashboard ClusterIP 10.105.84.82 <none> 443/TCP 68m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/dashboard-metrics-scraper 1/1 1 1 68m
deployment.apps/kubernetes-dashboard 1/1 1 1 68m
NAME DESIRED CURRENT READY AGE
replicaset.apps/dashboard-metrics-scraper-687dbbb9c4 1 1 1 68m
replicaset.apps/kubernetes-dashboard-6d65597fcd 1 1 1 68m
プロキシの設定
kubectl proxy
コマンドでDashboadへアクセスできるようにします。
ダッシュボードはhttp://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/へアクセスすることで利用できます。
Dashboadへサインイン
Kubernetes Dashboardでは(1)トークン、(2)Kubeconfigの2つの方法でログインできるようです。
今回はBearerトークンでログインするので、トークンにチェックをしてkubectl -n kubernetes-dashboard create token admin-user
で取得したトークンをコピペしてサインインします。
Overviewのページが表示されればサインイン成功です。
Discussion