なかに入りたい時
クラスタの中のAPIからMySQLに繋がらない時に、毎回ビルドしてデプロイしているとエラーも見にくいし死ぬほど時間かかるので、
サーバーレスじゃないメリットとして、本番の中に入ってごちょごちょできることが挙げられる。
例えばMySQLの場合だったら、
kubectl run --restart=Never mysql --image=mysql -- bash -c 'while true; do sleep 10000; done'
こんな感じで、Podを立てることができます。
このmysqlのなかに入りたいのであれば、
kubectl exec -it mysql bash
これで入れます。
APIサーバーのなかに入りたいとかだったら
まずは、どんなPodがあるのかを確認してください。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
altair-deployment-74bc9b84bf-4h4fm 1/1 Running 0 18d
altair-deployment-74bc9b84bf-tqqvx 1/1 Running 0 18d
regulus-deployment-5796dcfdb7-879xm 1/1 Running 0 18d
regulus-deployment-5796dcfdb7-rt5h8 1/1 Running 0 18d
sirius-deployment-c6d9fbdd4-8kz2j 1/1 Running 0 18d
sirius-deployment-c6d9fbdd4-smkcv 1/1 Running 0 18d
Podのなかに入るときは、
$ kubectl exec -it sirius-deployment-c6d9fbdd4-8kz2j ash
/go/src/github.com/Tech-Design-Inc/sirius #
で入れれます。
alpine linuxはbusyboxを元に作られていているらしいです。
https://stackoverflow.com/questions/35689628/starting-a-shell-in-the-docker-alpine-container
ashで入るので、気をつけてください。
alpineじゃないCentとかであれば、bashで入れます。
ログを確認したい時
本番でエラーが出たとかそういう時にとりまログみたいですよね。
そういうときは、stern
を使うとめっちゃいいです。
kubectl logs -f
を使うと別のPodのログが別々に取れるので、見にくくてしょうがないんですよ。
sternは名前にマッチするやつ全部返してくれるので、サービス名で検索すれば、全部ヒットします。
そこが強いです。
$ brew install stern
$ stern sirius
使い方はこんな感じです。
マッチするすべてのPodのログが色付きで見えます。