Minikubeを使ってKubernetesに触れてみたみたので、その備忘録を書いていきます。
Kubernetesはすでに有名で説明記事も多くあるので、説明に関しては省略させてください。
Minikubeとは
Minikubeは小規模なKuberenetes環境をVM上に作成することのできるパッケージです。
Windows,Linux関係なく構築することが可能です。
Minikubeの環境構築
今回はMacOSを利用します。
まずはkubectlをインストールします。
brewを使います。
brew install kubectl
続いてVM環境のために、VirtualBoxをインストールします。
下記からインストール可能です。
https://www.virtualbox.org/
ダウンロードしたらクリックしてインストールしてください。
続いてMinikubeをインストールします。
brew install minikube
これでMinikubeの環境が整いました。
Minikube起動
Minikubeの起動は下記のコマンドで行います。
minikube start
# このコマンドで状態を見ることができます。
$ minikube status
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
# kubectlでクラスターの情報も取得できます。
$ kubectl cluster-info
Kubernetes master is running at https://192.168.64.2:8443
KubeDNS is running at https://192.168.64.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
podを使って複数コンテナを起動してみる
yamlで設定事項を書いていきます。
apiVersion: v1
# Kubernetesが作成するObjectのタイプ
kind: Service
metadata:
name: client-node-port
# サブタイプ
spec:
type: NodePort
ports:
- port: 3050
#podのport
targetPort: 3000
selector:
component: web
apiVersion: v1
# Kubernetesが作成するObjectのタイプ
kind: Pod
metadata:
name: client-pod
labels:
component: web
spec:
containers:
- name: client
#dockerhubにアップロードしてあるイメージ
image:イメージ名
ports:
- containerPort: 3000
これをもとに様々なKubrenetesにおけるオブジェクトが作成されます。
Podはユーザーが作成し、デプロイ可能なシンプルで最も最小のユニットです。単一のPodはクラスター上で稼働する単一のプロセスを表現します。Pod内では一つ以上のコンテナが起動します。
詳しくは下記をご覧ください。
https://kubernetes.io/ja/docs/concepts/workloads/pods/pod-overview/
Serviceはkube-proxyとPodの間を受け持つKubernetesクラスターのネットワーク部分に関わるオブジェクトです。今回はNodePortを用いります。
kubectlに紐付ける
作成したConfigをkubernetesに紐づけるには、下記のコマンドを叩きます。
kubectl apply -f ファイル名
# 確認はこちら
kubectl get services
kubectl get pods
MinnikubeはVM上で起動しているため、ブラウザで開くためにはVMのIPアドレスを知る必要があります。IPアドレスは下記コマンド取得します。
minikube ip
ここで取得したIPアドレスとnodePortを入れたアドレスへアクセスするとブラウザに反映されます。
http://IPアドレス:nodePort/
以上になります。