3
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kubernetes をローカルで試してみる

Posted at

やりたいこと

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 ファイルを作成する。

test_deployment.yml
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 ファイルを作成する。

test_service.yml
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

image.png

ということで

k8s 上に Nginx を構築してみました。k8s の概要と基本的な操作は分かったかなと思います。
他にも様々な機能がありそうなので今後も記事にしていきます。最終的には何らかクラウドサービスを利用したケースまで試してみみたいです。

以上です。

3
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?