Kubernetes ハンズオン演習
ホーム
ホーム
  • 0. ラボの使い方
  • 1. kubectl コマンドを使ってみる
  • 2. マニフェストファイルによる Pod の操作
  • 3. Deployment
  • 4. Service によるアプリケーションの公開
  • 5. デプロイ戦略
  • 6. PersistentVolume と StatefulSet の使用

4. Service によるアプリケーションの公開

このラボでは ネットワーキングと Service について学習します。

テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。

ステップ 1: 問題 1/9

この環境に Serivice はいくつ存在しますか。
(Namespace default について)

  1. 0
  2. 1
  3. 2
  4. 3
Hints

kubectl get services コマンドを使用します。
短縮名を使用して kubectl get svc と書くこともできます。

Solution

kubectl get svc を実行します。

Answer

1

これは Kubernetes によって予め作成されているデフォルトの Service です。

ステップ 2: 問題 2/9

デフォルトの Service kubernetes のタイプは何ですか。

  1. ClusterIP
  2. NodePort
  3. LoadBalancer
  4. ExternalName
  5. None
Hints

kubectl get services コマンドを実行して、TYPE 列を確認します。

Answer

ClusterIP

ステップ 3: 問題 3/9

Service kubernetes に設定されている TargetPort はどれですか。

  1. 80
  2. 443
  3. 6443
  4. 8080
Hints

kubectl describe svc コマンドを使用します。

Solution

kubectl describe svc kubernetes | grep TargetPort を実行します。

Answer

6443

ステップ 4: 問題 4/9

Service kubernetes にはいくつの label が設定されていますか。

  1. 0
  2. 1
  3. 2
  4. 3
Hints

kubectl describe svc コマンドを使用します。

Solution

kubectl describe svc kubernetes を実行し、Labels フィールドを確認します。

Answer

2

ステップ 5: 問題 5/9

Deployment webapp の Pod で使用されているイメージは何ですか。

  1. nginx
  2. httpd:2.4-alpine
  3. qualia906/simple-webapp:red
  4. localhost:5000/httpd
Hints

kubectl describe deployment コマンドを使用します。

Solution

kubectl describe deployment webapp コマンドを実行して Image フィールドを確認します。

Answer

qualia906/simple-webapp:red

ステップ 6: 問題 6/9

この simple-webapp アプリケーションは 8080 番ポートでリクエストを受け付けます。
以下のリンクからこのノードの 8080 番ポートにアクセスできます。

アプリケーションにアクセスできますか。

  1. YES
  2. NO
Answer

NO

アプリケーションにアクセスするための Service が構成されていないためアクセスできません。

ステップ 7: 問題 7/9

/root/manifests ディレクトリ下に service-definition-1.yaml を用意しました。
このマニフェスト ファイルを使用して、Deployment webapp のアプリケーションにアクセスするための Service を作成します。

ただし、このマニフェスト ファイルは不完全です。
以下の情報に基づいてマニフェスト ファイルを修正した上で Service を作成してください。

  • Service 名:webapp-service
  • type: NodePort
  • targetPort: 8080
  • port: 8080
  • nodePort: 30080
  • selector: Deployment webapp (あるいは Pod) の Labels を参照します
Solution

/root/manifests/service-definition-1.yaml を以下のように更新します。

apiVersion: v1
kind: Service
metadata:
  name: webapp-service
  namespace: default
spec:
  ports:
  - nodePort: 30080
    port: 8080
    targetPort: 8080
  selector:
    app: webapp
  type: NodePort

kubectl apply -f /root/manifests/service-definition-1.yaml を実行して Service を作成します。

ステップ 8: 問題 8/8

以下のリンクからこのノードの 30080 番ポートにアクセスできます。
今度はアプリケーションにアクセスできることを確認してください。

ステップ 9: 問題 9/9

Deployment backend-redis を新たに作成しました。
クラスタ内のアプリケーションからアクセスできるように、以下の設定で Service を構成して backend-redis を公開してください。
(※ マニフェスト ファイルは使用せず、命令型コマンドで実行してください)

  • Service 名: redis-service
  • type: ClusterIP
  • port: 6379
Hints

kubectl expose deployment コマンドを使用して、Deployment を公開できます。

Solution

kubectl expose deployment backend-redis --type=ClusterIP --port=6379 --name=redis-service コマンドを実行します。

完了


チャレンジ完了!

お疲れ様でした!

Prev
3. Deployment
Next
5. デプロイ戦略