Slide 1

Slide 1 text

Sansan株式会社 部署 名前 お家kubernetesに ドメインでアクセスするまで Sansan技術本部 Sansan技術本部 研究開発部Architectグループ 加藤慶彦

Slide 2

Slide 2 text

加藤慶彦 X: @discord_tech MLOps Engineer 慶應義塾⼤学⼤学院理⼯学研究科開放環境科学専攻博⼠後期課 程単位取得退学。 新卒で不動産系IT企業に⼊社し、Platform Engineerとして全社 基盤のKubernetes clusterの開発に携わる傍ら、実験基盤、実 ⾏基盤、運⽤基盤から成るMLOps基盤を構築するプロジェクト を⽴ち上げる。 2023年8⽉にSansanに⼊社。 現在はPlatformチームにて研究開発の実⾏基盤Circuitの開発に 従事。

Slide 3

Slide 3 text

Kubernetes歴 前職(不動産ポータル) Platform Engineer Sansan MLOps Engineer Kubernetes歴2年!!!

Slide 4

Slide 4 text

Kubernetes歴 https://commons.wikimedia.org/wiki/File:Dunning-Kruger-Effect-en.png 今ここ

Slide 5

Slide 5 text

1. ⾃⼰紹介 2. お家Kubernetesについて 3. k8sにドメインでアクセスするまで 4. ⾊々なやり⽅ 5. 今⼀番Hotなやり⽅ アジェンダ

Slide 6

Slide 6 text

メリット - Kubernetesに詳しくなれる - 業務のクラスターのいじっても ⼤丈夫な範囲が分かるようになる デメリット - イニシャルコスト - 電気代 - ⽉約1000円 - Managed k8sに苦⼿意識ができる - 無限に時間が溶ける お家Kubernetes

Slide 7

Slide 7 text

構築が簡単になってきた 昔 - kubeadm - kubespray 今 - k3s - k0s - k0sctlを使った構築が簡単 お家Kubernetes

Slide 8

Slide 8 text

k8sにドメインでアクセスするまで ドメイン名 ONU Router (port-forward) Hub IP (WAN) IP (WAN) IP (LAN) (arpによりmac addressへ) Amazon Route 53

Slide 9

Slide 9 text

k8sにドメインでアクセスするまで 落としたくない LBだけだと無理なので富豪向け 我らがEC2 折⾓のk8sが台無し ドメイン名 IP (WAN) IP (WAN) 特定Port Amazon Route 53 Cloudflare®

Slide 10

Slide 10 text

k8sにドメインでアクセスするまで Gate way Virtual Service L7 L3 DNS IPを付与 External IPの設定 BGP Router IPを登録

Slide 11

Slide 11 text

CNIについて Cilium 未来のスタンダード ebpfベースで軽量 どんどん機能が増えている 今⽇の主役 Calico 今のスタンダード ドキュメントでも推されている BGPに向けて喋る機能がある

Slide 12

Slide 12 text

Service Meshについて Gateway API (Kubernetes) Kubernetesに最近⼊った機能 挙動は他のネットワーク管理ソフト ウェアに任されている Istio + gateway APIもあり得る Istio 今のスタンダード Sidecarで実現される IstioのeBPF実装のCNIを使うと Sidecarlessもできる?

Slide 13

Slide 13 text

EKSではどうなってるの? ENI aws-node Amazon Route 53 IPの付与

Slide 14

Slide 14 text

⾊んなやり⽅〜NodePort編〜 L7 L3 DNS Gate way Virtual Service

Slide 15

Slide 15 text

⾊んなやり⽅〜MetalLB編〜 Gate way Virtual Service L7 L3 DNS

Slide 16

Slide 16 text

今⼀番Hotなやり⽅ Gate way HttpRoute L7 L3 DNS

Slide 17

Slide 17 text

1. Ciliumの設定を変更する 2. IPPoolを作る 3. リーダーエレクションされる 4. L2 Announcementのリソースを作る 5. IPアドレスに対してリーダーのMACアドレスが登録される L2 Announcementの挙動 enable-l2-announcements: true kube-proxy-replacement: true k8s-client-qps: {QPS} k8s-client-burst: {BURST}

Slide 18

Slide 18 text

1. Ciliumの設定を変更する 2. IPPoolを作る 3. リーダーエレクションされる 4. L2 Announcementのリソースを作る 5. IPアドレスに対してリーダーの MACアドレスが登録される L2 Announcementの挙動 apiVersion: "cilium.io/v2alpha1" kind: CiliumLoadBalancerIPPool metadata: name: "blue-pool" spec: blocks: - cidr: "10.0.10.0/24" - cidr: "2004::0/64" - start: "20.0.20.100" stop: "20.0.20.200" - start: "1.2.3.4"

Slide 19

Slide 19 text

1. Ciliumの設定を変更する 2. IPPoolを作る 3. リーダーエレクションされる 4. L2 Announcementのリソースを作る 5. IPアドレスに対してリーダーのMACアドレスが登録される L2 Announcementの挙動 $ kubectl -n kube-system get lease NAME HOLDER AGE cilium-l2announce-default-deathstar worker-node 2d20h cilium-operator-resource-lock worker-node2-tPDVulKoRK 2d20h kube-controller-manager control-plane-node_9bd97f6c-cd0c-4565-8486-e718deb310e4 2d21h kube-scheduler control-plane-node_2c490643-dd95-4f73-8862-139afe771ffd 2d21h

Slide 20

Slide 20 text

1. Ciliumの設定を変更する 2. IPPoolを作る 3. リーダーエレクションされる 4. L2 Announcementのリソースを作る 5. IPアドレスに対してリーダーの MACアドレスが登録される L2 Announcementの挙動 apiVersion: "cilium.io/v2alpha1" kind: CiliumL2AnnouncementPolicy metadata: name: policy1 spec: serviceSelector: matchLabels: color: blue nodeSelector: matchExpressions: - key: node- role.kubernetes.io/control-plane operator: DoesNotExist interfaces: - ^eth[0-9]+ externalIPs: true loadBalancerIPs: true

Slide 21

Slide 21 text

1. Ciliumの設定を変更する 2. IPPoolを作る 3. リーダーエレクションされる 4. L2 Announcementのリソースを作る 5. IPアドレスに対してリーダーのMACアドレスが登録される L2 Announcementの挙動

Slide 22

Slide 22 text

研究開発部 採⽤情報 https://media.sansan-engineering.com/randd

Slide 23

Slide 23 text

No content