ローカルk8s環境のススメ / k8s-tools-for-local
by
taxin
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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!