やりたいこと
Kubernetes を使うことになったが、これまでまったく触ったことがなかったのでこの機会にいろいろと試してみようと、ローカルで使える環境を整えたので記事にしてみます。
マシン
- OS: MacOS 14.3
- CPU: M3Pro
- メモリ: 36 GB
ローカル環境の構築
minikube
ローカルで k8s 環境を構築できる minikube をインストールする。
以下コマンドでインストール。
$ brew install minikube
Version 確認しておく。
$ minikube version
minikube version: v1.34.0
commit: 210b148df93a80eb872ecbeb7e35281b3c582c61
kubectl
k8s の CLI ツール。
以下コマンドでインストールする。
$ brew install kubectl
Version 確認しておく。
$ kubectl version --client
Client Version: v1.31.3
Kustomize Version: v5.4.2
minikube の起動
以下コマンドで minikube を起動させる。初回起動時は少し時間がかかるが待機する。
$ minikube start
以下のような出力が表示される。
😄 Darwin 14.3 (arm64) 上の minikube v1.34.0
✨ 既存のプロファイルを元に、docker ドライバーを使用します
👍 Starting "minikube" primary control-plane node in "minikube" cluster
🚜 Pulling base image v0.0.45 ...
🏃 実行中の docker 「minikube」 container を更新しています...
🐳 Docker 27.2.0 で Kubernetes v1.31.0 を準備しています...
🔎 Kubernetes コンポーネントを検証しています...
▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
🌟 有効なアドオン: storage-provisioner, default-storageclass
🏄 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました
以上で、環境構築は完了!
Service を作成する
今回は、Nginx を k8s 上に作成していく。
Service を作成する前に、Deployment を作成する。
Deployment の概念については以下の記事が分かりやすい。
以下のように YAML ファイルを作成する。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
Service については以下の記事で詳しく書かれている。
以下のように YAML ファイルを作成する。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort
作成した YAML ファイルを minikube 上に適用していく。
$ kubectl create -f test_deployment.yml
deployment.apps/nginx created
$ kubectl create -f test_service.yml
service/nginx-service created
実際に作成されたか確認してみる。以下のような出力になれば OK。
Running には時間が経てば変化する。
$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nginx-7769f8f85b-585x7 1/1 Running 0 3m30s
pod/nginx-7769f8f85b-zhmsj 1/1 Running 0 3m30s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 37m
service/nginx-service NodePort 10.106.243.72 <none> 80:30954/TCP 2m38s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx 2/2 2 2 3m30s
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-7769f8f85b 2 2 2 3m30s
サービスへアクセスする
以下コマンドを事項すると、アクセス URL が表示され自動的にブラウザが起動して URL 先が表示される。
今回はよく見る Nginx のデフォルトページが表示されるはず!
minikube service nginx-service
ということで
k8s 上に Nginx を構築してみました。k8s の概要と基本的な操作は分かったかなと思います。
他にも様々な機能がありそうなので今後も記事にしていきます。最終的には何らかクラウドサービスを利用したケースまで試してみみたいです。
以上です。