Kubernetes on Minikube/HyperKit

備忘録。

KubernetesMinikube で試してみる。(ローカルでマルチノードクラスタを構築する場合は kind を使う)

$ minikube version
minikube version: v1.15.0

今回は HyperKit 上に Kubernetes を起動する。デフォルトは Docker が使われるっぽい。他には VirtualBox など。

$ minikube start --driver=hyperkit
$ minikube start # クラスタ作成済の場合はこっち

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

$ kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   42s   v1.19.4

$ kubectl version --short
Client Version: v1.19.3
Server Version: v1.19.4

Minikube クラスタ停止/削除。

$ minikube stop
$ minikube delete

リソース作成/更新。

$ kubectl apply -f <FILENAME>

Pod の詳細情報を表示する。

$ kubectl describe pod/<POD_NAME>

コンテナを起動して shell を使う。--rm オプションを付けるとコンテナ終了時に Deployment が削除される。

$ kubectl run alpine -it --rm --image alpine -- ash

ConfigMap, Secret は設定や Credential をコンテナイメージから分離する。値は Volume や環境変数を通して Pod に渡される。ConfigMap で UTF-8 に含まれないバイトシーケンスがある場合は binaryData フィールドを使う。値は Base64エンコードされる。

Secret で stringData フィールドを使う場合は Base64 エンコードは不要。適用の際にエンコードして data に渡される。

コンテナのヘルスチェックには LivenessProbe, ReadinessProbe を使う。LivenessProbe はコンテナの存否をチェックする。LivenessProbe が通らない場合はコンテナが再作成される。ReadinessProbe はコンテナが Ready かどうかをチェックする。ReadinessProbe が通らない場合は Service のルーティングから除外される。


今回はここまで。