今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、ローカルKubernetesについて整理したの日。

目次

とある日

Kubernetes(以下、K8sと呼ぶ)を仕事で使いそうなので勉強を始めようと思います。

K8sの勉強を始めるのにあたっての備忘録としての役割が大きい。

K8sを学習しようとするとハンズオンなどチュートリアルを調べると思いますが、

イマイチどれがいいのか、どれが適しているのか、それぞれの違いなどがわからなかったので調べます。

はじめに

前提

K8sの知識はゼロに近いです。

しかしコンテナの知識はそれなりにあると思います。

MySQLの環境をDockerやDocker-composeなどでテスト環境を構築しています。

しかし、K8sは触ったことはない。

本記事

目的

K8sの学習やハンズオンを勧めていく上で情報が多いため整理を行うために作成を行う。

対象

  • DockerやDocker-composeを使ったことがあるがK8sは使ったことない
  • K8sのハンズオンを試したいと思っているがわけがわからない

参考書籍

Kubernetes環境の種別

K8sの入門やチュートリアル、ハンズオンを調べると色々と情報が出ます。

K8sクラスタを利用するには大きく分けると3種類の方法があります。

今回は主に解説するのは、ローカルKubernetesです。

理由としては、ほか2つは規模が大きかったり構築が大変だったりお金がかかります。

ローカルKubernetesの解説は本記事の本題なので後述で解説します。

ここでは、Kubernetes構築ツールマネージドKubernetesサービスについて少しだけ触れます。

Kubernetes構築ツール

構築ツールを使ってK8sの環境をセットアップしていく方法を指します。

Kubeadm

kubeadmは、kubeadm initkubeadm joinなどのコマンドを提供するツールで、Kubernetesクラスターを構築する上でのベストプラクティスを反映した「近道」を提供するものとして開発されました。

qiita.com

kubeadmのインストール | Kubernetes

RANCHER

Why Rancher?

Rancherは、コンテナ技術を採用しているチーム向けのコンテナ管理のプラットフォームです。マルチクラウドとオンプレミス環境にKubernetesクラスターをより簡単に構築および管理できます。

Kubernetesを始めましょう | Rancher Quick Start

マネージドKubernetesサービス

クラウドのサービスでK8sを構築することを指します。

Google Kubernetes Engine(GKE)

Kubernetes を自動でデプロイ、スケーリング、管理できるシンプルな方法です。

Azure Kubernetes Service (AKS)

高可用性で安全なフル マネージド Kubernetes サービス

Amazon Elastic Kubernetes Service (EKS)

Kubernetes のもっとも信頼性の高い実行方法

ローカルKubernetes

手元のマシン上で気軽にK8sを試すことが可能です。

ただ、冗長性は一切担保されていないそうです。

主に3つ存在します。

それぞれの違いについて調べようと思います。

Minikube

Minikubeはローカル環境でKubernetesを簡単に実行するためのツールです。Kubernetesを試したり日々の開発への使用を検討するユーザー向けに、PC上のVM内でシングルノードのKubernetesクラスタを実行することができます。

VirtualBoxを使った例が多いです。

Hello Minikube

Docker Desktop for Windows / Mac

ローカルシステム上の Docker コンテナ内で Kubernetes サーバが稼働します。また、用途はローカルでのテストのみです。Kubernetes サポートを有効化したら、Kubernetes 、 Swarm 、そしてスタンドアロン・コンテナを、それぞれ並列にワークロードをデプロイ可能となります。

Kubernetes 上にデプロイ

Docker Desktopの環境がすでにあるのであれば、設定からK8sを有効にするだけで使用することができます。

kind (K8S in Docker)

kindは、Dockerコンテナの「ノード」を使用してローカルのKubernetesクラスタを実行するためのツールです。 kindは、主にKubernetes自体をテストするために設計されましたが、ローカル開発またはCIに使用される場合があります。

クイックスタート

Go言語が必要になるみたいです。

WSL2を導入していると簡単に始められる。

ローカルKubernetesまとめ

項目 Minikube Docker Desktop for Windows / Mac kind (K8S in Docker)
バージョン選択 -
マルチクラスタ -
マルチノード - -
機能性
シンプルさ

確かVirtualBoxとWSL2は同じマシーンに入れるとうまく作動しなかった気がするので、現状構築している環境に応じで選択する法が良いと思います。

仮想環境等の準備を全くしていないのであれば、WSL2を構築してkindをするのほうが自由度は高いと思われます。

クラウドサービスを使えると楽なのですが、そうすると色々と大変なのでローカル環境で行える方法を調べました。