4. Service によるアプリケーションの公開
このラボでは ネットワーキングと Service について学習します。
テキストを参照しながら各問題にチャレンジしてください。
必要があればウェブで調べても構いません。
ステップ 1: 問題 1/9
この環境に Serivice はいくつ存在しますか。
(Namespace default について)
- 0
- 1
- 2
- 3
Hints
kubectl get services コマンドを使用します。
短縮名を使用して kubectl get svc と書くこともできます。
Solution
kubectl get svc を実行します。
Answer
1
これは Kubernetes によって予め作成されているデフォルトの Service です。
ステップ 2: 問題 2/9
デフォルトの Service kubernetes のタイプは何ですか。
- ClusterIP
- NodePort
- LoadBalancer
- ExternalName
- None
Hints
kubectl get services コマンドを実行して、TYPE 列を確認します。
Answer
ClusterIP
ステップ 3: 問題 3/9
Service kubernetes に設定されている TargetPort はどれですか。
- 80
- 443
- 6443
- 8080
Hints
kubectl describe svc コマンドを使用します。
Solution
kubectl describe svc kubernetes | grep TargetPort を実行します。
Answer
6443
ステップ 4: 問題 4/9
Service kubernetes にはいくつの label が設定されていますか。
- 0
- 1
- 2
- 3
Hints
kubectl describe svc コマンドを使用します。
Solution
kubectl describe svc kubernetes を実行し、Labels フィールドを確認します。
Answer
2
ステップ 5: 問題 5/9
Deployment webapp の Pod で使用されているイメージは何ですか。
- nginx
- httpd:2.4-alpine
- qualia906/simple-webapp:red
- 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 番ポートにアクセスできます。
アプリケーションにアクセスできますか。
- YES
- 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 コマンドを実行します。
完了
チャレンジ完了!
お疲れ様でした!