Kubernetes on Windowsのセットアップ

MicroK8sは、開発およびテスト目的でKubernetesをデプロイしたいチーム向けのソリューションです。Windows上でのセットアップ手順を以下で簡単に紹介します。

Kubernetes on Windows

MicroK8sはLinux snapとして動作し、Ubuntu上で動く軽量かつCNCF認定を取得したKubernetesローカルディストリビューションです。インストールには30秒もかかりません。Ubuntuやsnapをサポートするオペレーティングシステム(OS)上ですべてのKubernetesサービスをネイティブに実行し、ローカルPCに1つのクラスタをデプロイします。これはチームに柔軟性を与え、マイクロサービスを小規模でテストしたり、ローカルで機械学習モデルを開発および教育したり、アップグレード可能なKubernetesをIoTデバイスに組み込んで簡単に展開したりできます。

MicroK8sは、スケジューリング、スケーリング、デバッグなどのKubernetesの典型的な機能をローカルで自動化する一方で、開発向けに最新のKubernetesを提供することで信頼性を高めます。Kubernetesの最新のアップストリームバージョンは常に、公式リリースから1週間以内にUbuntu上で利用可能になります。

Kubernetes on Windowsは、Ubuntu VMでKubernetesクラスタをセットアップすることで動作します。

MicroK8sとKubernetesの動作にLinuxカーネルが必要なため、Ubuntu VMが必要です。このVMをMultipassを使って作成します。MultipassはWindows、MacOS、およびLinux上でUbuntu VMをすばやく起動して管理するツールです。VMはKubernetesのインスタンスを外の世界から隔離し、セキュリティを強化するのにも役立ちます。

Kubernetes on Windowsのセットアップ手順

ここではMultipassのセットアップ、VM上のMicroK8sの操作方法、およびDNSのアドオンを有効にしてMicroK8sダッシュボードを表示する手順を説明します。

なお、MultipassをWindows 10 EnterpriseまたはProで実行するには、信頼できるネットワーク上でhyper-vを有効にしておくなど、いくつかの要件があることに注意してください。

ステップ1:Multipassを使用してWindows用VMをセットアップする

VMを作成してMicroK8sを実行するには以下を実行します:

multipass launch --name microk8s-vm --mem 4G --disk 40G

multipass exec microk8s-vm -- sudo snap install microk8s --classic

multipass exec microk8s-vm -- sudo iptables -P FORWARD ACCEPT

Kubernetesをホストするために十分なリソースを確保してください。上記の例では、micro8s-vmという名前のVMを作成し、4GBのRAMと40GBのディスクを割り当てました。

VMはIPアドレスを持ち、以下のコマンドで確認できます(このIPでサービスにアクセスするため、IPをメモしておいてください)。

multipass list

Name           State IPv4            Release

microk8s-vm    RUNNING 10.72.145.216    Ubuntu 18.04 LTS

ステップ2:VM上のMicroK8sを操作する

VMをMultipassコマンドを使って操作する方法は3つあります。

  • 以下を実行してMultipassシェルプロンプト(コマンドライン)を使用する方法:
multipass shell microk8s-vm
  • 以下を実行してmultipass execを使用してシェルプロンプトを使わずにコマンドを実行する方法:
multipass exec microk8s-vm -- /snap/bin/microk8s.status
  • VMで実行しているKubernetes APIサーバを使用する方法。ここではローカルにkubectlをインストールし、MicroK8sのkubeconfigファイルを使用して、VM内のKubernetesにアクセスすることもできます。この場合は以下を実行します:
multipass exec microk8s-vm -- /snap/bin/microk8s.config > kubeconfig

次に、ホストマシンにkubectlをインストールしてkubeconfigを使用します。

kubectl --kubeconfig=kubeconfig get all --all-namespaces  

NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 443/TCP 3m12s

ステップ3:VM内のMultipassサービスにアクセスしMicroK8sアドオンを有効化する

基本的なMicroK8sアドオンの例としてGrafanaダッシュボードをセットアップします。GrafanaにアクセスしてMicroK8sインスタンスを監視および分析する方法を紹介します。以下を実行します。

multipass exec microk8s-vm -- /snap/bin/microk8s.enable dns dashboard
Enabling DNS
Applying manifest
service/kube-dns created
serviceaccount/kube-dns created
configmap/kube-dns created
deployment.extensions/kube-dns created
Restarting kubelet
DNS is enabled
Enabling dashboard
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
service/monitoring-grafana created
service/monitoring-influxdb created
service/heapster created
deployment.extensions/monitoring-influxdb-grafana-v4 created
serviceaccount/heapster created
configmap/heapster-config created
configmap/eventer-config created
deployment.extensions/heapster-v1.5.2 created
dashboard enabled

次に、以下を実行してデプロイの進捗を確認します。

multipass exec microk8s-vm -- /snap/bin/microk8s.kubectl get all --all-namespaces

以下のような出力が返されるはずです。

すべてのサービスの起動が完了したら、ダッシュボードにアクセスします。下のイメージがGrafanaダッシュボードです。

Kubernetes on Windowsのまとめ

MicroK8sにより開発チームは本番デプロイ前に作業をテストできます。Kubernetesの標準タスクを自動化すると同時に、信頼性を高めることができます。

About the author

Thibaut's photo

Technologist, marketer and entrepreneur. On a constant mission to make things happen.

More articles by Thibaut

Posted in: