рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╕рдордп рдХреГрдкрдпрд╛ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдРрд╕рд╛ рди рдХрд░рдиреЗ рдкрд░ рдЖрдкрдХреЗ рдмрдЧ рдХреЛ рд╕рдордп рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж! рдпрджрд┐ рдорд╛рдорд▓рд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ https://kubernetes.io/security/ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдЬреА рд░реВрдк рд╕реЗ рдмрддрд╛рдПрдВ
рдХреНрдпрд╛ рд╣реБрдЖ : рдореИрдВрдиреЗ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдкрд░ pod-eviction-timeout
рдХреНрдпреВрдм-рдХрдВрдЯреНрд░реЛрд▓рд░-рдореИрдиреЗрдЬрд░ рдХреА sudo docker ps --no-trunc | grep "kube-controller-manager"
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рдХрд┐ рд╕рдВрд╢реЛрдзрди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
kubeadmin<strong i="10">@nodetest21</strong>:~$ sudo docker ps --no-trunc | grep "kube-controller-manager"
387261c61ee9cebce50de2540e90b89e2bc710b4126a0c066ef41f0a1fb7cf38 sha256:0482f640093306a4de7073fde478cf3ca877b6fcc2c4957624dddb2d304daef5 "kube-controller-manager --address=127.0.0.1 --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf --client-ca-file=/etc/kubernetes/pki/ca.crt --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt --cluster-signing-key-file=/etc/kubernetes/pki/ca.key --controllers=*,bootstrapsigner,tokencleaner --kubeconfig=/etc/kubernetes/controller-manager.conf --leader-elect=true --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --root-ca-file=/etc/kubernetes/pki/ca.crt --service-account-private-key-file=/etc/kubernetes/pki/sa.key --use-service-account-credentials=true --pod-eviction-timeout=30s"
рдореИрдВрдиреЗ рджреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореВрд▓ рддреИрдирд╛рддреА рд▓рд╛рдЧреВ рдХреА:
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
рдкрд╣рд▓рд╛ рдкреЙрдб рд╡рд░реНрдХрд░ рдиреЛрдб рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рджреВрд╕рд░рд╛ рдкреЙрдб рджреВрд╕рд░реЗ рд╡рд░реНрдХрд░ рдиреЛрдб рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛:
NAME STATUS ROLES AGE VERSION
nodetest21 Ready master 34m v1.13.3
nodetest22 Ready <none> 31m v1.13.3
nodetest23 Ready <none> 30m v1.13.3
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default busybox-74b487c57b-5s6g7 1/1 Running 0 13s 10.44.0.2 nodetest22 <none> <none>
default busybox-74b487c57b-6zdvv 1/1 Running 0 13s 10.36.0.1 nodetest23 <none> <none>
kube-system coredns-86c58d9df4-gmcjd 1/1 Running 0 34m 10.32.0.2 nodetest21 <none> <none>
kube-system coredns-86c58d9df4-wpffr 1/1 Running 0 34m 10.32.0.3 nodetest21 <none> <none>
kube-system etcd-nodetest21 1/1 Running 0 33m 10.0.1.4 nodetest21 <none> <none>
kube-system kube-apiserver-nodetest21 1/1 Running 0 33m 10.0.1.4 nodetest21 <none> <none>
kube-system kube-controller-manager-nodetest21 1/1 Running 0 20m 10.0.1.4 nodetest21 <none> <none>
kube-system kube-proxy-6mcn8 1/1 Running 1 31m 10.0.1.5 nodetest22 <none> <none>
kube-system kube-proxy-dhdqj 1/1 Running 0 30m 10.0.1.6 nodetest23 <none> <none>
kube-system kube-proxy-vqjg8 1/1 Running 0 34m 10.0.1.4 nodetest21 <none> <none>
kube-system kube-scheduler-nodetest21 1/1 Running 1 33m 10.0.1.4 nodetest21 <none> <none>
kube-system weave-net-9qls7 2/2 Running 3 31m 10.0.1.5 nodetest22 <none> <none>
kube-system weave-net-h2cb6 2/2 Running 0 33m 10.0.1.4 nodetest21 <none> <none>
kube-system weave-net-vkb62 2/2 Running 0 30m 10.0.1.6 nodetest23 <none> <none>
рд╕рд╣реА рдлрд▓реА рдмреЗрджрдЦрд▓реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╢реНрд░рдорд┐рдХ рдиреЛрдб рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред ~ 1 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ "NotReady" рдореЗрдВ рдмрджрд▓ рдЧрдИ, рдлрд┐рд░
рдореБрдЭреЗ рджреВрд╕рд░реЗ рдиреЛрдб рдкрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдиреЛрдб рдкрд░ рдкреЙрдб рдХреЗ рд▓рд┐рдП +5 рдорд┐рдирдЯ (рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЙрдб рдПрд╡рд┐рдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИ) рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ :
рдиреЛрдб рд╕реНрдерд┐рддрд┐ "NotReady" рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рдж, рдкреЙрдб 30 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рджреВрд╕рд░реЗ рдиреЛрдб рдкрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдмрдЬрд╛рдп рдЕрдЧрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ 5 рдорд┐рдирдЯ!
рдЗрд╕реЗ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реЗрдВ (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдиреНрдпреВрдирддрдо рдФрд░ рдареАрдХ рд╣реИ) :
рддреАрди рдиреЛрдб рдмрдирд╛рдПрдВред рдкрд╣рд▓реЗ рдиреЛрдб ( sudo kubeadm init
) рдкрд░ рдЗрдирдмрд┐рдЯ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд▓рдЧрдЗрди ( kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
) рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдлрд┐рд░ рдЕрдиреНрдп рджреЛ рдиреЛрдбреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ (рдЬреИрд╕реЗ: kubeadm join 10.0.1.4:6443 --token xdx9y1.z7jc0j7c8g8lpjog --discovery-token-ca-cert-hash sha256:04ae8388f607755c14eed702a23fd47802d5512e092b08add57040a2ae0736ac
)ред
рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдкрд░ рдХреНрдпреВрдм рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рдлрд▓реА-рдирд┐рд╖реНрдХрд╛рд╕рди-рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ: sudo vi /etc/kubernetes/manifests/kube-controller-manager.yaml
:
apiVersion: v1
kind: Pod
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
creationTimestamp: null
labels:
component: kube-controller-manager
tier: control-plane
name: kube-controller-manager
namespace: kube-system
spec:
containers:
- command:
- kube-controller-manager
- --address=127.0.0.1
- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
- --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
- --controllers=*,bootstrapsigner,tokencleaner
- --kubeconfig=/etc/kubernetes/controller-manager.conf
- --leader-elect=true
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
- --root-ca-file=/etc/kubernetes/pki/ca.crt
- --service-account-private-key-file=/etc/kubernetes/pki/sa.key
- --use-service-account-credentials=true
- --pod-eviction-timeout=30s
(рдпрд╛рдореНрд▓ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдкрд╣рд▓рд╛ рднрд╛рдЧ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рд╣реИ:
sudo docker ps --no-trunc | grep "kube-controller-manager"
рджреЛ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдирд╛рддреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдПрдХ рдкреЙрдб рдкрд╣рд▓реЗ рд╢реНрд░рдорд┐рдХ рдиреЛрдб рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рджреВрд╕рд░реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдб рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╢рдЯ рдбрд╛рдЙрди рдХрд░реЗрдВ, рдФрд░ рдиреЛрдб рдХреЗ "рдиреЙрдЯреНрд░реЗрдбреА" рдФрд░ рдкреЙрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмреАрдЪ, рдмреАрддреЗ рд╕рдордп рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред
рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП? :
рдореИрдВ рдорд▓реНрдЯреА-рдорд╛рд╕реНрдЯрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рднреА рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВред
рдкрд░реНрдпрд╛рд╡рд░рдг :
kubectl version
): v1.13.3cat /etc/os-release
): NAME = "рдЙрдмрдВрдЯреВ" рд╕рдВрд╕реНрдХрд░рдг = "16.04.5 LTS (Xenial Xerus)"uname -a
): рд▓рд┐рдирдХреНрд╕ nodetest21 4.15.0-1037-azure # 39 ~ 16.04.1-Ubuntu SMP Tue 15 рдЬрдирд╡рд░реА 17:20:47 UTC 2019 x86_64 x86_64 x86_64 GNU / Linux@ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╕рд┐рдЧ-рдиреЛрдб-рдмрдЧреНрд╕
@ kubernetes / sig-apps-рдмрдЧреНрд╕
@danielloczi : рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП:
@ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╕рд┐рдЧ-рдиреЛрдб-рдмрдЧреНрд╕, @ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рд╕рд┐рдЧ-рдПрдкреНрд╕-рдмрдЧреНрд╕
рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдпрд╣ :
@ Kubernetes / sig рдиреЛрдб-рдХреАрдбрд╝реЗ
@ Kubernetes / sig-рдХреНрд╖реБрдзрд╛-рдХреАрдбрд╝реЗ
рдкреАрдЖрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░реЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / рдЯреЗрд╕реНрдЯ-рдЗрдиреНрдлреНрд░рд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░реЗрдВред
рдмреЗрджрдЦрд▓реА рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрдо рдХрд░рддреЗ рд╣реБрдП рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рднрд╛рдЧ рдЧрдпрд╛ред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдШреВрдордиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдирдпрд╛ рдЯреЗрдВрдЯрдмреЗрдб рдИрд╡рд┐рдХреНрд╢рди рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг 1.13 рдореЗрдВ, TaintBasedEvictions рдлрд╝реАрдЪрд░ рдХреЛ рдмреАрдЯрд╛ рдореЗрдВ рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП Todets рд╕реНрд╡рддрдГ NodeController (рдпрд╛ kubelet) рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд░реЗрдбреА рдиреЛрдбрдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдкреЙрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдЕрдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░ рдлреНрд▓реИрдЧ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЭреВрдареА рдкреЙрдбреНрд╕ рдХреЛ рдЙрдореНрдореАрдж рдХреА рддрд░рд╣ рдмреЗрджрдЦрд▓ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЯреЗрдВрдЯ рдЖрдзрд╛рд░рд┐рдд рдмреЗрджрдЦрд▓реА рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд╛рд╕рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЗрд╕реЗ рдФрд░ рджреЗрдЦрдирд╛ред TaintBasedEvictions рд╕рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрдк рд╕рд╣рди рдХреЗ рддрд╣рдд рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рдХреЗ рднреАрддрд░ рдЕрдкрдиреЗ рдлрд▓реА рдмреЗрджрдЦрд▓реА рд╕рдордп рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/#taint -based-evictions
рдЗрдирдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: https://github.com/kubernetes/kubernetes/blob/master/plugin/pkg/admission/defaulttolerationseconds/pmission.go#L34
рдЙрди рджреЛ рдЭрдВрдбреЛрдВ рдХреЛ рдХреНрдпреВрдм-рдЕрдкреАрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
// Controller will not proactively sync node health, but will monitor node
// health signal updated from kubelet. There are 2 kinds of node healthiness
// signals: NodeStatus and NodeLease. NodeLease signal is generated only when
// NodeLease feature is enabled. If it doesn't receive update for this amount
// of time, it will start posting "NodeReady==ConditionUnknown". The amount of
// time before which Controller start evicting pods is controlled via flag
// 'pod-eviction-timeout'.
// Note: be cautious when changing the constant, it must work with
// nodeStatusUpdateFrequency in kubelet and renewInterval in NodeLease
// controller. The node health signal update frequency is the minimal of the
// two.
// There are several constraints:
// 1. nodeMonitorGracePeriod must be N times more than the node health signal
// update frequency, where N means number of retries allowed for kubelet to
// post node status/lease. It is pointless to make nodeMonitorGracePeriod
// be less than the node health signal update frequency, since there will
// only be fresh values from Kubelet at an interval of node health signal
// update frequency. The constant must be less than podEvictionTimeout.
// 2. nodeMonitorGracePeriod can't be too large for user experience - larger
// value takes longer for user to see up-to-date node health.
рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЪреАрдл рдПрд▓реЗрдХреНрдЬреЗрдВрдбрд░!
рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ред рдореИрдВрдиреЗ рдкреЙрдбреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд▓рд┐рдП рдлрд▓реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╣реИрдВ:
kubectl describe pod busybox-74b487c57b-95b6n | grep -i toleration -A 2
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛:
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 2
- key: "node.kubernetes.io/not-ready"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 2
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
рдиреЛрдб рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдиреЛрдб рд╕реНрдерд┐рддрд┐ "NotReady" рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ 2 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдкреЙрдб рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдм рдкреЙрдб-рдЗрд╡реЗрд╢рди-рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдкреЙрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рдардВрдбрд╛!
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!
@danielloczi рд╣рд╛рдп рдбреИрдирд┐рдпреЛрд▓реЛрдХреА, рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рднреА рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ
@ 323929 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @danielloczi рдХреНрдпреВрдм-рдХрдВрдЯреНрд░реЛрд▓рд░-рдореИрдиреЗрдЬрд░ рдореЗрдВ pod-eviction-timeout
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Taint based Evictions
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ Taint based Evictions
рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ рдореЗрд░реЗ рд▓рд┐рдПред
рдпрд╣ рд╕рд╣реА рд╣реИ: рдореИрдВрдиреЗ рдмрд╕ Taint based Eviction
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рдХреНрдпрд╛ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдХрд┐ рдореИрдВ рд╣реЗрд▓реНрдо рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реА рддреИрдпрд╛рд░ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ
+1 рдкреНрд░рддрд┐ рдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдкреНрд░рддрд┐ рдлрд▓реА рдпрд╛ рдкреНрд░рддрд┐ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдирд┐рдВрдЧ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧреА рд╣реИ: рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдордЭрджрд╛рд░ рд╡реИрд╢реНрд╡рд┐рдХ рдореВрд▓реНрдп рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдФрд░ 5 рдореАрдЯрд░ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдИ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд╛рдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВред
рдореИрдВ рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЯреЗрди рдЖрдзрд╛рд░рд┐рдд рдмреЗрджрдЦрд▓рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреЙрдб-рдмреЗрджрдЦрд▓реА-рдЯрд╛рдЗрдордЖрдЙрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдореИрдВ рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЯреЗрди рдЖрдзрд╛рд░рд┐рдд рдмреЗрджрдЦрд▓рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреЙрдб-рдмреЗрджрдЦрд▓реА-рдЯрд╛рдЗрдордЖрдЙрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдлрд▓реА рдмреЗрджрдЦрд▓реА рдХреЛ apiserver рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/
рдореИрдВрдиреЗ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: --default-not-ready-toleration-seconds рдФрд░ --default-unreachable-toleration-secondsред
рдЗрд╕ рдмрдЧ рдХреЛ рдмрдВрдж рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдореБрджреНрджрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХрд╛рдо-рдЖрд╕-рдкрд╛рд╕ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд▓реА-рдмреЗрджрдЦрд▓реА-рдЯрд╛рдЗрдордЖрдЙрдЯ рдзреНрд╡рдЬ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рд╡рд╣реА рдореБрджреНрджрд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЪреАрдл рдПрд▓реЗрдХреНрдЬреЗрдВрдбрд░!
рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ред рдореИрдВрдиреЗ рдкреЙрдбреНрд╕ рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд▓рд┐рдП рдлрд▓реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╣реИрдВ:
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛:
рдиреЛрдб рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреИрдирд╛рддреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдиреЛрдб рд╕реНрдерд┐рддрд┐ "NotReady" рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ 2 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдкреЙрдб рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдм рдкреЙрдб-рдЗрд╡реЗрд╢рди-рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдкреЙрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рдардВрдбрд╛!
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!