Π‘Π΅Π³ΠΎΠ΄Π½Ρ, Π² ΡΡΠ΅Π΄Ρ,
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, Π²Π·ΡΡΠ° ΠΈΠ·
Π£Π·Π»Ρ
ΠΠΎ-Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ (Π² ΡΡΠ°ΡΡΡΠ΅ Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ·Π»ΠΎΠ² K8s-ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² (Kubelet).
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Β«kubectl debug
, ΡΡ
ΠΎΠΆΠ°Ρ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ Ρ kubectl exec
: ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ (ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ exec
) ΠΎΠ½Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² pod’Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΊ pod’Ρ:
kubectl debug -c debug-shell --image=debian target-pod -- bash
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎΠ± ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
(ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π²
NB: ΠΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠΈΡΠ° Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠ»Π°Π³ΠΈΠ½
ΠΡΡΠ³ΠΎΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²ΠΎ β PodOverhead
PodSpec
Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ Overhead *ResourceList
(ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² RuntimeClass
, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ).
ΠΡΡ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ β ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ·Π»Π° (Node Topology Manager), ΠΏΡΠΈΠ·Π²Π°Π½Π½ΡΠΉ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΊ ΡΠΎΠ½ΠΊΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Kubernetes. ΠΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π° Π²ΡΠ·Π²Π°Π½Π° ΡΠ°ΡΡΡΡΠ΅ΠΉ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ (ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅Π»Π΅ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ
ΡΡΠ»ΡΠ³ ΠΈ Ρ.ΠΏ.) Π² Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ
ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ CPU ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² Kubernetes Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π΄ΠΎΡΡΠΈΠ³Π°Π»ΠΈΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°Π·ΡΠΎΠ·Π½Π΅Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ (CPU manager, Device manager, CNI), Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌ Π΄ΠΎΠ±Π°Π²ΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ½ΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΈ ΡΠΏΡΠΎΡΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ
β ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
topology-aware β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Kubelet. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ β Π²
Π‘Ρ
Π΅ΠΌΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Topology Manager
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΠΈΡΠ° β ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡ
Π·Π°ΠΏΡΡΠΊΠ° (StartupProbeEnabled
) ΠΎΡΠΌΠ΅Π½ΡΠ΅Ρ β ΡΠΎΡΠ½Π΅Π΅, ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ β Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π»ΡΠ±ΡΡ
Π΄ΡΡΠ³ΠΈΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π΄ΠΎ ΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠ³Π΄Π° pod Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» ΡΠ²ΠΎΠΉ Π·Π°ΠΏΡΡΠΊ. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΈΡΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π»ΠΈ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°Π·Ρ Π² ΡΡΠ°ΡΡΡΠ΅ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ RuntimeClass, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Β«Π³Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΡΡ
ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ²Β». C
Π‘Π΅ΡΡ
ΠΠ²Π΅ Π·Π½Π°ΡΠΈΠΌΡΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠΈΡΠΈ, ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ (Π² Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ) Π² Kubernetes 1.16 β ΡΡΠΎ:
-
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° β IPv4/IPv6 β ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΅Π³ΠΎ Β«ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅Β» Π½Π° ΡΡΠΎΠ²Π½Π΅ pod’ΠΎΠ², ΡΠ·Π»ΠΎΠ², ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ½Π° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ IPv4-to-IPv4 ΠΈ IPv6-to-IPv6 ΠΌΠ΅ΠΆΠ΄Ρ pod’Π°ΠΌΠΈ, Ρ pod’ΠΎΠ² Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΡΡΠ°Π»ΠΎΠ½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Bridge CNI, PTP CNI ΠΈ Host-Local IPAM), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ Kubernetes, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ IPv4 ΠΈΠ»ΠΈ IPv6. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ β Π²KEP .ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ²ΠΎΠ΄Π° IP-Π°Π΄ΡΠ΅ΡΠΎΠ² Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ² (IPv4 ΠΈ IPv6) Π² ΡΠΏΠΈΡΠΊΠ΅ pod’ΠΎΠ²:
kube-master# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-controller 1/1 Running 0 20m fd00:db8:1::2,192.168.1.3 kube-minion-1 kube-master#
- ΠΠΎΠ²ΡΠΉ API Π΄Π»Ρ Endpoint β
EndpointSlice API . ΠΠ½ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Endpoint API Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ/ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ, ΡΡΠΎ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² control-plane (apiserver, etcd, endpoints-controller, kube-proxy). ΠΠΎΠ²ΡΠΉ API Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² API-Π³ΡΡΠΏΠΏΡ Discovery ΠΈ ΡΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ Π΄Π΅ΡΡΡΠΊΠΈ ΡΡΡΡΡ backend endpoint’ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅ΠΌ ΠΈΠ· ΡΡΡΡΡΠ΅ΠΉ ΡΠ·Π»ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Service ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² N ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²EndpointSlice
, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 100 endpoint’ΠΎΠ² (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ). Π EndpointSlice API ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΡΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π΅Π³ΠΎ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΡ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° IP-Π°Π΄ΡΠ΅ΡΠΎΠ² Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ pod’Π°, Π½ΠΎΠ²ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π΄Π»Ρ endpoint’ΠΎΠ² (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎReady
ΠΈNotReady
), Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ subsetting Π΄Π»Ρ endpoint’ΠΎΠ².
ΠΠΎ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΠ»ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ service.kubernetes.io/load-balancer-cleanup
ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΠΌΡΠΉ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΡ Ρ ΡΠΈΠΏΠΎΠΌ LoadBalancer
. Π ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° Β«Π·Π°ΡΠΈΡΡΠΊΠ°Β» Π²ΡΠ΅Ρ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ² Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°.
API Machinery
ΠΠ°ΡΡΠΎΡΡΠ°Ρ Β«Π²Π΅Ρ
Π° ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈΒ» Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π° Π² ΠΎΠ±Π»Π°ΡΡΠΈ API-ΡΠ΅ΡΠ²Π΅ΡΠ° Kubernetes ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π½ΠΈΠΌ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΡΡΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Π² ΡΡΠ°ΡΡΡ stable Π½Π΅ Π½ΡΠΆΠ΄Π°ΡΡΠΈΡ
ΡΡ Π² ΠΎΡΠΎΠ±ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ
-
Β«ΠΏΠΎΠ΄ΡΠ΅ΡΡΡΡΡΒ» (subresources) ΡΠΎ/status
ΠΈ/scale
Π΄Π»Ρ CustomResources; -
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΉ Π΄Π»Ρ CRD, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° Π²Π½Π΅ΡΠ½Π΅ΠΌ webhook’Π΅; -
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ (Π² K8s 1.15) Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (defaulting) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ (pruning) Π΄Π»Ρ CustomResources; -
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡ Π΅ΠΌΡ OpenAPI v3 Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ OpenAPI-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ CRD-ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, Π΄Π°Π²Π½ΠΎ ΡΡΠ°Π²ΡΠΈΠΉ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΌ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² Kubernetes:
ΠΠ²Π΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΡΠΈ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ:
Π Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠΈΠΌΡΠΌ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ ΡΡΠ°Π» SelfLink
β ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ URI, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ ΡΠ°ΡΡΡΡ ObjectMeta
ΠΈ ListMeta
(Ρ.Π΅. ΡΠ°ΡΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Kubernetes). ΠΠ°ΡΠ΅ΠΌ ΠΎΡ Π½Π΅Π³ΠΎ ΠΎΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ? ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ Β«ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎΠΌΡΒ» SelfLink
ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΊ Π²Π΅ΡΡΠΈΠΈ Kubernetes 1.20, Π° ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ β 1.21.
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π² ΠΎΠ±Π»Π°ΡΡΠΈ storage, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡΠΎΡΠ»ΡΡ
ΡΠ΅Π»ΠΈΠ·Π°Ρ
, Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ
- Π²ΠΏΠ΅ΡΠ²ΡΠ΅ (Π² Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ)
ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° CSI-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠ·Π»ΠΎΠ² Ρ Windows: Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΡ Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌΠΈ ΠΈ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠ΄ΡΡ Π½Π° ΡΠΌΠ΅Π½Ρ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ in-tree Π² ΡΠ΄ΡΠ΅ Kubernetes ΠΈ FlexVolume-ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌ ΠΎΡ Microsoft Π½Π° Π±Π°Π·Π΅ Powershell;
Π‘Ρ Π΅ΠΌΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CSI-ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π² Kubernetes Π΄Π»Ρ Windows - Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° CSI-ΡΠΎΠΌΠΎΠ² , ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π΅ΡΡ Π² K8s 1.12, Π΄ΠΎΡΠΎΡΠ»Π° Π΄ΠΎ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ; - Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ³ΠΎ Β«ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡΒ» (Ρ Π°Π»ΡΡΠ°- Π΄ΠΎ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ) Π΄ΠΎΡΡΠΈΠ³Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CSI Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΡΠΎΠΌΠΎΠ² (
CSI Inline Volume Support ).
ΠΠΎΡΠ²ΠΈΠ²ΡΠ°ΡΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Kubernetes DataSource
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ
PVC) ΡΠΎΠΆΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠΈΠ»Π° ΡΡΠ°ΡΡΡ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ.
ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ
ΠΠ²Π° Π·Π°ΠΌΠ΅ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ (ΠΎΠ±Π° Π² Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ):
-
β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Β«ΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΒ» Π½Π°Π³ΡΡΠ·ΠΎΠΊ pod’Ρ Π²ΠΌΠ΅ΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π²ΡΠΎΠ΄Π΅ Deployment ΠΈ ReplicaSet) ΠΈ ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (ΠΊΠ°ΠΊ ΠΆΡΡΡΠΊΠΎΠ³ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΡΠ³ΠΊΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, Ρ.Π΅. ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°). Π€ΠΈΡΠ° ΡΠ°ΡΡΠΈΡΠΈΡ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌΡΡ pod’ΠΎΠ², Π½ΡΠ½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠΈΡΠΌΠΈEvenPodsSpreading
PodAffinity
ΠΈPodAntiAffinity
, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ² Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π² ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅, Π° Π·Π½Π°ΡΠΈΡ β Π»ΡΡΡΡΡ Π²ΡΡΠΎΠΊΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ β Π²KEP . - ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ BestFit Policy Π² RequestedToCapacityRatio Priority Function Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ pod’ΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ
bin packing (Β«ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΒ») ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² (ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ, ΠΏΠ°ΠΌΡΡΡ), ΡΠ°ΠΊ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ (Π²ΡΠΎΠ΄Π΅ GPU). ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌ. Π²KEP .
ΠΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ pod’ΠΎΠ²: Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ best fit policy (Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ΅ΡΠ΅Π· default scheduler) ΠΈ Ρ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ΡΠ΅ΡΠ΅Π· scheduler extender)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ,
ΠΡΡΠ³ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ΅Π»ΠΈΠ·Π΅ Kubernetes 1.16 ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ ΠΏΠΎ
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Windows Ρ
ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠΈΠ»ΠΈΡΡ Kubeadm Π΄Π»Ρ ΡΡΠΎΠΉ ΠΠ‘ (Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ),Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ RunAsUserName
Π΄Π»Ρ Windows-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ),ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Group Managed Service Account (gMSA) Π΄ΠΎ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ,ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ mount/attach Π΄Π»Ρ ΡΠΎΠΌΠΎΠ² vSphere. -
ΠΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΆΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΎΡΠ²Π΅ΡΠ°Ρ API. Π Π°Π½ΡΡΠ΅ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ HTTP-ΡΠΈΠ»ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π» ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΡΡΡΠΈΡ Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅ ΡΠΆΠ°ΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ²Β»: ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅Accept-Encoding: gzip
Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅, ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΆΠ°ΡΡΠΉ Π² GZIP ΠΎΡΠ²Π΅Ρ, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°Π» 128 ΠΠ±. ΠΠ»ΠΈΠ΅Π½ΡΡ Π½Π° Go Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΆΠ°ΡΠΈΠ΅ (ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π½ΡΠΆΠ½ΡΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ), ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠ°Π·Ρ Π·Π°ΠΌΠ΅ΡΡΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ°. (ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.) -
Π‘ΡΠ°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ HPA ΠΈΠ·/Π΄ΠΎ Π½ΡΠ»Ρ pod’ΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ. ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²/Π²Π½Π΅ΡΠ½ΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ, ΡΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎ 0 ΡΠ΅ΠΏΠ»ΠΈΠΊ, ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠ΅ΡΡΡΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΡΠ° ΡΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° worker’Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ GPU, Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΡΡΠ°ΠΈΠ²Π°ΡΡΠΈΡ worker’ΠΎΠ² ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ GPU. - ΠΠΎΠ²ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ β
β Π΄Π»Ρ Β«ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΠΎΠ³ΠΎΒ» Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ. ΠΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ (Ρ.Π΅. ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»k8s.io/client-go/metadata.Client
metadata
) ΠΈΠ· ΡΠ΅ΡΡΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Ρ Π½ΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ· ΡΠ°Π·ΡΡΠ΄Π° ΡΠ±ΠΎΡΠ° ΠΌΡΡΠΎΡΠ° ΠΈ ΠΊΠ²ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. - Π‘ΠΎΠ±ΠΈΡΠ°ΡΡ Kubernetes
ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π· ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ (Β«Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Β» Π² in-tree) ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² (Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ). - Π ΡΡΠΈΠ»ΠΈΡΡ kubeadm
Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ (Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠ°ΡΡΠΈ kustomize Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉinit
,join
ΠΈupgrade
. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π°Π³ΠΎΠΌ--experimental-kustomize
, ΡΠΌ. Π²KEP . - ΠΠΎΠ²ΡΠΉ endpoint Π΄Π»Ρ apiserver β
, β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΅Π³ΠΎ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ (readiness). Π’Π°ΠΊΠΆΠ΅ Ρ API-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΡΠ»Π°Π³readyz
--maximum-startup-sequence-duration
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠΈ. - ΠΠ²Π΅ ΡΠΈΡΠΈ Π΄Π»Ρ Azure ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌΠΈ: ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
Π·ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (Availability Zones) ΠΈcross resource group (RG). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Azure Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ:-
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ AAD ΠΈ ADFS; -
Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ service.beta.kubernetes.io/azure-pip-name
Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ IP Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π½Π°Π³ΡΡΠ·ΠΊΠΈ; -
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈLoadBalancerName
ΠΈLoadBalancerResourceGroup
.
-
- Π£ AWS ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π»Ρ EBS Π² Windows ΠΈΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ API-Π²ΡΠ·ΠΎΠ²Ρ EC2DescribeInstances
. - Kubeadm ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ
ΠΌΠΈΠ³ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ CoreDNS ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΈ CoreDNS. - ΠΠΈΠ½Π°ΡΠ½ΠΈΠΊΠΈ etcd Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ Docker-ΠΎΠ±ΡΠ°Π·Π΅
ΡΠ΄Π΅Π»Π°Π»ΠΈ world-executable, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ°Π· Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠ°Π²Π°Ρ root. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±ΡΠ°Π· ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ etcdΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΠ» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²Π΅ΡΡΠΈΠΈ etcd2. - Π
Cluster Autoscaler 1.16.0 ΠΏΠ΅ΡΠ΅ΡΠ»ΠΈ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ distroless Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Π°, ΡΠ»ΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² (DigitalOcean, Magnum, Packet). - ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ/Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ: Go 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
Kubernetes 1.15: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
Kubernetes 1.14: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
Kubernetes 1.13: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
Kubernetes 1.12: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com