クラスタ外から ClusterIP の Service に いい感じにアクセスする / How to connect to ClusterIP Service from the outside of Kubernetes cluster

9f9df80ab6551776b49c4ad9432ba1b7?s=47 Kazuki Suda
November 27, 2019

クラスタ外から ClusterIP の Service に いい感じにアクセスする / How to connect to ClusterIP Service from the outside of Kubernetes cluster

【前夜祭】CloudNative Days Kansai 2019 Meetup / https://cloudnativedays.connpass.com/event/152321/

9f9df80ab6551776b49c4ad9432ba1b7?s=128

Kazuki Suda

November 27, 2019
Tweet

Transcript

  1. 【前夜祭】CloudNative Days Kansai 2019 Meetup (2019/11/27) Kazuki Suda, @superbrothers クラスタ外から

    ClusterIP の Service に いい感じにアクセスする
  2. Kazuki Suda / @superbrothers ▶ Kubernetes Meetup Tokyo, Prometheus Tokyo

    Meetup, Cloud Native Deep Dive 共同主催者 ▶ Kubernetes Active Contributor ▶ CNCF Ambassador
  3. Kubernetes Service リソース ▶ 仮想 IP とポート ▶ L4 ロードバランサに相当

    ▶ いくつかのタイプ + ClusterIP (Internal) + NodePort + LoadBalancer (External) + Service my-svc タイプ: ClusterIP
 セレクタ: app=nginx ポート: 8080/tcp→80/tcp clusterIP: 10.0.171.239 Pod A Pod B ReplicaSet app: nginx app: nginx
  4. ClusterIP で作成した Service にクラスタ外からアクセスしたい ▶ がしかし、ClusterIP はクラスタ内からしかアクセスできない

  5. アクセスできないならじゃあどうする $ kubectl port-forward svc/nginx $ kubectl run busybox --rm

    --it --image=busybox --restart=Never \
 --command -- wget -O- nginx
  6. でもやっぱりクラスタ外からいい感じにアクセスしたい Service リソースの proxy サブリソース

  7. Kubernetes Service proxy サブリソース ▶ /api/v1/namespaces/<namespace>/services/<scheme>:<service>:<port>/proxy

  8. $ kubectl proxy & $ curl 127.0.0.1:8001/api/v1/namespaces/default/services/nginx/proxy/

  9. Service proxy サブリソースをもっともいい感じに使いたい ▶ kubectl open-svc プラグイン

  10. None
  11. # Open service/nginx in namespace/default $ kubectl open-svc nginx -n

    default
  12. # How to install kubectl open-svc plugin $ kubectl krew

    install open-svc * https://github.com/kubernetes-sigs/krew