Kubernetes Architecture
API Server
etcd
Create
Deployment
Controller Manager
Deployment
Controller
Watch
Store
kubectl
Slide 6
Slide 6 text
Kubernetes Architecture
API Server
etcd
Create
Deployment
Controller Manager
Deployment
Controller
Watch
Store
kubectl
API Server
Create
Deployment
kubectl replica: 3
Slide 7
Slide 7 text
Kubernetes Architecture
API Server
etcd
Create
Deployment
Controller Manager
Deployment
Controller
Watch
Store
kubectl
API Server
Create
Deployment
kubectl replica: 3
API Server Controller Manager
Deployment
Controller
Watch
Create ReplicaSet
replica: 3
Slide 8
Slide 8 text
Kubernetes Architecture
API Server
etcd
Create
Deployment
Controller Manager
Deployment
Controller
Watch
Store
kubectl
API Server
Create
Deployment
kubectl replica: 3 -> 2
Update
Slide 9
Slide 9 text
Kubernetes Architecture
API Server
etcd
Create
Deployment
Controller Manager
Deployment
Controller
Watch
Store
kubectl
API Server
Create
Deployment
kubectl replica: 3 -> 2
Update
API Server Controller Manager
Deployment
Controller
Watch
Update ReplicaSet
replica: 3 -> 2
Slide 10
Slide 10 text
Reconciliation Loop
Provided in Managing Kubernetes: Operating Kubernetes Clusters in the Real World, 23.
https://www.oreilly.com/library/view/managing-kubernetes/9781492033905/
Slide 11
Slide 11 text
API Server
Create
Deployment Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
kubectl
2 ͭͷ Controller ͕ಈ͍͍ͯΔ߹
Slide 12
Slide 12 text
API Server
Create
Deployment Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
kubectl
API Server
Create
Deployment
kubectl
replica: 3
2 ͭͷ Controller ͕ಈ͍͍ͯΔ߹
Slide 13
Slide 13 text
API Server
Create
Deployment Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
kubectl
API Server
Create
Deployment
kubectl
replica: 3
Controller Manager
Deployment
Controller
Watch
API Server
Create ReplicaSet
replica: 3
2 ͭͷ Controller ͕ಈ͍͍ͯΔ߹
Slide 14
Slide 14 text
API Server
Create
Deployment Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
kubectl
API Server
Create
Deployment
kubectl
replica: 3
Controller Manager
Deployment
Controller
Watch
API Server
Create ReplicaSet
replica: 3
API Server
Controller Manager
Deployment
Controller Create ReplicaSet
replica: 3
2 ͭͷ Controller ͕ಈ͍͍ͯΔ߹
Slide 15
Slide 15 text
API Server
Create
Deployment Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
kubectl
API Server
Create
Deployment
kubectl
replica: 3
Controller Manager
Deployment
Controller
Watch
API Server
Create ReplicaSet
replica: 3
API Server
Controller Manager
Deployment
Controller Create ReplicaSet
replica: 3
Error from server (AlreadyExists):
deployments.apps
“foo" already exists
2 ͭͷ Controller ͕ಈ͍͍ͯΔ߹
Slide 16
Slide 16 text
API Server
Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
Leader Election in Kubernetes
-FBEFS
Slide 17
Slide 17 text
API Server
Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
Leader Election in Kubernetes
-FBEFS
Slide 18
Slide 18 text
API Server
Controller Manager
Deployment
Controller
Watch
Controller Manager
Deployment
Controller
Leader Election in Kubernetes
-FBEFS
Leader-for-life
• OwnerReference ͕Ϧʔμʔͷ Pod Ͱ͋Δ
ConfigMap Λ࡞͠, ϩοΫ͢Δ
• Pod ͕আ͞ΕΔͱ Kubernetes ͷΨϕʔδίϨΫγϣϯͷ
ΈʹΑΓ ConfigMap ࣗಈతʹআ͞ΕΔͨΊ,
ଞͷ Pod ͕ϦʔμʔΛ֫ಘ͢Δ͜ͱ͕Ͱ͖Δ
Slide 23
Slide 23 text
Leader-for-life
Slide 24
Slide 24 text
Leader-for-life
Slide 25
Slide 25 text
API Server
Controller
Pod A
Watch
Controller
Pod B
Leader-for-life
ConfigMap
Lock
Create ConfigMap
PXOFS3FGFSFODFT
BQJ7FSTJPOW
LJOE1PE
OBNF$POUSPMMFS1PE"
Slide 26
Slide 26 text
API Server
Controller
Pod A
Controller
Pod B
Leader-for-life
ConfigMap
Lock
Create ConfigMap
PXOFS3FGFSFODFT
BQJ7FSTJPOW
LJOE1PE
OBNF$POUSPMMFS1PE"
Slide 27
Slide 27 text
API Server
Controller
Pod A
Controller
Pod B
Leader-for-life
ConfigMap
Lock
Create ConfigMap
PXOFS3FGFSFODFT
BQJ7FSTJPOW
LJOE1PE
OBNF$POUSPMMFS1PE"
Slide 28
Slide 28 text
API Server
Controller
Pod A
Controller
Pod B
Leader-for-life
Slide 29
Slide 29 text
API Server
Controller
Pod A
Controller
Pod B
Leader-for-life
ConfigMap
Lock
PXOFS3FGFSFODFT
BQJ7FSTJPOW
LJOE1PE
OBNF$POUSPMMFS1PE#
Create ConfigMap
Watch
Slide 30
Slide 30 text
API Server
Controller
Pod A
Controller
Pod B
Leader-for-life
ConfigMap
Lock
PXOFS3FGFSFODFT
BQJ7FSTJPOW
LJOE1PE
OBNF$POUSPMMFS1PE#
Create ConfigMap
Watch
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch Update lease record
Check lease record
Slide 36
Slide 36 text
Check lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch Update lease record
observedTime: 2020-01-28T05:33:18Z
holderIdentity: Pod A
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80
Slide 37
Slide 37 text
observedTime: 2020-01-28T05:33:18Z
Check lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch Update lease record
Controller
Pod A
ConfigMap
Lock
Update lease record
ϦʔμʔఆظతʹϦʔεΛߋ৽͢Δ
(ߋ৽͢Δͱ renewTime ͕ॻ͖ΘΔ)
holderIdentity: Pod A
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80
Slide 38
Slide 38 text
Check lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch Update lease record
PCTFSWFE5JNF5;
Controller
Pod A
ConfigMap
Lock
Update lease record
observedTime: 2020-01-28T05:33:18Z
Controller ෦Ͱ
observedTime ͱ͍͏Λ͓࣋ͬͯΓ
ఆʹ༻͢Δ
holderIdentity: Pod A
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80
Slide 39
Slide 39 text
Check lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch
holderIdentity: Pod A
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80
Slide 40
Slide 40 text
Check lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch
IPMEFS*EFOUJUZ1PE"
MFBTF%VSBUJPO4FDPOET
BDRVJSF5JNF5;
SFOFX5JNF5;
MFBEFS5SBOTJUJPOT
Check lease record
Controller
Pod B
ConfigMap
Lock
holderIdentity: Pod A
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80
PCTFSWFE5JNF5;
observedTime + leaseDurationSeconds < now
ͳΒ
ԿΒ͔ͷཧ༝ͰϦʔε͕ߋ৽͞Ε͍ͯͳ͍ͨΊ
͕ࣗϦʔμʔʹͳΖ͏ͱߋ৽ΛࢼΈΔ
Slide 41
Slide 41 text
Update lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch
holderIdentity: Pod B
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80
Slide 42
Slide 42 text
Update lease record
API Server
Controller
Pod A
Controller
Pod B
Leader-with-lease
ConfigMap
Lock
Watch
Check lease record
holderIdentity: Pod B
leaseDurationSeconds: 60
acquireTime: 2020-01-27T03:44:58Z
renewTime: 2020-01-28T05:33:18Z
leaderTransitions: 80