Kubernetesは「クーベネティス」と読むみたいです。人とお話するとき、読み方が間違ってないかドキドキしますよね。
Kuberbetes って何?
Kuberbetes は、コンテナ化したアプリケーションのデプロイ、スケーリング、管理を行うためのコンテナオーケストレーションプラットフォームです。
今はオープンソースですが、元々Googleが設計したプラットフォームです。12 年以上、あのGmail、YouTubeのサービスを支えてきた縁の下の力持ちです。実績としては十分です。
ん!?待って待って、コンテナって何?オーケストレーションって何??ってなりますよね。僕もついこの間までそうでした。次から次へと初めての用語がでてきて、手を動かすまでに挫折してしまいそうでした。なので、ここでは、まず手を動かす!スタイルにしたいと思います。今回は細かいことはほっといて、何はともあれ、まず動かしてみましょう。
Docker for Windowsは無償版のCommunity Editionを使用します。
ローカル環境
- Windows10
- Hyper-V(ハイパーV)※Windows10では標準機能です
BIOS設定
お使いのパソコンの BIOS で仮想化テクノロジーの使用機能を有効にする必要があります。お使いのPCメーカのBIOS設定に従って有効にしてください。
Docker for Windows インストール
環境構築
ダウンロード
下記のリンクからDocker Community Edition for Windows(無償版)をダウンロードします。
インストール
ダウンロードしたインストーラを実行してウィザードに従ってインストールします。
Docker for Windows 設定
タスクトレイの∧をクリック⇒クジラアイコンで右クリックのSettingsを選択します。
Shared Drivesを選択するとローカルのドライブが表示されるので共有するドライブをチェックします。
Kubernetesを選択して、「Enable Kubernetes」にチェック、default orchestratorは「Kunernetes」を選択して、「Apply」ボタンをクリックします。
Kunernetesのインストールが完了するとdocker、kubernetesが緑色になります。
Dockerのイメージ検索
NginxのDockerイメージを検索します。
1 |
docker search nginx |
パブリックに公開されているNginxのDockerイメージの一覧が表示されます。
Nginxコンテナをデプロイ
正しく設定できているかバージョン確認します。
1 2 3 |
kubectl version Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:17:39Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"windows/amd64"} Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:05:37Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"} |
クライアントとサーバのバージョンが表示されれば正常にインストール・設定されています。
1 2 |
kubectl run nginx --image=nginx --port=80 deployment.apps "nginx" created |
デプロイできたか確認します。
1 2 3 |
kubectl get deployment -o wide NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR nginx 1 1 1 1 28s nginx nginx run=nginx |
「AVAILABLE」が上のように1となっていればデプロイできています。
Nginxコンテナにアクセス
ローカルからNginxコンテナにアクセスできるようにします。
1 2 3 4 |
kubectl expose deployment/nginx --port=80 --target-port=80 service "nginx" exposed kubectl edit svc/nginx service "nginx" edited |
テキストがメモ帳で表示されるので、「type: ClusterIP」を「type: NodePort」に変更して保存してください。保存すると「service “nginx” edited」と表示されます。
割り当てられたポート番号を確認します。
1 |
kubectl get svc -o wide |
「NAME」がnginxの行のPORT(S)列に、「80:*****/TCP」と表示されている*****が割り当てられたポート番号です。下のURLの*****を割り当てられたポート番号に修正してください。
http://localhost:*****
NginxのWelcome to nginx!が表示されればデプロイしたNginxコンテナにアクセスできています。
冒頭でお伝えしましたが今回はコンテナオーケストレーションプラットフォームであるKubernetesを使ってDockerコンテナのデプロイを体験していただきたかったので、詳細は割愛しています。でもこれだけだと、何が嬉しいの??って感じですよね。なのでKubernetesを使うと、どんな嬉しいことがあるのかという目線で、且つ僕も勉強しながらなので特に、ここがよく分からない、つまずいた、という点を踏まえながら継続して紹介できればと思っています。
後はパブリッククラウドのAzure、AWSでのKubernetesサービスの動向もあわせてチェックしていこうかと思います(GCPは本家なので)
因みにKubernetesの可能性に魅せられてAzure、AWSは今年本格サービスインしています。
今回でローカル環境は作成できたので準備は万端です。
次回は、そもそもDockerコンテナって何なの??を予定しています。僕のようにWindowsは多少分かるけど、Linuxは・・・難しくてよく分からない。。。という人の目線で紹介したいと思います。
Docker のうれしいことについては、↓ こちらです。
Kubernetes のうれしいことについては、↓ こちらです。
あ、余談ですがホットな話題としては、IBMがRedHatを買収しましたね。僕の中ではRedHatといえばOpenShift(Docuker+Kubernetesを拡張)です。このあたりも別の機会に。しかし、これで、ますますパブリッククラウドが激戦状態になるのかな。激戦の結果、料金が下がってくれればありがたいですけどね。
おススメ書籍
技術本を読むなら Kindle がおすすめです。こちらの記事をご覧ください。
1.6,5 のバージョンで解説(リポジトリ、注釈は翻訳時の最新1.9で更新)されています。バージョンは少し古いですが、初心者の入門書(おえるべきポイントはしっかり網羅されてる)としては、途中で挫折しない適度なボリューム(本の厚さ)で、とっかかりとしては良い本になっています。
僕は「入門 Kubernetes」⇒「Kubernetes完全ガイド」(現在進行形)という進み方をしていますが、より本番環境を想定した方法を学べます。特にWeb 系だと、https で使用する Ingress リソースなどもしっかり説明してくれています。「入門 Kubernetes」には、詳しい説明がなかったので個人的にはすごく助かっています。
コンテナオーケストレーションプラットフォームである Kubernetes を学ぶときには、どうしても Docker の知識が必要となってきます。それをまとめているのが、この本です。途中で挫折しない適度なボリューム(本の厚さ)で、とっかかりとしては良い本になっています。