Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
kindでも"type LoadBalancer"を使いたい! / kubernetes-me...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uesyn
October 24, 2019
Programming
1.7k
0
Share
kindでも"type LoadBalancer"を使いたい! / kubernetes-meetup-tokyo-24-kind-with-type-loadbalancer
Kubernetes Meetup Tokyo #24 の LTで使った資料です。
uesyn
October 24, 2019
More Decks by uesyn
See All by uesyn
PodSecurityPolicyの安全な移行の道のり / On the safe migration of PodSecurityPolicy
uesyn
1
1.2k
PodSecurityPolicyの廃止に備えて、 一足先にPodSecurity Admissionを試してみよう! / from-psp-to-podsecurity
uesyn
4
1.9k
Kubernetes v1.19 変更点調査のまとめ / k8s-v119-updates
uesyn
1
300
そのクラスタ本当にアップグレードして大丈夫? Storage Version の更新も忘れずにしよう! / k8s-storage-version-migration
uesyn
2
3.9k
次世代のログ基盤 Grafana Lokiを始めよう! / prometheus-meetup-tokyo-3-lets-start-the-loki
uesyn
7
15k
Loki入門
uesyn
8
2.7k
Cortexの話をKubeConで聞きたかったっていう話
uesyn
4
2.1k
kubernetesでGPUを 管理するために スケジューラをいじってみた
uesyn
2
3k
Other Decks in Programming
See All in Programming
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
220
関係性から理解する"同一性"の型用語たち
pvcresin
2
280
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
0
120
Spec-Driven Development with AI Agents (Workshop, May 2026)
antonarhipov
4
410
AI Agent と正しく分析するための環境作り
yoshyum
2
560
Are We Really Coding 10× Faster with AI?
kohzas
0
200
Cloudflare で始める Data Platform
ta93abe
0
200
色即是空、空即是色、データサイエンス
kamoneggi
1
140
サークル参加から学ぶ、小さな事業の回し方
yuzneri
0
210
サプライチェーン攻撃対策「層を重ねて落ちない壁」を10日間で組み上げた話 #TechLeadConf2026
kashewnuts
1
320
Skillは並べた。動かなかった。契約で繋いだ。— 65個のSkillから、自走する開発サイクルへ
junholee
0
680
ソースコード→AST→オペコード、の旅を覗いてみる
o0h
PRO
1
140
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
300
Large-scale JavaScript Application Architecture
addyosmani
515
110k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
54k
Believing is Seeing
oripsolob
1
130
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
790
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Being A Developer After 40
akosma
91
590k
YesSQL, Process and Tooling at Scale
rocio
174
15k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
Transcript
kindでも ”type LoadBalancer” が使いたい!
Profile 2 上村 真也 • 所属: Z Lab • Twitter: @uesyn
3
このスライドは個人の見解であり、 所属する組織の公式見解ではありません。 4
5 kind • DockerコンテナをノードとしてK8sクラスタを作成 ◦ マルチノードの構成も可能 • 詳しくは以下の@amsy810さんの資料を参照 ◦ “Kubernetes
in Docker で始めるお手軽 Kubernetes 環境” https://speakerdeck.com/masayaaoyama/cloudnativejp-09-kubernetes-in-docker-kind
6 "type LoadBalancer"なService • LoadBalancerとServiceをいい感じに繋ぐ • それぞれの環境にあった実装がなければ利用できない
7 • “type LoadBalancer”は利用できない ◦ Cloud Providerの実装やLBのコントローラを持ってないはず … • 設定しないと接続できるのはAPI
Serverのみ ◦ NodePortへの接続も設定が必要 kindと”type LoadBalancer” kindでも”type LoadBalancer”を使いたい!
“type LoadBalancer”な Serviceへのアクセス 8 “type LoadBalancerを…” 3. MetalLBを利用 4. カスタムコントローラを実装
1. NodePortとextraPortMappings 2. kubectl port-forward 諦める 諦めない
NodePortとextraPortMappings 9 • ホストとNodeコンテナのPortをマッピング ◦ NodePort経由でPodへ接続できる • Serviceを作るときNodePortを意識する必要 kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3 nodes: - role: control-plane - role: worker extraPortMappings: - containerPort: 80 hostPort: 80 listenAddress: "0.0.0.0" # Optional, defaults to "0.0.0.0" protocol: udp # Optional, defaults to tcp 諦める
kubectl port-forward 10 • API Server経由でNode上のPodへ ◦ TCPのみ対応 • Serviceも指定できるが...
◦ Service配下のどれか1つのPodへPortForward Pod1 Pod2 Pod3 K8s API Server kubectl port-forward 諦める 例) kubectl port-forward svc/test-service 10000:9000
MetalLBを利用 11 • Linux環境であればMetalLBのL2-modeを使うと"type LoadBalancer"が利用可能 • Docker Desktopではdockerのnetworkに疎通が難しくMetalLBは難しい ◦ https://mauilion.dev/posts/kind-metallb/
諦めない
12 Macを使っていても手軽に"type LoadBalancer"が使えないか?
カスタムコントローラを実装した 13 Pod1 Pod2 Pod3 LBPod K8s API Server port-forward
ClusterIP • Podとして動かしたLBでトラフィックをバランシング ◦ そのLBのPodに対してPortForward ◦ バランシングにはCluster-IPを利用 ◦ kubectl port-forwardと同じくTCPのみ対応 ◦ API Serverにつながれば良いだけ! 諦めない
実装の概要 14 • コントローラはローカルのコマンドとして実行 LocalLB-controller ・"type LoadBalancer"なServiceをwatch ・上記ServiceのLBPodを作成 ・LBPodへPort-forward LBPod
kind:Service Spec: type: LoadBalancer K8s API Server Port-Forward ・ServiceをownerReferenceとして持つ ・ServiceがなくなればGCされる ・コントローラを実行 ・"type LoadBalancer"なServiceを作成
15 デモ • したいけど多分時間ない • 気になる人はあとで個別で見に来てください • ソースコードは後ほど展開します ◦ 現在Private
Repository ◦ https://github.com/uesyn/k8s-local-loadbalancer
16 ご静聴ありがとうございました!