ΠΡΠ΅ΡΠ°, 9 Π΄Π΅ΠΊΠ°Π±ΡΡ,
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, Π²Π·ΡΡΠ° ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π½ΠΎΠ½ΡΠ°,
ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Ρ ΡΡΡΡΠΎΠΌ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ
ΠΠΎΡ ΡΠΆΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Kubernetes ΠΆΠ΄Π°Π»ΠΈ ΡΡΠΎΠΉ ΡΠΈΡΠΈ β Topology-aware service routing. ΠΡΠ»ΠΈ
ΠΠ±ΡΠ°Ρ ΠΈΠ΄Π΅Ρ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Β«Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡΒ» ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² Kubernetes. Β«ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΡΡΡΒ» Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Β«ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½ΡΒ» (topology level), ΠΊΠΎΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π»ΡΡΡΡΡ:
- ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΠ·Π΅Π»,
- ΡΠ° ΠΆΠ΅ ΡΠ°ΠΌΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΡΠΎΠΉΠΊΠ°,
- ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½,
- ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ,
- β¦
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΠΈ:
- ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ΅ Π² ΠΎΠ±Π»Π°ΡΠ½ΡΡ
ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡΡ
ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ Π·ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (multi-AZ) β ΡΠΌ.
ΡΠ²Π΅ΠΆΡΡ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°, Π½ΠΎ ΡΠ°Π·Π½ΡΡ AZ Π² AWS; - ΠΌΠ΅Π½ΡΡΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ/Π»ΡΡΡΠ°Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ;
- ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΠ·Π»Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΡΠ΄Π΅;
- ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ fluentd (ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²) Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ·Π΅Π» Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π»ΠΎΠ³ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ;
- β¦
Π’Π°ΠΊΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ, Β«Π·Π½Π°ΡΡΡΡΒ» ΠΎ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π΅ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ΠΌ network affinity β ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ServiceTopology
Π² Kubernetes β Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΈΡΠ° ΡΡΡΡΠΎΠ΅Π½Π° ΠΈ ΠΊΠ°ΠΊ Π΅ΠΉ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΡΠΈΡΠ°ΠΉΡΠ΅ Π²
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° IPv4/IPv6
ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ
- Π² kube-proxy
ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ (IPv4 ΠΈ IPv6); - Π²
Pod.Status.PodIPs
ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° downward API (ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΡΡΠΈΠΌ Π²/etc/hosts
ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ΅Π±ΡΡΡ Π΄Π»Ρ Ρ ΠΎΡΡΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ IPv6-Π°Π΄ΡΠ΅Ρ); - ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π²ΡΡ
ΡΡΠ΅ΠΊΠΎΠ² Π²
KIND (Kubernetes IN Docker) ΠΈkubeadm ; - ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠ΅ e2e-ΡΠ΅ΡΡΡ.
ΠΡΠΎΠ³ΡΠ΅ΡΡ ΠΏΠΎ CSI
ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ
ΠΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π° ΠΏΠΎ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΡΠΎΠΌΠΎΠ² Π½Π° CSI β
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΡΡΠ°ΡΡΡΠ΅ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ Π³ΠΎΡΠΎΠ²Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π΄Π»Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² AWS EBS (kubernetes.io/aws-ebs
) ΠΈ GCE PD (kubernetes.io/gce-pd
). ΠΡΠΎΠ³Π½ΠΎΠ·Ρ ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΠΌ ΡΠ°ΠΊΠΎΠ²Ρ:
Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ Β«ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½Π°ΡΒ» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ Π² K8s ΠΏΡΠΈΡΠ»Π° ΠΊ CSI, ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π²
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°ΡΡΡΠ° Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ (Ρ.Π΅. Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) Π² ΡΠ΅Π»ΠΈΠ·Π΅ Kubernetes 1.17 Π΄ΠΎΡΡΠΈΠ³Π»Π° Π΄ΡΡΠ³Π°Ρ Π·Π½Π°ΡΠΈΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ CSI, Π±Π΅ΡΡΡΠ°Ρ ΡΠ²ΠΎΡ Π½Π°ΡΠ°Π»ΠΎ (Π°Π»ΡΡΠ°-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ) Π² K8s 1.12, β
- ΡΠ°Π·Π±ΠΈΠ²ΠΊΠ° sidecar’Π° CSI external-snapshotter Π½Π° Π΄Π²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°,
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ΅ΠΊΡΠ΅Ρ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ (deletion secret) ΠΊΠ°ΠΊ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠ½Π°ΠΏΡΠΎΡΠ° ΡΠΎΠΌΠ°,
- Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (finalizer) Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ API-ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ½Π°ΠΏΡΠΎΡΠ° ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΡΠ²ΡΠ·Π΅ΠΉ.
ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅Π»ΠΈΠ·Π° 1.17 ΡΠΈΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΡΡΡ
CSI-Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ²: GCE Persistent Disk CSI Driver, Portworx CSI Driver ΠΈ NetApp Trident CSI Driver. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²
Cloud Provider Labels
ΠΠ΅ΠΉΠ±Π»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ°ΡΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΠ·Π»Ρ ΠΈ ΡΠΎΠΌΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°, Π±ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² Kubernetes ΠΊΠ°ΠΊ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΡ ΡΠΆΠ΅ ΠΎΡΠ΅Π½Ρ Π΄Π°Π²Π½ΠΎ β Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΅Π»ΠΈΠ·Π° K8s 1.2 (Π°ΠΏΡΠ΅Π»Ρ 2016 Π³ΠΎΠ΄Π°!). Π£ΡΠΈΡΡΠ²Π°Ρ ΠΈΡ
ΡΠΈΡΠΎΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
ΠΠΎΡΠ΅ΠΌΡ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΠΏΠΎ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠΌ):
-
beta.kubernetes.io/instance-type
βnode.kubernetes.io/instance-type
-
failure-domain.beta.kubernetes.io/zone
βtopology.kubernetes.io/zone
-
failure-domain.beta.kubernetes.io/region
βtopology.kubernetes.io/region
β¦ Π½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈ ΠΏΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΡΠ°ΡΡΠΌ Π½Π°Π·Π²Π°Π½ΠΈΡΠΌ (Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ). ΠΠΏΡΠΎΡΠ΅ΠΌ, Π²ΡΠ΅ΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ Π½Π° Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π»Π΅ΠΉΠ±Π»Ρ.
Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ kubeadm
Π ΡΠΎΡΠΌΠ°ΡΠ΅ Π°Π»ΡΡΠ°-Π²Π΅ΡΡΠΈΠΈ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠΎΠΉ ΡΠΈΡΠΈ (ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ
Π₯ΠΎΡΡ Kubernetes ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π²ΡΡΠ½ΡΡ Π²ΡΡΡΠ½ΡΡ, ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ (Π΅ΡΠ»ΠΈ Π½Π΅ Π΄Π΅-ΡΡΠ΅) Π΄Π»Ρ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ kubeadm. ΠΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π²ΡΠΎΠ΄Π΅ Terraform ΠΎΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° kubeadm Π΄Π»Ρ Π΄Π΅ΠΏΠ»ΠΎΡ Kubernetes. ΠΠ°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² Cluster API Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ bootstrapping’Π° Kubernetes Ρ kubeadm ΠΈ cloud-init.
ΠΠ΅Π· ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅ Π±Π΅Π·ΠΎΠ±ΠΈΠ΄Π½ΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠ»ΠΎΠΌΠ°ΡΡ Terraform, Cluster API ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ kubeadm.
Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΡ ΠΏΠ»Π°Π½Π°Ρ Π·Π½Π°ΡΠΈΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° (Π² Π²ΠΈΠ΄Π΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°) Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ kubeadm:
-
alpha certs
-
config images list
-
init
-
token create
-
token list
-
upgrade plan
-
version
ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ JSON-ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ kubeadm init -o json
:
{
"node0": "192.168.20.51:443",
"caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
"token": {
"id": "5ndzuu.ngie1sxkgielfpb1",
"ttl": "23h",
"expires": "2019-05-08T18:58:07Z",
"usages": [
"authentication",
"signing"
],
"description": "The default bootstrap token generated by 'kubeadm init'.",
"extraGroups": [
"system:bootstrappers:kubeadm:default-node-token"
]
},
"raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}
Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ Π΄ΡΡΠ³ΠΈΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²
ΠΠΎΠΎΠ±ΡΠ΅ ΠΆΠ΅, ΡΠ΅Π»ΠΈΠ· Kubernetes 1.17 ΡΠΎΡΡΠΎΡΠ»ΡΡ ΠΏΠΎΠ΄ Π΄Π΅Π²ΠΈΠ·ΠΎΠΌ Β«Π‘ΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡΒ». Π’ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΠΎΠ²Π°Π» ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΠΈ Π² Π½ΡΠΌ (ΠΈΡ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ β 14) ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡ GA. Π‘ΡΠ΅Π΄ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΡ :
- Β«ΠΏΠΎΠΌΠ΅ΡΠΊΠ°Β» ΡΠ·Π»ΠΎΠ² ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ (
), ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ°ΡΡΡ Π²TaintNodesByCondition
K8s 1.8 ; -
Watch Bookmarks β Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΌΠ΅ΡΠΊΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ (resourceVersion
) ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ watch’Π΅ΠΌ; -
Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (defaulting) Π΄Π»Ρ Custom Resources; -
ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π² pod’Π΅ process namespaces; -
ScheduleDaemonSetPods
βΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ pod’ΠΎΠ² Π² DaemonSet Ρ ΠΏΠΎΠΌΠΎΡΡΡ kube-scheduler (Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° DaemonSet); -
Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π»ΠΈΠΌΠΈΡΡ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΌΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΡΠ·Π»Π°; -
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ, ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΊΠ°ΠΊsubPath
; -
ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Kubelet heartbeats Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Lease API; - Β«Π·Π°ΡΠΈΡΠ° ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°Β» (
Finalizer Protection ) Π΄Π»Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π½Π°Π³ΡΡΠ·ΠΊΠΈ (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Service’Π° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ² LoadBalancer’Π°); -
ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ kube-apiserver Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ watches, Π½Π°Π±Π»ΡΠ΄Π°ΡΠΈΡ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², β Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΠ·Π±Π΅Π³Π°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ watcher’Π°.
ΠΡΠΎΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Π² Kubernetes 1.17, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ Π²ΡΡΠ΅. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ
(Π° Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ½Ρ β ΡΠΌ.
- Π΄ΠΎ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ Β«Π΄ΠΎΡΠΎΡΠ»Π°Β» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ ΡΠΈΡΠ°
;RunAsUserName
Π΄Π»Ρ Windows - Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ΠΏΠΎΡΡΠΈΠ³Π»ΠΎ EndpointSlice API (ΡΠΎΠΆΠ΅ ΠΈΠ· K8s 1.16), ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½Π΅ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ/ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ Endpoint API Π½Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ; - ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° pod’Ρ ΡΠ΅ΠΏΠ΅ΡΡ
ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΡΠ½kube-system
(ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎLimit Priority Class consumption ); - Π½ΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ Π΄Π»Ρ kubelet β
β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ CPU, Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ;--reserved-cpus
- Π΄Π»Ρ
kubectl logs
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π°Π³--prefix
, Π΄ΠΎΠ±Π°Π²Π»ΡΡΠΈΠΉ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ pod’Π° ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π»ΠΎΠ³Π°; - Π²
label.Selector
Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ RequiresExactMatch
; - Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π² kube-dns
ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ; -
hyperkube Π²ΡΠ΄Π΅Π»Π΅Π½ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ GitHub-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠ΅Π»ΠΈΠ·Ρ Kubernetes; - Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ
ΡΠ»ΡΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ kube-proxy Π΄Π»Ρ Π½Π΅-UDP-ΠΏΠΎΡΡΠΎΠ².
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ :
- Π²Π΅ΡΡΠΈΡ CoreDNS Π² ΡΠΎΡΡΠ°Π²Π΅ Π² kubeadm β 1.6.5;
- Π²Π΅ΡΡΠΈΡ crictl ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π΄ΠΎ v1.16.1;
- CSI 1.2.0;
- etcd 3.4.3;
- ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Docker ΠΏΠΎΠ²ΡΡΠ΅Π½Π° Π΄ΠΎ 19.03;
- ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Go, ΡΡΠ΅Π±ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Kubernetes 1.17, β 1.13.4.
P.S.
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
Kubernetes 1.16: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
Kubernetes 1.15: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
Kubernetes 1.14: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β»; - Β«
Kubernetes 1.13: ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com