kubernetesを触ってみたのでまとめてみました
##目次
- 環境
- kubernetesについて
- minikube導入
- minikube起動
- ダッシュボードの起動
- サービスを作成してみる
- 後片付け
- 「Version string empty」エラーについて
- まとめ
##環境
- MacBook Pro (Retina, 15-inch, Mid 2015)
##kubernetesについて
kubernetesというのは「コンテナを運用しやすくするオープンソースなプラットフォーム」です。
最近よく耳にするkubernetesですが、色々な環境があるんですねー。
よく耳にするものですと「minikube」でしょうか。
こちらは手元のローカル環境で動作させやすいkubernetesで、冗長性の担保はされてないですが動作が軽快だそうです。
minikubeのように手軽に試せる環境として「micro-k8s」、Iot(ラズパイなど)用のさらに軽量な「k3s」があります。
クラウド上のKubernetesとして、「GKS(Googleさん)」、「ACS(Microsoftさん)」、「EKS(Amazonさん)」が提供されており、共通の特徴としてWebGUIでコンテナを管理できます。
Macユーザーだと「Docker for Mac」を利用している方が多いのではないでしょうか。
「Docker for Mac」では設定を行うことでkubernetes環境が利用できます。
##minikube導入
minikubeを利用してkubeってみましょう。過去に導入したものなので当時の導入手順は覚えてません。
がしかし、brew list
コマンドで結果が返ってくるので恐らくbrewコマンドで導入したのだと思います。
うろ覚え申し訳ないです。
$ brew list | grep kube
kubernetes-cli
$ brew cask list | grep kube
minikube
下記リンクの手順で導入できるかと思います。
##minikube起動
VMにvirtualBoxを指定してminikube起動
$ minikube start --vm-driver=virtualbox
$ minikube status
##ダッシュボードの起動
# 下記コマンドでダッシュボード起動(ブラウザが開きます)
# minikubeのダッシュボードはターミナルで「Ctrl+c」で停止できます
$ minikube dashboard
$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080
「hello-minikube」を起動するコマンドを実行し、ブラウザにてダッシュボードのリロードを行うと「hello-minikube」のPodなどが追加されているのがわかりますね。
##サービスを作成してみる
# 「hello-minikube」を外部アドレスから参照できるようにする
$ kubectl expose deployment hello-minikube --type=NodePort
## 各種情報を確認してみる(ダッシュボードと同じ情報が出力されます)
$ kubectl get services
$ kubectl get pod
$ kubectl get deployments
##後片付け
ダッシュボードで作業しても良いですが、せっかくなのでコマンドでお掃除してみましょう。
# サービスの削除
$ kubectl delete services hello-minikube
# デプロイの削除
$ kubectl delete deployment hello-minikube
# minikubeの停止
$ minikube stop
##「Version string empty」エラーについて
minikube start
した際にエラーが出ますが、issueを見た感じだと、バグのようです。
とりあえずは正常に動作するようなのでそのまま進めます。 ←エラー出るの気持ち悪いので詳しい方いましたらご指摘ください
$ minikube start
~~中略~~
E0710 15:47:42.634326 85156 start.go:210] Error parsing version semver: Version string empty
~~中略~~
Everything looks great. Please enjoy minikube!
##まとめ
今回は触りの部分だけ実践しましたが、やはり学習コストが高い印象。。。Dockerは割と取っ付きやすかったが。。。
慣れて管理工数が減れば両手を挙げて喜べますが、本番運用への道のりは長くなりそうですw
次回の記事ではymlファイルなどを定義して色々やってみようと思います。