Serviceによるアプリケーションの公開
アプリケーションにアクセスできるようにする、ClusterIP、NodePort、LoadBalancerなどのKubernetes Serviceの種類を学びます。
「Serviceによるアプリケーションの公開」はCoddyKit上の無料Docker & Kubernetes for Developersレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & Kubernetes for Developers学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & Kubernetes for Developersコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
What are K8s Services?
When you deploy applications in Kubernetes, your Pods can come and go. They get new IPs, they scale up or down, and they might even crash and restart.
This creates a challenge: how do other parts of your application, or external users, consistently find and communicate with these ever-changing Pods?
Services: Stable Access Point
Kubernetes Services solve this problem by providing a stable network abstraction over a set of Pods. Think of a Service as a single, unchanging IP address and DNS name for your application.
- Services act as load balancers, distributing traffic to healthy Pods.
- They ensure your application remains reachable even if individual Pods change or fail.
How Services Find Pods
Services don't directly manage Pods. Instead, they use labels and selectors to find the Pods they should route traffic to. When a Pod matches a Service's selector, it becomes an endpoint for that Service.
- Labels: Key-value pairs attached to objects (like Pods) for identification.
- Selectors: Rules defined in a Service to match Pod labels.
ClusterIP: Internal Only
The ClusterIP Service type is the default. It exposes the Service on an internal IP address within the cluster. This means the Service is only reachable from inside the cluster.
It's perfect for internal communication between different services in your application, like a frontend talking to a backend database.
ClusterIP Service Example
Here's a YAML definition for a ClusterIP Service. It targets Pods with the label app: my-app and exposes port 80, routing traffic to container port 8080.
Apply it with kubectl apply -f service.yaml.
apiVersion: v1
kind: Service
metadata:
name: my-app-clusterip
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIPNodePort: External via Node IP
A NodePort Service opens a specific port on all worker nodes in your cluster. External traffic can reach your Service by contacting any node's IP address on that specific port (e.g., NodeIP:NodePort).
This is useful for exposing services to the outside world, especially in small setups or for development, without needing a cloud load balancer.
NodePort Service Example
This NodePort Service will expose port 80 of your application on a high port (typically 30000-32767) on every node. You can specify a nodePort or let Kubernetes assign one.
After applying, find the assigned port with kubectl get svc.
apiVersion: v1
kind: Service
metadata:
name: my-app-nodeport
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30007 # Optional: K8s assigns if omitted
type: NodePortLoadBalancer: Cloud Integration
A LoadBalancer Service is primarily used when running Kubernetes on a cloud provider (like AWS, GCP, Azure). It automatically provisions an external cloud load balancer.
This provides a dedicated, stable external IP address and often integrates with cloud-specific features like SSL termination and advanced routing.
LoadBalancer Service Example
When deployed on a cloud provider, this Service will automatically create and configure an external load balancer, assigning it an external IP address.
The external IP will be visible via kubectl get svc once provisioned.
apiVersion: v1
kind: Service
metadata:
name: my-app-loadbalancer
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancerService Type Overview
Let's quickly compare the primary Service types:
- ClusterIP: Internal access only, within the cluster.
- NodePort: External access via a specific port on each node.
- LoadBalancer: External access via a cloud provider's load balancer, stable external IP.
Choosing the right type depends on whether your application needs to be accessible internally or externally, and your deployment environment.
Service Type Quiz
Which Kubernetes Service types provide a direct mechanism for external traffic to reach applications running inside the cluster?
Recap: Exposing Apps
Great job! You've learned how Kubernetes Services abstract network access to your Pods and make your applications reachable. We explored three main types:
- ClusterIP: For internal-only communication within the cluster.
- NodePort: Exposes services on a static port across all nodes for external access.
- LoadBalancer: Integrates with cloud providers to provision an external load balancer, providing a stable external IP.
Understanding these Service types is fundamental for designing accessible and robust applications in Kubernetes.
AI チューターと学ぶ Docker & Kubernetes for Developers — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「Serviceによるアプリケーションの公開」レッスンは無料ですか?
はい。「Serviceによるアプリケーションの公開」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & Kubernetes for Developersコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & Kubernetes for Developersコースには全4レッスンが含まれています。
「Serviceによるアプリケーションの公開」で何を学びますか?
アプリケーションにアクセスできるようにする、ClusterIP、NodePort、LoadBalancerなどのKubernetes Serviceの種類を学びます。 ブラウザで直接実行するハンズオンコードでDocker & Kubernetes for Developersを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Docker & Kubernetes for Developersを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDocker & Kubernetes for Developersは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Serviceによるアプリケーションの公開」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDocker & Kubernetes for Developersレッスンでコードを書いて実行できますか?
はい。すべてのDocker & Kubernetes for Developersレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Kubernetes Deploymentを理解する
- Serviceによるアプリケーションの公開
- アプリケーションのスケーリングと自己修復
- ローリングアップデートとロールバック