Kubernetesのマニフェストに記述可能な項目は多岐にわたります。本セッションでは、プロダクションで利用するにあたり、最低限設定する必要のある頻出パターンとして、下記の7項目について説明します。
コンテナのライフサイクル(起動時) コンテナのライフサイクル(停止時) ヘルスチェック メンテナンスとアップデート スケジューリング リソースの割り当てと基準 カーネルパラメータのチューニング インターネットからのアクセス制御
Masaya AoyamaCyberAgent adtech studioຊ൪ڥͷKubernetesϚχϑΣετʹ࠷ݶඞཁͳ ͷ͜ͱJapan Container Days v18.12MasayaAoyama @amsy810
View Slide
Japan Container Days v18.04 Keynote Cloud Native Day Tokyo co-chairCloud Native Meetup Tokyo Organizer (+ KubeCon) for KubernetesCKA #138CKAD #2OpenStack / Kubernetes ContributorMasaya Aoyama (@amsy810)Infrastructure Engineer
Hobby == Kubernetes
Agendapage04• &#%32+/4• &#%3(0/4• % • !&&'• "'$&• $'*-,1• '%#!'"'&• &').
spec.containers[].commandspec.initContainers[]spec.containers[]spec.containers[].lifecycle.postStart
0<3/>@:=page061. Entrypoint +2/>@• $(( $*4"&5;2. Init Containers1?• $(( 1?"&-8)5;• $(( 1?"&. ,3. Sidecar !*(*;9• *( *;94. postStart %#1?• $(#'6@7$(( 6@
1. Entrypoint!"page07• Entrypoint!"• ex) # % $
1. Entrypoint!"page08• Entrypoint!"• ex) # % $
2. Init Container'page09• #&* ,• $("Volume%)• + -!VolumeStore data Use data
2. Init Containerpage010 Immutable Infrastructure
3. Sidecar %$page011• Pod Main , Sidecar • "'( Init Container !)*(%$ +• ex) #&( !&VolumeStore data Use data
4. postStart $page012• &%! () &*• (#"'postStartscriptmain process (entrypoint)
! page013 $%#1. entrypoint $ %2. initContainers $ %3. Sidecar $ "4. postStart $ %
spec.restartPolicyspec.containers[].lifecycle.preStopSpec.terminationGracePeriodSeconds
spec.restartPolicy (Pod)page015• Always• Pod Pod • OnFailure• PodPod • Never• PodPod Deployment Always Job OnFailure or Never
page016+0sTerminatingSIGTERM preStop (optional)Service SIGKILL Runningspec.terminationGracePeriodSeconds = 30( 30 )~ 30s
! page017+0sTerminatingSIGTERM"preStop "Service &"SIGKILL "Runningspec.terminationGracePeriodSeconds = 30( 30 #)preStop "$ 2# SIGTERM "% +32s+30s
spec.containers[].livenessProbespec.containers[].readinessProbe
"-#page019spec.containers[].livenessProbeCheck %)*!+0" (1,'&/ spec.containers[].readinessProbeCheck %)* Service .$Service-In ,
PodDisruptionBudget
); $ &?page021kubectl drain' #$ $<+0@,>A7Pod4.-96*,>3…!%$%5/PDB=2(5/B"%-:18
spec.nodeSelectorspec.affinity.nodeAffinityspec.affinity.podAffinityspec.affinity.podAntiAffinityspec.torelations (+ taints)spec.priorityClassName (+ PriorityClass)
*(page0231. 2+0 Node Affinity5nodeSelector6• &/2. Node Affinity / Node Anti-Affinity• -3 ,!(#.' • )4,!"$,!3. Inter-Pod Affinity / Inter-Pod Anti-Affinity• .'Pod51%6
NodePool / Instance Grouppage024+#)% &$'• GKE NodePool• EKS Instance GroupK8s "! *(Node
Kubernetes page025 Taints / Tolerations PriorityClass
spec.containers[].resources.requestsspec.containers[].resources.limitsLimitRange
$+page027Limits5"/3!.2Requests5"/ 3, #/*4 ! "(&ClusterAutoscaler Pending status Pod )'0%Requests -1
page028Kubernetes NodeAllocatable CPU: 1000mRequests(%) ": 1000m& $: 10mRequest(%) : 100m& #! Cluster Autoscale Requests '
page029Requests(&) #: 100m' !%: 10000mRequest(&) : 10m' $"( Cluster Autoscale Requests Kubernetes NodeAllocatable CPU:1000m
'+4/)page030• Requests 3% • Requests / Limits *5 CPU.($#1-Requests / Limits/)!" &0 ,2!4/
LimitRange "8*-page031LimitRange(3%+$ / +&(3%requests / limits '73%GKE #!CPU Requests 100m 13%,3%#!.746#! OOM - CPU #!952/)Container: Pod7 0
spec.securityContext.sysctls
page0331. spec.securityContext.sysctls• Kubernetes v1.11 2. Annotations (security.alpha.kubernetes.io/sysctls)• Kubernetes v1.10 3. Privileged InitContainer• •
page034Kubernetes v1.11 spec.securityContext.sysctls safe, unsafe
%page035Kubernetes v1.10 Annotation #security.alpha.kubernetes.io/sysctls'" &security.alpha.kubernetes.io/unsafe-sysctls'" & $!
page036 or InitContainer +
spec.loadBalancerSourceRanges (Service)spec.ingress (NetworkPolicy)BackendConfig (Ingress [GKE])
!%2! &3page0381. “type: LoadBalancer” LB $ &3• LB$ &+!$ *4)2. NetworkPolicy Node $ &3• NetworkPolicy !#Node$ iptables &3• -.!" !1/3. Ingress LB $ &3• GKE ('BackendConfig # Cloud Armor 0,
1. ”type: LoadBalancer” Service page039 IP Address LoadBalancerNIC NICiptables iptables
2. Network Policy Node • In-bound / Out-bound• Label • Namespace LoadBalancerNIC NICiptables iptablespage040
3. Ingress %page041GCPCloud Armor$LoadBalancerNIC NICiptables iptables Service Annotation #" !K8s
Conclusionsummary
Conclusionpage043• &#%32+/4• &#%3(0/4• % • !&&'• "'$&• $'*-,1• '%#!'"'&• &').
3 I H uNs P/D 6 IBK c a io sy P 0 C 1 DD 3 I HW3 I HS M3 I H& 72 uNs C ID9 CD H uNs0BH K L 4 uNs/ B 8I uNs/D HI uNs 5 I I uNsuNs N snNs h l o y f fly s Nsnr Ntk ye& hs c N uNsu ghdvo y/2 /0fl N s 8 KB 5 HA3 I H dNkyl3 I H b
Thank you for your attentionfollow me: @amsy810