Slide 1

Slide 1 text

@taxin_tt ϩʔΧϧK8S؀ڥͷεεϝ

Slide 2

Slide 2 text

WHO AM I? • @taxin_tt • Kubernetes Novice Tokyoͷதͷਓ • ࠷ۙ͸TerraformͱDatadogΛ΍͍ͬͯΔ

Slide 3

Slide 3 text

• Kubernetes Novice Tokyo #1 • ʮKubernetesΛԿΛ࢖ͬͯ৮Γ࢝ΊͨΒ͍͍͔ʯͱ͍͏ٙ໰ -> AWS, Azure, GCPͷϚωʔδυk8sαʔϏεͷ঺հΛߦ͏LTΛ࣮ࢪ ԿΛ࢖ͬͯK8SΛಈ͔͔͢

Slide 4

Slide 4 text

ԿΛ࢖ͬͯK8SΛಈ͔͔͢

Slide 5

Slide 5 text

ԿΛ࢖ͬͯK8SΛಈ͔͔͢

Slide 6

Slide 6 text

• ্ͷ2ͭ͸Կ? • ϩʔΧϧ؀ڥͰk8sΫϥελΛߏங͢Δࡍʹར༻͢Δπʔϧ • ࠓճ͸্هͷ໨తͰར༻͢Δ3छྨͷπʔϧ (kubeadm, kind, minikube) Λ঺հ͠·͢ • ͜Μͳπʔϧ͋ΔΑʂ ͜Μͳࣄ΋Ͱ͖ΔΑʂ͕͋Ε͹ #k8snovice Ͱڞ༗ͯ͠Լ͍͞ ԿΛ࢖ͬͯK8SΛಈ͔͔͢

Slide 7

Slide 7 text

• Ϋϥελͷཁ݅ (Requirements) • 1) OS: Ubuntu 16.04+ / Debian 9+ / CentOS 7 / Red Hat Enterprise Linux (RHEL) 7 etc. (※ OS X or Windows্Ͱಈ͔͢ࡍʹ͸VMΛཱͯͯɺͦ͜ʹಋೖ͢Δ) • 2) Memory: 2 GB (or more) / Node • 3) CPU: 2 Cores (or more) (1) KUBEADM

Slide 8

Slide 8 text

• ߏஙखॱ • Node෼ͷVMΛ༻ҙ͠ɺඞཁͳίϯϙʔωϯτͷinstall + ઃఆΛߦ͍ΫϥελΛߏங - Master Node: Ϋϥελͷ؅ཧΛߦ͏ - Worker Node: ࣗ෼ୡ͕ಈ͔͍ͨ͠ίϯςφ(ϫʔΫϩʔυ)Λ࣮ߦ͢Δ Kubernetes (1) KUBEADM VM Master Worker Worker VM VM

Slide 9

Slide 9 text

• ߏஙखॱ • େ·͔ͳྲྀΕΛݴ͏ͱԼهͷ௨Γ • Ϋϥελߏஙલͷ؀ڥઃఆ (VM΁ͷkubeadmɾkubeletɾkubectlͷinstall, Nodeؒ௨৴ͷڐՄઃఆ etc.) • ԼهͷίϚϯυΛ༻͍֤ͯNodeͷηοτΞοϓΛߦ͏ - kubeadm init : Master NodeͷॳظԽ - kubeadm join : Worker NodeΛΫϥελʹࢀՃͤ͞Δ Kubernetes (1) KUBEADM VM Master Worker VM 1. init 2. join

Slide 10

Slide 10 text

• Ͱ͖Δ͜ͱ • Master / Worker Nodeͷίϯϙʔωϯτͷઃఆ஋Λ্ॻ͖ͯ͠ΧελϚΠζՄೳ - yamlϑΝΠϧ಺ʹઃఆΛఆٛ͢Δ - kubeadm init --config config.yaml Λ࣮ߦ͢Δ (1) KUBEADM # cluster config # change IP address of APIServer apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration kubernetesVersion: v1.16.0 apiServer: extraArgs: advertise-address: 192.168.0.103

Slide 11

Slide 11 text

• Ͱ͖Δ͜ͱ • Master / Worker Nodeͷίϯϙʔωϯτͷઃఆ஋Λ্ॻ͖ͯ͠ΧελϚΠζՄೳ - ݸผʹ࣮ߦ࣌Ҿ਺ͱͯ͠ઃఆ஋Λ౉͢͜ͱ΋Մೳ (--apiserver-advertise-address=) https://kubernetes.io/ja/docs/setup/production-environment/tools/kubeadm/control-plane-flags/ (1) KUBEADM

Slide 12

Slide 12 text

• ߏஙखॱ • Node༻ͷImageΛpullͯ͠ɺdocker containerΛNodeͱͯ͠ΫϥελΛߏங (Kind = Kubernetes in Docker) • OS X/Windows্ͰɺVMͷsetupແ͠ͰΫϥελߏங͕Մೳ (2) KIND OS X / Windows / Linux DockerHub Kubernetes Master (docker container) Worker (docker container) Worker (docker container)

Slide 13

Slide 13 text

• ߏஙखॱ • goͷinstall + kindͷinstall • kind create cluster • cluster໊ͷࢦఆ (--name ) • Cluster configϑΝΠϧͷࢦఆ (--config ) (2) KIND

Slide 14

Slide 14 text

• Ͱ͖Δ͜ͱ • 1. Ϋϥελͷߏ੒ ΛYAMLϑΝΠϧͰදݱͰ͖Δ (Cluster configϑΝΠϧͷࢦఆ) • ԼهͷΑ͏ͳ߲໨ΛΫϥελͷઃఆͱͯ͠ఆٛ - Nodeͷߏ੒ - Kubernetesͷversion (Node imageͷversion → k8sͷversion) (2) KIND # cluster config # three node (master:1 / worker:2) kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane image: kindest/node:v1.16.4 - role: worker image: kindest/node:v1.16.4 - role: worker image: kindest/node:v1.16.4

Slide 15

Slide 15 text

• Ͱ͖Δ͜ͱ • 2. ಺෦తʹkubeadmΛར༻͍ͯ͠ΔͷͰɺkubeadmͷઃఆͷ࠶ར༻͕Մೳ ( → kubeadm config patches) (2) KIND # cluster config(kind) kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 kubeadmConfigPatches: - | apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.16.0 apiServer: extraArgs: advertise-address: 192.168.0.103 # cluster config(kubeadm) apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.16.0 apiServer: extraArgs: advertise-address: 192.168.0.103

Slide 16

Slide 16 text

• ߏஙखॱ • VM্ʹγϯάϧϊʔυߏ੒ͷΫϥελʔΛίϚϯυҰͭͰ࡞੒͢Δ - brew install minikube - minikube start • OS X/Windows্ͰVMͷࣄલߏஙͳ͠ͰΫϥελߏங͕Մೳ (※ ֤OSͰԾ૝Խػೳ͕༗ޮʹͳ͍ͬͯΔલఏ) (3)MINIKUBE Kubernetes OS X / Windows / Linux Master + Worker

Slide 17

Slide 17 text

• Ͱ͖Δ͜ͱ • minikube startͷҾ਺ͱͯ͠ઃఆ஋Λ౉͢ - ex) minikube start --extra-config=kubelet.max-pods=100 (Node͝ͱͷpod਺ͷ্ݶ) • ΫϥελͷΧελϚΠζ΋Ұ෦͚ͩՄೳ - Kubernetesͷόʔδϣϯࢦఆ ( --kubernetes-version= ) - ίϯςφϥϯλΠϜͷஔ͖׵͑ ( --container-runtime= ) - ίϯϙʔωϯτͷઃఆ஋ͷ্ॻ͖ ( --extra-config== ) (3)MINIKUBE

Slide 18

Slide 18 text

• ͳΜͱͳ͘ศརͦ͏ͳͷ͸Θ͔ͬͨ → Θ͔͚ͬͨͲɺ͜ΕΒͷπʔϧ͸Ͳ͏΍ͬͯ࢖͍෼͚ͨΒ͍͍ͷ? Ͳ͏΍ͬͯ࢖͍෼͚Δ͔

Slide 19

Slide 19 text

• ݕূ಺༰ɺΫϥελ্Ͱಈ͔͢πʔϧ etc. ʹԠͯ͡ɺ ؀ڥΛ࢖͍෼͚Δਓ͕ଟ͍(Α͏ʹײ͡Δ) • 1) Public Cloudͷk8s؀ڥ • ϩʔΧϧϚγϯͷϦιʔε (Memory, CPU) ʹറΒΕͳ͍ • Public CloudͷଞαʔϏεͱͷ࿈ܞ͕Ͱ͖Δ Ͳ͏΍ͬͯ࢖͍෼͚Δ͔

Slide 20

Slide 20 text

• 2) ϩʔΧϧͷk8s؀ڥ • Managed k8sαʔϏεͱൺֱͯ͠ΫϥελͷProvisioningͷ͕࣌ؒൺֱత୹͍ • ηΩϡϦςΟ໘Ͱͷߟྀ (ରԠ) ͕جຊతʹෆཁ Ͳ͏΍ͬͯ࢖͍෼͚Δ͔

Slide 21

Slide 21 text

• πʔϧͷ࢖͍෼͚ (ݸਓͷҙݟ) • Kind / minikube: k8sʹ৮Γ࢝ΊΔਓ޲͚ ( = ؀ڥߏஙࣗମͰͭ·ͮ͘͜ͱ͕গͳ͍ɺΑΓߏ੒͕γϯϓϧͳͷ͸minikube) • kubeadm : KubernetesࣗମͷཧղΛਂΊ͍ͨਓ޲͚ (kubeadm init/joinͰԿΛ΍͍ͬͯΔ͔? kubeadm-config.yaml Λ༻͍ͨΫϥελͷઃఆ etc. ) • Public Cloud: ϩʔΧϧ؀ڥͷ੍໿ʹҾ͔͔ͬΔΑ͏ͳ಺༰Λݕূ͍ͨ͠ਓ޲͚ (Public CloudͷଞαʔϏεͱ࿈ܞ͍ͤͨ͞৔߹͸ݴΘͣ΋͕ͳ) Ͳ͏΍ͬͯ࢖͍෼͚Δ͔

Slide 22

Slide 22 text

HAPPY K8S LIFE!