こんにちは。よっしーです(^^)
今日は、Docker Desctop for Mac でKubernetesを有効にする方法についてご紹介します。
背景
Docker Desktop for Mac は、Mac ユーザーにとって Docker を使いやすくするためのツールです。Docker はコンテナ仮想化プラットフォームであり、アプリケーションやサービスをコンテナと呼ばれる軽量な環境にパッケージ化して実行することができます。
Kubernetes(クーバネティス)は、コンテナオーケストレーションツールの一つであり、大規模なコンテナベースのアプリケーションのデプロイメント、スケーリング、管理を簡素化するために使用されます。Kubernetes は、複数のコンテナをクラスターと呼ばれるグループにまとめ、自動的にスケジューリングやロードバランシングを行い、アプリケーションの高可用性や拡張性を実現します。
Docker Desktop for Mac は、Kubernetes のクラスターを作成し、Mac 上で Kubernetes を実行するための統合環境を提供しています。これにより、Mac ユーザーは手軽に Kubernetes を試したり、開発環境でのアプリケーションのデプロイやテストに活用することができます。
Kubernetes を有効にすると、Docker Desktop for Mac 上で Kubernetes クラスターを作成し、Kubernetes の機能を使用することができます。これには、コンテナのデプロイ、スケーリング、ネットワーキングの設定、監視などが含まれます。また、Kubernetes を使用することで、Docker コンテナだけでなく、他のクラウドプロバイダーやオンプレミスの環境でも同じアプリケーションをデプロイできるようになります。
したがって、Docker Desktop for Mac で Kubernetes を有効にすることで、Mac ユーザーは簡単に Kubernetes を利用し、コンテナベースのアプリケーションのデプロイと管理を行うことができます。
有効化手順
下記の手順で、Docker Desctop for Mac でKubernetesを有効にします。
- Docker ダッシュボードから、[Settings]を選択します。
- 左側のサイドバーから「Kubernetes」を選択します。
- [Enable Kubernetes]の横にあるチェックボックスをオンにします。
- 「Apply & restart」を選択して設定を保存し、「インストール」をクリックして確認します。
これにより、Kubernetes サーバーをコンテナとして実行するために必要なイメージがインスタンス化され、/usr/local/bin/kubectl
コマンドがマシンにインストールされます。
確認
下記のコマンドを実行して、パスが表示されれば成功です。
% which kubectl
/usr/local/bin/kubectl
下記のコマンドを実行して、コンテキストにdocker-desktopが選択されていることを確認します。
% kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* docker-desktop docker-desktop docker-desktop
もしdocker-desktopでなかった場合は、下記のコマンドで変更することができます。
kubectl config use-context docker-desktop
下記のコマンドを実行すると、使用可能なノードがリストアップされます。これで、コマンドの動作テストができます。
% kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 10m v1.25.9
デプロイ手順
試しにPodをデプロイしてみます。
下記のコマンドを実行します。
touch pod.yaml
pod.yamlの内容を下記にします。
apiVersion: batch/v1
kind: Job
metadata:
name: hello
spec:
template:
# これがPodテンプレートです
spec:
containers:
- name: hello
image: busybox:1.28
command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
restartPolicy: OnFailure
# Podテンプレートはここまでです
下記のコマンドを実行して、下記のように表示されれば成功です。
% kubectl apply -f pod.yaml
job.batch/hello created
% kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-5fplp 1/1 Running 0 7s
% kubectl logs hello-5fplp
Hello, Kubernetes!
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e0374cbc8d busybox "sh -c 'echo \"Hello,…" 30 seconds ago Up 29 seconds k8s_hello_hello-5fplp_default_ce8f52c4-cfa1-4680-b038-dc4beb06b0ef_0
Podとは
Kubernetes(クーバネティス)において、Pod(ポッド)は最小単位のデプロイメントオブジェクトです。Pod は 1 つ以上のコンテナで構成され、同一のホスト上で共同して動作します。
Pod 内のコンテナは、共有ネットワーク名前空間と同じ IP アドレスとポート空間を持ち、同一のホスト上で直接通信できます。また、Pod 内のコンテナは共有ストレージボリュームを利用することもできます。
Pod は、以下のような特徴を持ちます:
- ライフサイクルの単位: Pod は、コンテナをまとめる単位であり、同じライフサイクルを共有します。つまり、コンテナが共通のリソースを利用したり、相互に連携する必要がある場合には、同じ Pod 内に配置することができます。
- スケジューリング単位: Pod は、Kubernetes クラスター上でスケジューリングされる単位です。Kubernetes スケジューラーは、Pod を実行するノード(ホスト)を選択し、そのノード上で Pod 内のコンテナをスケジュールします。
- ライフサイクル管理: Pod は、Kubernetes によって監視・管理されます。Pod 内のコンテナが異常終了した場合、Kubernetes はそのコンテナを再起動します。また、Pod 自体が削除された場合は、その中のすべてのコンテナも同時に削除されます。
Pod は一般的には単一のコンテナで構成されますが、複数の関連するコンテナをまとめることもできます。たとえば、Web サーバーとデータベースサーバーを同じ Pod に配置して、相互に通信することができます。また、Pod 内のコンテナは同じ IP アドレスとポート空間を共有するため、ローカルホスト経由で相互に通信できます。
Pod は Kubernetes クラスター内の他のリソースと連携して動作し、スケーリング、ネットワーキング、ストレージなどの管理が行われます。
無効化手順
無効化する手順は、下記になります。
- Docker ダッシュボードから、[Settings]を選択します。
- 左側のサイドバーから「Kubernetes」を選択します。
- [Enable Kubernetes]の横にあるチェックボックスをオフにします。
- 「Apply & restart」を選択して設定を保存します。
これにより、Kubernetes コンテナーが停止して削除され、/usr/local/bin/kubectl
コマンドも削除されます。
おわりに
今日は、Docker Desctop for Mac でKubernetesを有効にする方法についてご紹介しました。次回は、Kubernetesコマンドの使い方を説明したいと思います。
何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント