はじめに
前回の記事でWindows10上にmicrok8sを使ってKubernetesクラスタを構築しました。
いくつか関連記事を読んでいたら足りなさそうな設定がありましたのでこの記事で補足します。
概要
以下の追加設定を行います。
- microk8sのデフォルトで無効となっている機能(storage dns dashboard metrics-server)を有効にする
- Host OSであるWindows 10上からkubectlを使えるようにする
設定手順
手順はUbuntu上での操作、その後Windows上での操作の2段階です。
Ubuntu側
microk8s.enable
コマンド一発でいろいろ有効になります。
storage
を有効かするとvarフォルダにファイルが生成されるので、sudoの付与が必要です。
# microk8sのstorage,dns,dashboard,metrics-serverを有効にする
$ sudo microk8s.enable storage dns dashboard metrics-server
# Kubernetesクラスタの状態を確認する(storage,dns,metrics-server,dashboardがenableになっている)
$ microk8s.status
microk8s is running
addons:
jaeger: disabled
fluentd: disabled
gpu: disabled
storage: enabled
registry: disabled
ingress: disabled
dns: enabled
metrics-server: enabled
prometheus: disabled
istio: disabled
dashboard: enabled
# Kubernetesクラスタの全ての状態を取得する(いろいろ増えている)
$ kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/heapster-v1.5.2-64874f6bc6-dw7vs 4/4 Running 4 3m59s
kube-system pod/hostpath-provisioner-599db8d5fb-lh4rn 1/1 Running 2 32m
kube-system pod/kube-dns-6ccd496668-rwtd9 3/3 Running 11 88m
kube-system pod/kubernetes-dashboard-654cfb4879-n9v2d 1/1 Running 1 5m19s
kube-system pod/metrics-server-v0.2.1-6f76659f47-2grd2 2/2 Running 2 4m11s
kube-system pod/monitoring-influxdb-grafana-v4-6679c46745-xr8js 2/2 Running 2 5m19s
kube-system pod/tiller-deploy-664d6bdc7b-bvjrb 1/1 Running 4 3h3m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 3h4m
kube-system service/heapster ClusterIP 10.152.183.55 <none> 80/TCP 5m19s
kube-system service/kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP 88m
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.163 <none> 443/TCP 5m19s
kube-system service/metrics-server ClusterIP 10.152.183.231 <none> 443/TCP 4m53s
kube-system service/monitoring-grafana ClusterIP 10.152.183.57 <none> 80/TCP 5m19s
kube-system service/monitoring-influxdb ClusterIP 10.152.183.49 <none> 8083/TCP,8086/TCP 5m19s
kube-system service/tiller-deploy ClusterIP 10.152.183.165 <none> 44134/TCP 3h3m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/heapster-v1.5.2 1/1 1 1 5m19s
kube-system deployment.apps/hostpath-provisioner 1/1 1 1 32m
kube-system deployment.apps/kube-dns 1/1 1 1 88m
kube-system deployment.apps/kubernetes-dashboard 1/1 1 1 5m19s
kube-system deployment.apps/metrics-server-v0.2.1 1/1 1 1 4m54s
kube-system deployment.apps/monitoring-influxdb-grafana-v4 1/1 1 1 5m19s
kube-system deployment.apps/tiller-deploy 1/1 1 1 3h3m
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/heapster-v1.5.2-56c546dbb8 0 0 0 4m14s
kube-system replicaset.apps/heapster-v1.5.2-64874f6bc6 1 1 1 3m59s
kube-system replicaset.apps/heapster-v1.5.2-6bc7c4965d 0 0 0 5m19s
kube-system replicaset.apps/hostpath-provisioner-599db8d5fb 1 1 1 32m
kube-system replicaset.apps/kube-dns-6ccd496668 1 1 1 88m
kube-system replicaset.apps/kubernetes-dashboard-654cfb4879 1 1 1 5m19s
kube-system replicaset.apps/metrics-server-v0.2.1-6f76659f47 1 1 1 4m12s
kube-system replicaset.apps/metrics-server-v0.2.1-7d7d77666c 0 0 0 4m53s
kube-system replicaset.apps/monitoring-influxdb-grafana-v4-6679c46745 1 1 1 5m19s
kube-system replicaset.apps/tiller-deploy-664d6bdc7b 1 1 1 3h3m
# cluster-infoを確認し、サービスへアクセスするURLが生成されていることを確認する
$ kubectl cluster-info
Kubernetes master is running at http://127.0.0.1:8080
Heapster is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Grafana is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at http://127.0.0.1:8080/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy
次の手順で必要になるので、kubectlの設定情報をダンプしておきます。
$ cat /snap/microk8s/current/client.config
apiVersion: v1
clusters:
- cluster:
server: http://127.0.0.1:8080
name: microk8s-cluster
contexts:
- context:
cluster: microk8s-cluster
user: admin
name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
user:
username: admin
Windows10側
Chocolateyのインストール
管理者権限でコマンドプロンプトを起動した状態で操作する。
Chocolateyの公式サイトを参考にしてください。
以下の文字列をコマンドプロンプトにペーストしてエンターキー一発でインストールされます。
C:\> @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
kubectlのインストール
chocolateyをインストールしたコマンドプロンプトの続きでそのまま実行する。
C:\> choco install kubernetes-cli
kubectlとkubectlの関連付け
Ubuntu上(IPアドレス:192.168.33.10)で動作するmicrok8sで構築したKubernetesクラスタにアクセスするための情報をkubectlに設定する。
# 現在の設定を表示(有効なKubernetesクラスタはひとつもない状態)
C:\> kubectl config view
apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
# ユーザ(admin)を作成する。
C:\> kubectl config set-credentials admin --username=admin
user "admin" set.
# クラスタを作成する。
C:\> kubectl config set-cluster microk8s-cluster --server=http://192.168.33.10:8080
cluster "microk8s-cluster" set.
# コンテキスト(microk8s)を作成する。ユーザ(admin)とクラスタ(cluster)を関係付ける。
C:\> kubectl config set-context microk8s --user=admin --cluster=microk8s-cluster
context "microk8s" set.
# 利用するコンテキストを選択する。ここでは、microk8sを使う。
C:\> kubectl config use-context microk8s
switched to context "microk8s-cluster".
# 現在利用中のコンテキストを確認する。microk8sであることがわかる。
C:\> kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* microk8s cluster admin
# microk8sで構築したKubernetesクラスタのcluster-infoを確認する
C:\> kubectl cluster-info
Kubernetes master is running at http://192.168.33.10:8080
Heapster is running at http://192.168.33.10:8080/api/v1/namespaces/kube-system/services/heapster/proxy
KubeDNS is running at http://192.168.33.10:8080/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at http://192.168.33.10:8080/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
Grafana is running at http://192.168.33.10:8080/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at http://192.168.33.10:8080/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Grafanaの画面を表示させる
Host PCであるWindows10上でkubectl cluster-info
で確認したGrafanaのURLをブラウザからアクセスする。
Grafana is running at http://192.168.33.10:8080/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
以下の表示が出たらアクセスが成功しています。
さいごに
記事を書いていて思うのがmicrok8sの簡単さに素直に驚きました。
実は前回の記事の続きでこの記事を書いていましたが、VirtualBox上のUbuntuに割り当てたメモリ1GBでは足りず2GBに増やしています
まだ有効にしたadd-onの使い方もわかっていませんが、徐々にその辺は勉強していこうかと思います。