はじめに
手持ちのM1(M2)macbookでKubernetesを検証したく、環境構築をしていきます。
以下を参考に必要なパッケージをインストールするところから始めていきます!
Minikubeを使用してローカル環境でKubernetesを動かす
構築手順
手順に従いパッケージをインストールしていきますが、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 にも使用できます。
$ brew install kind
macに限らず、ローカルでKubernetesを実行するためには、Minikubeのようなツールが必要になります。
minikubeも同様にインストールしていきます。
Minikubeはローカル環境でKubernetesを簡単に実行するためのツールです。Kubernetesを試したり日々の開発への使用を検討するユーザー向けに、PC上のVM内でシングルノードのKubernetesクラスターを実行することができます。
$ brew install minikube
2:クラスターを構成する
以下のコマンドで、クラスター構成を確認してみます。
$ kubectl cluster-info
しかし、クラスターを作成していないため、失敗します。
DockerDesktopを起動しておき、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
コメント