Edited at

【k8s】Kubernetesやってみた【minikube】

004.png

kubernetesを触ってみたのでまとめてみました


目次


  1. 環境

  2. kubernetesについて

  3. minikube導入

  4. minikube起動

  5. ダッシュボードの起動

  6. サービスを作成してみる

  7. 後片付け

  8. 「Version string empty」エラーについて

  9. まとめ


環境


  • 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環境が利用できます。

001.png

002.png


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などが追加されているのがわかりますね。

003.gif


サービスを作成してみる

# 「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ファイルなどを定義して色々やってみようと思います。