apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
type: LoadBalancer
AWSやGCPなどのプラットフォームが提供するKubernetesの説明では、外部との通信にグローバルIPアドレスが割り当てられるロードバランサー(LB)が利用されています。
このk8sクラスターでは、MetalLBを利用して、192.168.100.160-199/24の範囲のIPアドレスを割り当てることができます。
192.168.100.0/24のアドレスを割り当てたLBは、演習室などのゼミ室10以外からはアクセスすることができません。
2021年からは、LBよりもIngressの利用 svc/<username>-svc
(e.g. svc/s12xxxxx-svc) を推奨しています。
1. 基本的な使い方
公式サイト、kubernetes.io公式::Service#LoadBalancer、では、"app: MyApp"というlabelが設定されたPodの9376ポートに通信を転送するService定義が紹介されています。
-
name:は分かりやすい任意の名前にします。
-
selector:にはPodのmetadata.labelsに設定されている値を指定します。
-
port:には外部から接続させたいポート番号を指定します。
-
targetPort:にはPodが利用しているポート番号を指定します。
自分のPodにネットワーク経由でのアクセスを許可したい場合には、この定義をコピーして上記4つのパラメータを適宜変更してください。
011.永続記憶領域で準備したnginx-nfsのService定義にtype: LoadBalancerを追加すると、192.168.100.x/24のIPアドレスでアクセスすることができるようになります。