Slide 1

Slide 1 text

Masaya Aoyama CyberAgent adtech studio ຊ൪؀ڥͷKubernetesϚχϑΣετʹ ࠷௿ݶඞཁͳ  ͷ͜ͱ Japan Container Days v18.12 MasayaAoyama @amsy810

Slide 2

Slide 2 text

Japan Container Days v18.04 Keynote  Cloud Native Day Tokyo co-chair Cloud Native Meetup Tokyo Organizer (+ KubeCon)    for Kubernetes CKA #138CKAD #2 OpenStack / Kubernetes Contributor Masaya Aoyama (@amsy810) Infrastructure Engineer

Slide 3

Slide 3 text

Hobby == Kubernetes    

Slide 4

Slide 4 text

Agenda page 04 • &# %32+/4 • &# %3(0/4 • %  • !&&' •  "'$& • $'*-,1 • '%#!'"'& • &' ).

Slide 5

Slide 5 text

     spec.containers[].command spec.initContainers[] spec.containers[] spec.containers[].lifecycle.postStart

Slide 6

Slide 6 text

0<3/>@:= page 06 1. Entrypoint +2 />@ • $(( $* 4"&5; 2. Init Containers1? • $(( 1?"&-8)5; • $(( 1? "&. , 3. Sidecar !*( *;9 • *( *;9 4. postStart %#1? • $(#'6@7 $(( 6@

Slide 7

Slide 7 text

1. Entrypoint! " page 07 • Entrypoint! " • ex) #   %  $

Slide 8

Slide 8 text

1. Entrypoint! " page 08 • Entrypoint! " • ex) #   %  $

Slide 9

Slide 9 text

2. Init Container' page 09 • #&*  , • $("Volume %) • +    -! Volume Store data Use data

Slide 10

Slide 10 text

2. Init Container page 010      Immutable Infrastructure

Slide 11

Slide 11 text

3. Sidecar  %$ page 011 • Pod  Main , Sidecar  • "'( Init Container !)*( %$ + • ex)  #&(  !& Volume Store data Use data

Slide 12

Slide 12 text

4. postStart  $ page 012 •   &%! ()  &* •   (#"' postStart script main process (entrypoint)

Slide 13

Slide 13 text

!  page 013     $ %# 1. entrypoint $ % 2. initContainers $ % 3. Sidecar $ " 4. postStart $ %

Slide 14

Slide 14 text

      spec.restartPolicy spec.containers[].lifecycle.preStop Spec.terminationGracePeriodSeconds

Slide 15

Slide 15 text

spec.restartPolicy (Pod) page 015 • Always • Pod  Pod  • OnFailure • PodPod  • Never • Pod Pod    Deployment Always  Job OnFailure or Never 

Slide 16

Slide 16 text

    page 016 +0s Terminating SIGTERM  preStop  (optional) Service   SIGKILL  Running spec.terminationGracePeriodSeconds = 30 (   30 ) ~ 30s

Slide 17

Slide 17 text

 !  page 017 +0s Terminating SIGTERM " preStop " Service  &" SIGKILL " Running spec.terminationGracePeriodSeconds = 30 ( 30 #) preStop "$  2# SIGTERM "% +32s +30s

Slide 18

Slide 18 text

 spec.containers[].livenessProbe spec.containers[].readinessProbe

Slide 19

Slide 19 text

 "-#  page 019 spec.containers[].livenessProbe Check %)*!+ 0" (1 ,'&/  spec.containers[].readinessProbe Check %)* Service .$ Service-In ,

Slide 20

Slide 20 text

    PodDisruptionBudget

Slide 21

Slide 21 text

); $ &? page 021 kubectl drain' #$ $<+0@,> A7Pod4. -96*,>3… !%$%5/PDB =2(5/B "%-:18

Slide 22

Slide 22 text

 spec.nodeSelector spec.affinity.nodeAffinity spec.affinity.podAffinity spec.affinity.podAntiAffinity spec.torelations (+ taints) spec.priorityClassName (+ PriorityClass)

Slide 23

Slide 23 text

*( page 023 1. 2+0 Node Affinity5nodeSelector6 •  & / 2. Node Affinity / Node Anti-Affinity • -3 ,!(# .'   • )4,!"$,! 3. Inter-Pod Affinity / Inter-Pod Anti-Affinity • .' Pod51%6 

Slide 24

Slide 24 text

NodePool / Instance Group page 024 +#)%   &$' • GKE  NodePool • EKS  Instance Group K8s  "!    *(Node

Slide 25

Slide 25 text

Kubernetes  page 025  Taints / Tolerations  PriorityClass 

Slide 26

Slide 26 text

   spec.containers[].resources.requests spec.containers[].resources.limits LimitRange

Slide 27

Slide 27 text

$+ page 027 Limits5"/3 !.2   Requests5"/ 3 , #/ *4 ! " (& ClusterAutoscaler  Pending status  Pod )'0% Requests -1

Slide 28

Slide 28 text

page 028 Kubernetes Node Allocatable CPU: 1000m Requests(%) ": 1000m &  $: 10m Request(%) : 100m & #!     Cluster Autoscale  Requests '

Slide 29

Slide 29 text

page 029 Requests(&) #: 100m ' !%: 10000m Request(&) : 10m ' $" (   Cluster Autoscale   Requests   Kubernetes Node Allocatable CPU: 1000m

Slide 30

Slide 30 text

'+ 4/) page 030 • Requests 3%  • Requests / Limits * 5   CPU .($#1-  Requests / Limits/) ! " &0 ,2 !4/

Slide 31

Slide 31 text

LimitRange  "8*- page 031 LimitRange  (3% +$ / +& (3% requests / limits '73% GKE #!CPU  Requests  100m 13% ,3%#!.74 6 #! OOM -  CPU #!952/) Container: Pod 7 0

Slide 32

Slide 32 text

     spec.securityContext.sysctls

Slide 33

Slide 33 text

   page 033 1. spec.securityContext.sysctls • Kubernetes v1.11  2. Annotations (security.alpha.kubernetes.io/sysctls) • Kubernetes v1.10  3. Privileged InitContainer •    • 

Slide 34

Slide 34 text

   page 034 Kubernetes v1.11  spec.securityContext.sysctls   safe, unsafe

Slide 35

Slide 35 text

%  page 035 Kubernetes v1.10  Annotation # security.alpha.kubernetes.io/sysctls'"  & security.alpha.kubernetes.io/unsafe-sysctls'"  & $!

Slide 36

Slide 36 text

   page 036  or  InitContainer +     

Slide 37

Slide 37 text

   spec.loadBalancerSourceRanges (Service) spec.ingress (NetworkPolicy) BackendConfig (Ingress [GKE])

Slide 38

Slide 38 text

 ! %2! &3 page 038 1. “type: LoadBalancer” LB $ &3 • LB$ &+!$ *4)  2. NetworkPolicy Node $ &3 • NetworkPolicy !#Node$ iptables &3 • -.!" !1/ 3. Ingress LB $ &3 • GKE ('BackendConfig # Cloud Armor 0,

Slide 39

Slide 39 text

1. ”type: LoadBalancer” Service  page 039     IP Address  Load Balancer NIC NIC iptables iptables

Slide 40

Slide 40 text

2. Network Policy   Node   • In-bound / Out-bound • Label   • Namespace   Load Balancer NIC NIC iptables iptables page 040

Slide 41

Slide 41 text

3. Ingress % page 041 GCP Cloud Armor$ Load Balancer NIC NIC iptables iptables  Service  Annotation #"   !K8s 

Slide 42

Slide 42 text

Conclusion summary

Slide 43

Slide 43 text

Conclusion page 043 • &# %32+/4 • &# %3(0/4 • %  • !&&' •  "'$& • $'*-,1 • '%#!'"'& • &' ).

Slide 44

Slide 44 text

  

Slide 45

Slide 45 text

3 I H uNs P /D 6 IBK c a io sy P   0 C 1 DD 3 I H W3 I HS M 3 I H & 72 uNs C ID 9 CD H uNs 0BH K L 4 uNs / B 8I uNs /D HI uNs 5 I I uNs uNs N snN s h l o y f fl y s N snr N tk ye & hs c N uNsu ghd v o y /2 /0 fl N s 8 KB 5 HA 3 I H dNkyl 3 I H b

Slide 46

Slide 46 text

Thank you for your attention follow me: @amsy810