今流行りのkubernetesを使えるようになりたいと思い、kubernetesについて勉強しました。勉強した内容を記事にしてみたいと思います。
kubernetesについてはド素人なので、詳細の情報は載せていませが、kubernetesを動作させるところまでの内容を書いていきます。
目次
Azure kubernetes Service(AKS)について勉強してみた
まず、kubernetsをいじる前にそもそも kubernets が何者なのかざっくり理解しようと思いました。名前くらいは聞いたことあるくらいの知識でしたので、まずはネットやyoutubeで解説している物を探しました。その中で、一番理解しやすかった動画を紹介します。
IBMのエンジニアの方が分かりやすく解説してくれました。 kubernetesの前提となる知識のコンテナやDockerについて理解することができました。
ざっくり、内容を解説すると、
コンテナ→仮想化技術の一つ。従来の仮想化技術よりも効率がよい。
Docker→コンテナを作るツール
kubernetes→コンテナを管理するツール
サーバーのスケーリングやアプリの更新、ロールバックが簡単に行え、サービスを停止することなく継続的にサービスを提供することができます。動画ではそのデモ映像もあるのでとても分かりやすいです。内容を理解したところで、実際にAzureでkubernetesを使ってみたいと思います。
Azure Kubernetes Service (AKS) を使ってみる
Azureではkubernetesをサービスとして提供しています。そのAzure Kubernetes Service略してAKSを使ってみたいと思います。
AKSの作成方法、接続方法はこちらのMicrosoftのドキュメントに記載されているのでこちらを参考にしました。
クイック スタート:Azure portal を使用して Azure Kubernetes Service (AKS) クラスターをデプロイする
ざっくりと流れを説明します。
①ポータルサイトでkubernetesを作成する
②Azureのコマンドラインでコマンドを入力して状態の確認
③定義ファイルを実行してアプリを作る。
ドキュメント通りに進めると、以下の投票アプリが作成できます。
Azure Kubernetes Service のチュートリアルで理解する
使ってみただけでは、動きが全く理解できないので、Azureのチュートリアルをやって理解を深めようとおもいました。チュートリアルでは、以下の7項目がありました。
- 1 – AKS 用にアプリケーションを準備する
- 2 – コンテナー レジストリを作成する
- 3 – Kubernetes クラスターを作成する
- 4 – アプリケーションを実行する
- 5 – アプリケーションのスケールを変更する
- 6 – アプリケーションを更新する
- 7 – クラスターをアップグレードする
AzureCLIでDockerのコマンドを入力すると、”docker-compose: command not found”とエラーがでてしまいました。Dockerの開発環境で動かさないとダメみたいですね。以下からDockerの拡張機能入りのLinux仮想マシンをインストールして、Linux上でコマンドを実行しましょう。
Ubuntu 上に Docker をデプロイするクイック スタート テンプレート
ちなみに↑のLinuxで “docker-compose up -d”のコマンドを入力すると、
ERROR: Version in “./docker-compose.yaml” is unsupported. Either specify a version of “2” (or “2.0”) and place your service definitions under the services
key, or omit the version
key and place your service definitions at the root of the file to use version 1.
とエラーが表示されます。 docker-compose.yaml
の1行目のversionを2に変更すると正常に動作します。
チュートリアルをやってみると一通りの動きを理解することはできます。確かに過去の開発スタイルしか経験してこなかった私からすると、とても便利になったなと感じます。ただ、まだまだ使いこなせていないと思うのでもっと勉強も必要だと実感しました。
まとめ
kubernetesを初めて動かしてみました。概要など、動画を見たりやチュートリアルで動かしてみたりすると何となく理解できました。Dev/Opsでの開発が主流になっている現在では、kubernetesやDockerといった様々なツールを使いこなす必要があります。なので、日ごろからの勉強が必要だなーど実感しました。また、IBMの動画の中でもありましたが、インフラの知識だけでなくアプリ側の知識も蓄えないと今後のスピードに追い付いていけないですね。