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
uesyn
October 24, 2019
Programming
0
1.6k
kindでも"type LoadBalancer"を使いたい! / kubernetes-meetup-tokyo-24-kind-with-type-loadbalancer
Kubernetes Meetup Tokyo #24 の LTで使った資料です。
uesyn
October 24, 2019
Tweet
Share
More Decks by uesyn
See All by uesyn
PodSecurityPolicyの安全な移行の道のり / On the safe migration of PodSecurityPolicy
uesyn
1
1.1k
PodSecurityPolicyの廃止に備えて、 一足先にPodSecurity Admissionを試してみよう! / from-psp-to-podsecurity
uesyn
4
1.8k
Kubernetes v1.19 変更点調査のまとめ / k8s-v119-updates
uesyn
1
250
そのクラスタ本当にアップグレードして大丈夫? Storage Version の更新も忘れずにしよう! / k8s-storage-version-migration
uesyn
2
3.8k
次世代のログ基盤 Grafana Lokiを始めよう! / prometheus-meetup-tokyo-3-lets-start-the-loki
uesyn
7
15k
Loki入門
uesyn
8
2.6k
Cortexの話をKubeConで聞きたかったっていう話
uesyn
4
2k
kubernetesでGPUを 管理するために スケジューラをいじってみた
uesyn
2
2.8k
Other Decks in Programming
See All in Programming
PHPUnitの限界をPlaywrightで補完するテストアプローチ
yuzneri
0
370
Vibe coding コードレビュー
kinopeee
0
400
Vibe Codingの幻想を超えて-生成AIを現場で使えるようにするまでの泥臭い話.ai
fumiyakume
21
10k
Go製CLIツールをnpmで配布するには
syumai
2
1.1k
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
7
1.7k
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
430
DataformでPythonする / dataform-de-python
snhryt
0
150
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
320
画像コンペでのベースラインモデルの育て方
tattaka
3
1k
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
3
780
可変性を制する設計: 構造と振る舞いから考える概念モデリングとその実装
a_suenami
10
1.5k
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
180
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Done Done
chrislema
185
16k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
540
A Tale of Four Properties
chriscoyier
160
23k
Six Lessons from altMBA
skipperchong
28
3.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Fireside Chat
paigeccino
38
3.6k
The Cult of Friendly URLs
andyhume
79
6.5k
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 ご静聴ありがとうございました!