Johnman.md

プログラミングのことや個人的なことを書きます。たぶん。

Learn Kubernetes Basics 終えた【Deploy an App】

Kubernetesチュートリアル Learn Kubernetes Basics を一通りやったので、軽くメモした内容を書いておきます。

前回の記事はこれ。

johnmanjiro13.hatenablog.com

Deploy an App

ここでは次のことを学ぶ。

  • kubectl を使ったアプリケーションのデプロイ

シンプルですね。

Deployment

Kubernetes Cluster を準備したら、コンテナ化されたアプリケーションを Cluster 上にデプロイできる。

このデプロイ、ローリングアップデートなどを管理するのがDeployment。 デプロイされたインスタンスが停止・削除された場合には、Deployment Controller が同一 Cluster 内の別のノード上のインスタンスに置き換えてくれる。

デプロイの流れ

  1. アプリケーションのインスタンスを実行できる適切なノードを探す(利用可能なノードは1つだけ)
  2. ノード上でアプリケーションを動かすようスケジュールする
  3. 必要な場合は新しいノードでインスタンスを再スケジュールするようクラスタを設定する

各コマンド

  • kubectl run

    • Kubernetes 上でアプリを動かす
    • deployment name と Docker Hub の image location が必要
    • 必要に応じて port も設定する
  • kubectl get deployments

アプリケーションは Kubernetes 内で動いていて、同じ Cluster 内の Pod や Service からは見えるが、外からは見えない。kubectl を使えば、APIエンドポイントを通して公開することができる。

  • kubectl proxy
    • 通信をクラスタ全体のプライベートネットワークに転送するプロキシを作れる
    • (今回のチュートリアルでは)curl http://localhost:8001/version で叩ける
    • APIサーバは Pod 名に基づいてそれぞれの Pod で自動的にエンドポイントをつくる。これもプロキシ経由でアクセス可能

この結果、アプリケーションを Kubernetes 上にデプロイして公開し、curl で叩くところまでできるようになります。