あなたの初めての Kubernetes 実験

KubernetesKubernetesAdvanced
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

初めての Kubernetes 実験へようこそ!この実験では、コンテナ化されたアプリケーションを管理する強力なシステムである Kubernetes を紹介します。この実験が終わるまでに、最初の Kubernetes デプロイメントを作成し、それとやり取りするようになります。

コンテナやオーケストレーションに初めて触れる方も心配しないでください。進行につれて各概念を説明します。さあ、Kubernetes の世界への旅を始めましょう!

注意:この実験ではイメージのプルが必要ですが、無料ユーザーは実験環境からインターネットにアクセスできません。この実験は Pro ユーザー限定です。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 上級 レベルの実験の完了率は 46%です。学習者から 89% の好評価を得ています。

Kubernetes クラスタの起動

まずは、Minikube を使ってローカルの Kubernetes クラスタを作成しましょう。Minikube を使うと、コンピュータ上で単一ノードの Kubernetes クラスタを実行でき、学習や開発に最適です。

まず、ターミナルを開きます。/home/labex/project ディレクトリにいる必要があります。もし確認ができない場合は、次のコマンドを入力してこのディレクトリに移動できます。

cd /home/labex/project

次に、Minikube クラスタを起動しましょう。

注意:無料ユーザーはインターネットに接続できないため、実験を開始するときには minikube は既に事前に起動されています。この手順をスキップできます。独自にクラスタを起動する練習をするには、Pro ユーザーにアップグレード してください。

Pro ユーザー限定
minikube start
Minikube クラスタの初期化

このコマンドは、ローカルマシン上で Kubernetes クラスタを初期化します。背後で行われていることは次のとおりです。

  1. Minikube はコンピュータ上に仮想マシン(VM)を作成します。
  2. この VM 内に Kubernetes をインストールして設定します。
  3. コンピュータがクラスタと通信できるようにネットワークを設定します。

このプロセスには数分かかる場合があります。Minikube が動作する際に大量の出力が表示されます。すべてを理解できなくても心配しないでください。最後に「完了!」と表示されるメッセージが表示されるまで待つことが大切です。

最初のデプロイメントの作成

クラスタが稼働しているので、最初の Kubernetes デプロイメントを作成しましょう。デプロイメントは、同一のポッドのグループを管理する Kubernetes オブジェクトです。(心配しないでください。すぐにポッドが何かを説明します!)

単一の NGINX ウェブサーバーコンテナを実行するデプロイメントを作成します。この例では、人気のあるウェブサーバーである NGINX を使用します。

このコマンドを実行します。

kubectl create deployment hello-kubernetes --image=nginx:latest --port=80

これを分解してみましょう。

  • kubectl は Kubernetes とやり取りするためのコマンドラインツールです。
  • create deployment は Kubernetes に新しいデプロイメントを作成するように指示します。
  • hello-kubernetes はデプロイメントに与える名前です。
  • --image=nginx:latest は最新バージョンの NGINX Docker イメージを使用したいことを指定します。
  • --port=80 はコンテナがポート 80(ウェブトラフィックの標準ポート)で待ち受けることを Kubernetes に伝えます。

このコマンドを実行した後、次のように表示されるはずです。

deployment.apps/hello-kubernetes created

これは、Kubernetes が正常にデプロイメントを作成したことを意味します。では、具体的に何を行ったのでしょうか。

  1. Kubernetes は NGINX Docker イメージをダウンロードしました。
  2. ポッド(1 つ以上のコンテナのグループ)を作成し、その中に NGINX コンテナを起動しました。
  3. ポッドがポート 80 でアクセスできるようにネットワークを設定しました。

デプロイメントの調査

デプロイメントを作成したので、Kubernetes が私たちのために設定したものをもう少し詳しく見てみましょう。

まず、デプロイメントの状態を確認します。

kubectl get deployments

次のような出力が表示されるはずです。

NAME               READY   UP-TO-DATE   AVAILABLE   AGE
hello-kubernetes   1/1     1            1           2m

この出力は次のことを教えてくれます。

  • READY: 1/1 は、1 つの目的のポッドのうち 1 つが準備完了していることを意味します。
  • UP-TO-DATE: 1 は、1 つのポッドが最新のコンフィグレーションを実行していることを意味します。
  • AVAILABLE: 1 は、トラフィックを処理できる 1 つのポッドが利用可能であることを意味します。

次に、デプロイメントが作成したポッドを見てみましょう。

kubectl get pods

次のような出力が表示されるはずです。

NAME                                READY   STATUS    RESTARTS   AGE
hello-kubernetes-6b89d599b9-x7tpv   1/1     Running   0          3m

ポッド名は正確には異なりますが、「Running」の状態を持つ 1 つのポッドが表示されるはずです。このポッドには NGINX コンテナが含まれています。

実行中のポッドが表示されない場合は、1 分待ってから再度試してください。Kubernetes はまだポッドを作成中か、NGINX イメージをダウンロード中かもしれません。

ポッドに関するより詳細な情報を取得するには、次のコマンドを実行します。

kubectl describe pod hello-kubernetes-6b89d599b9-x7tpv

注意kubectl get pods の出力に表示されるポッド名に置き換えて hello-kubernetes-6b89d599b9-x7tpv を使用してください。

このコマンドは大量の情報を出力します。今すべてを理解する必要はありません。注目すべき重要なことは次のとおりです。

  • Status: 「Running」である必要があります。
  • IP: ポッドの内部 IP アドレス
  • Containers: ポッド内で実行されている NGINX コンテナに関する情報

この出力にエラーが表示された場合、それはポッドの問題を診断するのに役立ちます。

アプリケーションへのアクセス

デプロイメントが稼働しているので、展開した NGINX ウェブサーバーにアクセスしましょう。

通常の Kubernetes 環境では、デプロイメントをネットワークに公開するために Service を作成します。このローカル環境での簡略化のため、代わりにポートフォワーディングを使用します。

このコマンドを実行します。

kubectl port-forward $(kubectl get pods -o name) 8080:80

このコマンドは次のことを行います。

  • $(kubectl get pods -o name) はポッドの名前を取得します。
  • 8080:80 は、Kubernetes に対して、ローカルマシンのポート 8080 からポッド内のポート 80 にトラフィックを転送するように指示します。

出力は表示されませんが、コマンドは実行されたままになります。これは正常です!

次に、新しいターミナルウィンドウを開き、次のコマンドを実行します。

curl http://localhost:8080
NGINX のウェルカムページの表示

HTML コンテンツが表示されるはずです。これが NGINX のウェルカムページです!

HTML が表示されない場合:

  • ポートフォワーディングコマンドが他のターミナルでまだ実行されていることを確認します。
  • curl コマンドを正しく入力したことを確認します。
  • curl が機能しない場合は、Web ブラウザで http://localhost:8080 にアクセスしてみてください。

ポートフォワーディングを停止するには、元のターミナルウィンドウに戻り、Ctrl+C を押します。

クリーンアップ

素晴らしい仕事です!Kubernetes 上でアプリケーションを正常に展開してアクセスしました。では、リソースをクリーンアップしましょう。

まず、デプロイメントを削除します。

kubectl delete deployment hello-kubernetes

次のように表示されるはずです。

deployment.apps "hello-kubernetes" deleted

このコマンドは、Kubernetes に対してデプロイメントとそれに関連するすべてのリソース(ポッドも含む)を削除するように指示します。

デプロイメントとポッドが削除されたことを確認します。

kubectl get deployments
kubectl get pods

どちらのコマンドも「デフォルト名前空間にはリソースが見つかりません」と返すはずです。

まだリソースが表示される場合は、少し待ってから再度試してください。Kubernetes がまだ削除中かもしれません。

最後に、Minikube クラスタを停止します。

minikube stop

これにより Minikube 仮想マシンが停止しますが、クラスタの状態はマシン上に保持されます。後で minikube start で再開できます。

Minikube クラスタを完全に削除したい場合は、minikube delete を実行できます。ただし、今のところは必要ありません。

まとめ

おめでとうございます!この実験では、Kubernetes を使って初めての一歩を踏み出しました。以下のことを学びました。

  1. Minikube を使ってローカルの Kubernetes クラスタを起動する
  2. kubectl を使ってデプロイメントを作成する
  3. 作成したデプロイメントとそれが生成するポッドを調査する
  4. ポートフォワーディングを使って展開したアプリケーションにアクセスする
  5. リソースをクリーンアップしてクラスタを停止する

これらは、Kubernetes を使った作業の基礎となる基本的なスキルです。学習を続けるにつれて、これらの基本を基にして、より複雑なアプリケーションを作成し、より高度な Kubernetes の概念を理解していきます。

覚えておいてください。Kubernetes は強力で複雑なシステムです。一部の概念がまだ明確でなくても正常です。Kubernetes の学習は旅です。練習を続けることで、徐々に深い理解を築いていけます。Kubernetes の学習の旅で、ご成功を祈ります!