Kubernetes Dashboardは、クラスターの状態を可視化し、リソース管理を直感的に行えるWebインターフェースです。ここでは、NodePortを利用してダッシュボードにアクセスする構成での導入方法を解説します。
1. コンテナイメージの取得
まず、ダッシュボードのコンテナイメージをDockerレジストリから取得します。
docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v2.0.0
2. デプロイメント定義ファイルの作成
以下の内容でdashboard-deploy.yamlファイルを作成します。ServiceAccount、ClusterRoleBinding、Deploymentを一括で定義しています。
apiVersion: v1
kind: ServiceAccount
metadata:
name: dash-service-account
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dash-role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dash-service-account
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
app: dashboard-ui
spec:
replicas: 1
selector:
matchLabels:
app: dashboard-ui
template:
metadata:
labels:
app: dashboard-ui
spec:
serviceAccountName: dash-service-account
containers:
- name: dashboard-container
image: k8s.gcr.io/kubernetes-dashboard-amd64:v2.0.0
ports:
- containerPort: 8443
resources:
requests:
cpu: 150m
memory: 150Mi
limits:
cpu: 250m
memory: 500Mi
livenessProbe:
httpGet:
scheme: HTTPS
path: /
port: 8443
initialDelaySeconds: 45
periodSeconds: 30
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
3. サービス定義ファイルの作成
次に、dashboard-service.yamlファイルを作成し、NodePortタイプのサービスを定義します。
apiVersion: v1
kind: Service
metadata:
name: dash-ui-service
namespace: kube-system
labels:
app: dashboard-ui
spec:
type: NodePort
selector:
app: dashboard-ui
ports:
- port: 443
targetPort: 8443
nodePort: 30443
protocol: TCP
4. リソースの適用
作成したマニフェストファイルを順次適用します。
kubectl apply -f dashboard-deploy.yaml
kubectl apply -f dashboard-service.yaml
5. 動作確認
Podとサービスの状態を確認し、正しく起動していることを確かめます。
kubectl get pods -n kube-system -l app=dashboard-ui
kubectl get svc -n kube-system -l app=dashboard-ui
6. ダッシュボードへのアクセス
NodePortで公開された30443番ポートを経由してアクセスします。クラスター内の任意のノードIPアドレスとポート番号を組み合わせて、ブラウザからhttps://<ノードIP>:30443で開きます。