弊社でもdockerを使った開発がオーソドックス化してきた今、Kubernetesはやはり触っておくべきじゃないか?

と勝手に思った私は勝手にKubernetesを触り始めてみました!

入門書の中の更に入門する場所だけ切り取った記事にしてみましたので、休憩時間にでもどうぞ!

minikubeってなによ?

minikube | github

シングルノードなKubernetesを1コマンドでローカルにセットアップできるツールだそうです!シングルノードってなんだよ?って突っ込みもあると思いますが、一旦ここは置いといて先に進みましょう!

kubectl のインストール

Install and Set Up kubectl

Kubernetesを使うためのコマンドがないと始まらないので

$ curl -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl \
  && chmod +x kubectl \
  && sudo mv kubectl /usr/local/bin/

これでサクッと入れちゃう。versionを確認できれば多分もうOK。(ちなみに、この記事書いてるときはまだ、ver1.10だったので、それ使いましたが、2018-07-05時点での最新はver1.11です!)

% kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:55:54Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}

minikubeの準備と起動

  • VirtualBox
  • minikube

この2つが必要です。macならどちらもbrew caskでinstallできます。サクッといれちゃいましょう。

$ brew cask install minikube VirtualBox

installが無事できれば

$ minikube --vm-driver=virtualbox start

これで立ち上がります。便利〜〜。立ち上がっているかどうか確認する場合はminikube statusで確認できる

% minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.xxx.xxx

また~/.kube/configにいろいろな情報が書き込まれているのが確認できます。kubectl config get-contextsでそのconfigに設定された内容の一部を確認できるのですが

$ kubectl config get-contexts
CURRENT   NAME         CLUSTER      AUTHINFO     NAMESPACE
*         minikube     minikube     minikube

多分こんな感じになっているはず。今後AWSとかGoogle Cloudとかに備え付けてあるKubernetesを使う場合はこのconfigを増やしていくとkubectlコマンドでゴニョゴニョできるようになる感じです。

Dashboard(Web UI)を確認してみよう

$ minikube dashboard
$ minikube dashboard --url=true # dashboardのurlを出すならこれ。

とコマンドを叩くだけで簡単にブラウザ上で確認できます。

こんな感じ。かの有名なKubernetesが我が手のひらで動いておるわ...ククク

ノード?オブジェクト?ポッド....???

次のステップへ足を進めるためにも、参考サイトを見るも突然、呪文のようなワードが登場しさっきまでの達成感は露と霧散!🤕

Kubernetesが持つ概念を何一つ理解しなままコマンド叩いても「わーいhello worldできたー!」だけで終わってしまう!!

と、いうことでいきなりですが、単語を覚えてみましょう!

  • クラスター
  • ノード
  • オブジェクト

とりあえず、これ抑えとけば困らないです。(多分)

クラスター

Kubernetesが可動している1つのシステムのことを指します。

この中の一つ下の階層にマスターノードノードと呼ばれる存在が鎮座しています。

マスターノード & ノード

どちらも、役割を持ったマシン(サーバー)です。

マスターノードは、kubectlコマンドで指示を送っている場所になります。主にクラスター全体の管理を司っています。

ノードはオブジェクトをたくさん持つマシンです。ということで、最初にでたシングルノードっていうのは、このマシンの存在が単機ってことですね。

オブジェクト

kubectlコマンドでマスターノードに指示が来ると、マスターノードは設定されたノードのマシンリソースを見て、いい感じにオブジェクトを配置していきます。

このオブジェクトっていうのが、いろいろあります!その色々の役割をざっくり3つに分けると

  • ポッド
  • コントローラ
  • サービス

となるわけです。とりあえず最初は、ざっくり噛み砕いて説明すると
ポッドがDocker的な存在
コントローラーがそのDockerを動かす存在
サービスがロードバランサー的な存在
という認識で大丈夫だと思います。

それぞれymlで設定することができて、kubectlでymlを指定して、Kubernetesに指示を出すことでいろいろコンポーネントがよしなに動き、アーキテクチャが立ち上がっていく。ということなんですね!

ここまでくれば一安心。

今回は基本的にKubernetesを始めよう!というサイトを見ながら難しい単語を無視しつつKubernetesを始めて見た。という内容です。

つまり二番煎じってやつですね(`・ω・´)

ただ、こちらの記事よりより詳しく記載してありますので、Kubernetesに興味が出たらぜひ覗いてみてください!記事中に出てくるコマンドを順番に打つだけでもその大まかな流れがつかめると思います。

参考まとめ

Kubernetesを始めよう!

今回すーぱーお世話になった記事です。この記事をサク読みしたなら次はこのサイトがおすすめです!

minikube でローカルでのテスト用 Kubernetes を構築

minikubeを使うために参考にした記事です。

Kubernetes: 構成コンポーネント一覧 | Qiita

しっかりとKubernetesのアーキテクチャを捉えるのに便利。もっと詳しくなりたいなと思ったらおすすめ。

🖌 編集後記

あれ?このエンジニアブログ、全然技術の話してなくない...?

と思ったのでおもむろにKubernetesを触ってみましたが、いかがでしょう?

流石に他にいい記事がたくさんあったので、入門的な感じになっていれば幸いです。

それではまた。