【M1Macbook】Kubernetes環境を構築してminikubeを使いたいin2024年2月

Kubernetes

はじめに

手持ちのM1(M2)macbookでKubernetesを検証したく、環境構築をしていきます。

以下を参考に必要なパッケージをインストールするところから始めていきます!

kubectlのインストールおよびセットアップ

Minikubeを使用してローカル環境でKubernetesを動かす

構築手順

手順に従いパッケージをインストールしていきますが、homebrewを使用しますので、homebrewが入っていない方は以下のリンクからインストールしておきましょう。

Homebrew

Dockerも必要になりますので、以下のリンクでインストールしておきます。

Docker Desktop: 開発者向けの#1コンテナ化ツール | Docker

1:kubectl/kind/minikubeをインストール

まずは、kubectlをインストールします。

kubectlとは、以下の通り、k8sを使用する上での主要コマンドです。

https://kubernetes.io/ja/docs/reference/kubectl/#:~:text=Kubernetesが提供する、 kubernetes,のコマンドラインツールです。

Kubernetesが提供する、 kubernetes APIを使用してKubernetesクラスターのコントロールプレーンと通信するためのコマンドラインツールです。

では、以下のコマンドでインストールしていきます。

$ brew install kubectl

インストールされたことを確認します。

$ kubectl version --client
Client Version: v1.29.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3

続いて、kindもインストールします。

kindは、Kubernetes上にDockerを実行するためのツールです。

Docker コンテナ「ノード」を使用してローカル Kubernetes クラスターを実行するためのツールです。

kind は主に Kubernetes 自体をテストするために設計されましたが、ローカル開発または CI にも使用できます。

kind

kind

$ brew install kind

macに限らず、ローカルでKubernetesを実行するためには、Minikubeのようなツールが必要になります。

minikubeも同様にインストールしていきます。

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

https://kubernetes.io/ja/docs/setup/learning-environment/minikube/#:~:text=Minikubeはローカル環境で,することができます。

minikube

$ brew install minikube

2:クラスターを構成する

以下のコマンドで、クラスター構成を確認してみます。

$ kubectl cluster-info

しかし、クラスターを作成していないため、失敗します。

DockerDesktopを起動しておき、minikubeを使用して作成していきます。

Hello Minikube

$ minikube start
😄  minikube v1.32.0 on Darwin 14.2.1 (arm64)
✨  Automatically selected the docker driver. Other choices: virtualbox, ssh
〜省略〜

minikubeのステータスを確認します。

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

kubectl cluster-infoを確認してみます。

Kubernetes クラスターのコントロールプレーンと、クラスター内で実行されている主要なサービスの情報を表示します。

このコマンドは、クラスターの状態を確認し、クラスターに接続しているかどうかを素早く確認できます。

$ kubectl cluster-info
Kubernetes control plane is running at <https://127.0.0.1:64116>
CoreDNS is running at <https://127.0.0.1:64116/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy>

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

この例では、コントロールプレーンは https://127.0.0.1:64116 で稼働しています。これは、ローカルホストの 64116 ポートでアクセスできることを意味します。

コントロールプレーンは、Kubernetes クラスターの管理と調整を担うコンポーネント群(APIサーバー、スケジューラー、コントローラーマネージャーなど)から構成されます。

CoreDNS は、Kubernetes クラスター内で名前解決を提供するサービスです。

これは、クラスター内のサービス名やポッド名を IP アドレスに解決するために使用されます。

以下のDockerのHelloWorld用イメージを使用して、クラスタを実行します。

hello-world – Official Image | Docker Hub

$ kubectl run helloーworld --image hello-world --restart=Never
pod/hello-world created

実行中のpodのステータスを確認します。

$ kubectl get pod
NAME          READY   STATUS      RESTARTS   AGE
hello-world   0/1     Completed   0          11s

指定のpodのログを出力します。

お決まりのHello from Docker!を確認することができました!

$ kubectl logs pod/hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
〜省略〜

3:リソースを削除する

では、実行中のpodを指定して、リソースを削除します。

$ kubectl delete pod/hello-world
pod "hello-world" deleted

削除されたことを確認します。

$ kubectl get pod
No resources found in default namespace.

minikubeを停止します。

$ minikube stop
✋  Stopping node "minikube"  ...
🛑  Powering off "minikube" via SSH ...
🛑  1 node stopped.

停止したことを確認します。

$ minikube status
minikube
type: Control Plane
host: Stopped
kubelet: Stopped
apiserver: Stopped
kubeconfig: Stopped

まとめ

今回は、M1MacbookにおけるKubernetesの環境構築を進めました。

引き続き、Kubernetes中心に触っていきたいと思います!

Kubernetes icon by Icons8

Docker icon by Icons8

コメント

タイトルとURLをコピーしました