0Pricing
Docker & DevOps Fundamentals · レッスン

ネットワークアクセスのためのService

さまざまなKubernetes Serviceタイプを使用して、クラスター内外からアプリケーションにアクセスできるようにします。

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

Kubernetes Serviceとは

Kubernetesでは、Podがデプロイ可能な最小単位です。Podは一時的なものとして設計されているため、いつでも作成、削除、置換される可能性があり、そのたびに新しいIPアドレスが割り当てられることもあります。

このように動的に変化するため、ほかのアプリケーションがPodを確実に見つけて通信するのは困難です。そこで登場するのがServiceです。

ネットワークアクセスのためのService — イラスト1

安定したネットワークアクセスの提供

KubernetesのServiceは、Podの集合に対する安定したネットワークエンドポイントとして機能します。背後にあるPodが変わっても変化しない、固定のアドレスのようなものです。

  • Serviceは一貫したIPアドレスとDNS名を提供します。
  • 複数のPodに対してトラフィックをロードバランシングできます。
  • Podのスケールや再起動が発生しても、継続的な可用性を確保します。

PodとServiceの接続

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

Podを作成するときに、app: my-appのようなラベル(キーと値のペア)を割り当てます。Serviceでは、これらのラベルに一致するセレクターを指定し、動的な接続を作成します。

ClusterIPによる内部アクセス

ClusterIPは、デフォルトで使用される最も一般的なServiceの種類です。Kubernetesクラスター内で安定した内部IPアドレスを割り当てます。このIPにアクセスできるのは、クラスター内部のほかのPodまたはNodeだけです。

データベースやAPIなど、アプリケーション内のほかのServiceとの通信だけが必要なバックエンドServiceに最適です。

ClusterIP Serviceの定義

以下は、ClusterIP Serviceの簡単なYAML定義です。selectorがラベルapp: my-backendと一致していること、またportがtargetPortに対応付けられていることに注目してください。

apiVersion: v1
kind: Service
metadata:
  name: my-backend-service
spec:
  selector:
    app: my-backend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080 # Port your application listens on
  type: ClusterIP

NodePortによる外部アクセス

NodePort Serviceは、各NodeのIPアドレス上にある固定ポートでアプリケーションを公開します。これにより、任意のNodeのIPアドレスと指定したポートを使って、クラスター外部からServiceにアクセスできます。

nodePortの値は通常、30000~32767の範囲です。簡単な外部アクセスや開発環境で役立ちます。

NodePort Serviceの定義

NodePortを介してServiceを外部に公開するには、type: NodePortを設定します。必要に応じてnodePortを指定できます。指定しない場合は、Kubernetesが自動的に選択します。

apiVersion: v1
kind: Service
metadata:
  name: my-frontend-service
spec:
  selector:
    app: my-frontend
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80 # Port your application listens on
      nodePort: 30080 # Optional: specific port on the Node
  type: NodePort

クラウドロードバランサー

LoadBalancer Serviceタイプは、クラウド環境向けに設計されています。このタイプのServiceを作成すると、クラウドプロバイダー(AWS、GCP、Azureなど)が外部ロードバランサーを自動的にプロビジョニングします。

このロードバランサーにはパブリックIPアドレスが割り当てられ、外部トラフィックをPodに直接ルーティングします。多くの場合、SSL終端などの高度な機能も利用できます。

LoadBalancer Serviceの定義

クラウド上のKubernetesクラスターで一般公開するアプリケーションには、LoadBalancerが最適な選択肢です。外部アクセスの管理を大幅に簡単にできます。

apiVersion: v1
kind: Service
metadata:
  name: my-web-app-lb
spec:
  selector:
    app: my-web-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

適切なServiceの選択

チームがKubernetesに新しいアプリケーションをデプロイしようとしています。次のシナリオを考えてみましょう。

  • クラスター内のほかのServiceからのみアクセスされるバックエンドAPI。
  • インターネットからアクセスできる必要があり、クラウドプロバイダー(AWS、GCP、Azure)にデプロイするフロントエンドWebサーバー。

フロントエンドWebサーバーに最適なServiceタイプはどれですか?

まとめ:ネットワークアクセス用のService

KubernetesのServiceは、動的に変化するPodへの安定したネットワークアクセスを提供することを学びました。アプリケーション間の信頼性の高い通信に不可欠です。

  • ClusterIP:クラスター内部の通信専用です。
  • NodePort:各NodeのIPアドレス上にある固定ポートでServiceを公開し、特定の用途で外部からアクセスできるようにします。
  • LoadBalancer:クラウドプロバイダーと連携し、外部ロードバランサーをプロビジョニングして一般公開します。

アプリケーションをどのように公開するかを制御するには、適切なServiceタイプを選ぶことが重要です。

よくある質問

「ネットワークアクセスのためのService」レッスンは無料ですか?

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

「ネットワークアクセスのためのService」で何を学びますか?

さまざまなKubernetes Serviceタイプを使用して、クラスター内外からアプリケーションにアクセスできるようにします。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?

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

「ネットワークアクセスのためのService」レッスンにはどのくらい時間がかかりますか?

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

このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?

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

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

  1. ステートレスアプリのDeployment
  2. ネットワークアクセスのためのService
  3. ConfigMapsとSecrets
  4. Ingressと外部ルーティング
← Docker & DevOps Fundamentalsに戻る