0Pricing
Kubernetes Basics · レッスン

Serviceによるアプリの公開

Podに安定したネットワークエンドポイントを提供するServiceの役割を理解します。

「Serviceによるアプリの公開」はCoddyKit上の無料Kubernetes Basicsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKubernetes Basics学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kubernetes Basicsコースには全4レッスンが含まれています。

Pod: 今日存在しても明日は消える

Kubernetesにおいて、Podはデプロイ可能な最小単位です。Podは一時的な存在として設計されており、Kubernetesによっていつでも作成、破棄、移動される可能性があります。

この柔軟性は高い回復力につながりますが、課題も生じます。絶えず変化するPodを、他のアプリケーションがどのようにして確実に見つけ、通信すればよいのでしょうか。

変動する宛先の問題

すべてのPodには固有のIPアドレスが割り当てられます。Podが再起動またはスケールすると、通常は新しいIPアドレスが割り当てられます。PodのIPに直接接続するのは、動く標的を狙うようなものです。

複数のPodで構成されたWebアプリケーションを想像してください。1つのPodが再起動するとIPが変わり、他のサービスやユーザーからの接続が切れてしまいます。

Serviceが問題を解決

そこで登場するのがKubernetes Serviceです。Serviceは、Podの集合に対して安定した固定のネットワークエンドポイントを提供します。

背後にあるPodの個々のアドレスが絶えず変化していても、アプリケーションに恒久的な住所を提供するものだと考えてください。

Podの安定したゲートウェイ

Serviceは、Podのグループに対する抽象化レイヤーとして機能します。Podのグループに、単一で一貫したIPアドレスとDNS名を提供します。

  • 他のアプリケーションは、この安定したServiceのIPまたは名前を使用します。
  • Serviceは、管理対象の正常なPodへトラフィックをルーティングします。
  • これにより、クライアントと個々のPodのIPが切り離されます。

ServiceとPodの接続

Serviceは、どのPodへトラフィックをルーティングするかをどのように判断するのでしょうか。ラベルとセレクターを使用します。

Serviceを定義するときに、selectorを指定します。これらのラベルに一致するPodは、自動的にそのServiceのグループに加わります。

この動的な関連付けにより、新しいPodは自動的に追加され、正常でないPodは削除されます。

ネットワークトラフィックの振り分け

Serviceは、ネットワークトラフィックの流れを管理します。ポートを定義し、受信したリクエストをPod上の正しいポートへ割り当てます。

主なポートの概念:

  • port: Service自体がリッスンするポートです。
  • targetPort: Serviceがトラフィックを転送するPod上のポートです。

Serviceマニフェストの作成

ほとんどのKubernetesリソースと同様に、ServiceはYAMLファイルを使って定義します。基本的な構造を見てみましょう。

  • apiVersion: v1
  • kind: Service
  • metadata: 名前、ラベル
  • spec: selectorやportsを含む、主要な定義を記述します。

最初のService: ClusterIP

内部通信で最も一般的なServiceタイプはClusterIPです。クラスター内部のIPアドレスでServiceを公開します。

シンプルなWebアプリケーションの例を見てみましょう。

apiVersion: v1
kind: Service
metadata:
  name: my-web-service
spec:
  selector:
    app: my-webapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: ClusterIP

Serviceのデプロイ

ServiceのYAMLを用意したら、PodやDeploymentの場合と同じように、kubectlを使ってクラスターにデプロイできます。

このコマンドは、定義に基づいてServiceを作成するようKubernetesに指示します。

kubectl apply -f service.yaml

新しいServiceの利用

デプロイ後、Serviceにはクラスター内で安定したIPとDNS名が割り当てられます。これで他のPodから、この名前を使ってアプリケーションにアクセスできます。

たとえば、別のPodはmy-web-service:80に接続でき、Serviceが正しいmy-webapp Podへルーティングします。

Serviceの確認

Kubernetes Serviceが、変化するPodへの安定したネットワークアクセスを提供することを学びました。

Kubernetes Serviceの主な役割を最もよく表しているものは、次のうちどれですか。

まとめ: 安定した接続

よくできました。このレッスンでは、Kubernetes Serviceについて学びました。

  • Podは一時的な存在で、IPが動的に変化します。
  • ServiceはPodに対して安定したネットワークエンドポイントを提供します。
  • セレクターを使って対象のPodを見つけます。
  • Serviceは外部のportを内部のtargetPortに割り当てます。
  • ClusterIPは内部通信でよく使われるタイプです。

次は、さまざまなServiceタイプとその用途について詳しく学びます。

よくある質問

「Serviceによるアプリの公開」レッスンは無料ですか?

はい。「Serviceによるアプリの公開」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kubernetes Basicsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kubernetes Basicsコースには全4レッスンが含まれています。

「Serviceによるアプリの公開」で何を学びますか?

Podに安定したネットワークエンドポイントを提供するServiceの役割を理解します。 ブラウザで直接実行するハンズオンコードでKubernetes Basicsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Kubernetes Basicsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのKubernetes Basicsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「Serviceによるアプリの公開」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このKubernetes Basicsレッスンでコードを書いて実行できますか?

はい。すべてのKubernetes Basicsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Serviceによるアプリの公開
  2. Serviceタイプ:ClusterIP、NodePort、LoadBalancer
  3. 外部アクセスのためのIngress
  4. DNSとサービスディスカバリ
← Kubernetes Basicsに戻る