minikubeで外部ブラウザーからクラスター内のコンテナーWEB検証を行う場合のやり方
2021/11/24
2022/01/01

LinuxでKubernetesの実験を行う場合minikubeが利用できますが、minikubeは基本的にクラスター内のコンテナ検証で外部アクセスIPを発行できないので特殊な方法で検証を行う必要があります。このやり方は複数あります。
- NodePortモード
- RoadBalancerモード
- PODダイレクト/サービスダイレクト
NodePortモード
サービスマニフェストファイルでNodePortを指定している場合にできる方法です。minikubeでサービス名を指定します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# vi service.yaml apiVersion: v1 kind: Service metadata: name: rocky-linux spec: type: NodePort ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30080 selector: app: rocky-linux $ minikube service rocky-linux ブラウザーが自動起動しコンテンツ表示されます。 |
RoadBalancerモード
サービスにロードバランサーが指定されている場合はクラスターのIPで表示できる方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# vi service-lb.yaml apiVersion: v1 kind: Service metadata: name: rocky-linux spec: type: LoadBalancer ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30080 selector: app: rocky-linux $ kubectl apply -f service-lb.yaml $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d18h rocky-linux LoadBalancer 10.108.244.207 <pending> 80:30080/TCP 2d11h # minikube tunnel ブラウザーを起動してCLUSTER-IPへアクセスするとコンテンツが表示されます。この方法を使用する場合はkubectl get svcでもExternalIPにアドレスが表示されます。 $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d18h rocky-linux LoadBalancer 10.108.244.207 10.108.244.207 80:30080/TCP 2d11h |
PODダイレクト/サービスダイレクトでアクセスする場合です
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<<PODに向けてポートフォワーディングする場合>> $ kubectl apply -f kube-pod-deploy.yaml $ kubectl get pod NAME READY STATUS RESTARTS AGE rocky-linux-69f9b6db9d-2wl6q 1/1 Running 2 (2m42s ago) 2d11h rocky-linux-69f9b6db9d-7vhbm 1/1 Running 2 (25h ago) 2d11h rocky-linux-69f9b6db9d-sj95x 1/1 Running 2 (2m42s ago) 2d11h $ kubectl port-forward rocky-linux-69f9b6db9d-2wl6q 8080:80 ブラウザーから http://localhost:8080でアクセスしてみましょう。コンテンツが表示されます。 <<サービスに向けてポートフォワーディングする場合>> $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d18h rocky-linux NodePort 10.109.194.218 <none> 80:30080/TCP 9s $ kubectl port-forward svc/rocky-linux 8080:80 ブラウザーから http://localhost:8080でアクセスしてみましょう。コンテンツが表示されます。 |