ααΎαααΆαααα
ααααΈαααααααααΈαααΆααααα»αααΆααααααΆαααΆ Flan αααα»ααααααΈαααΆααα½αα
αααααααααααα½αα
ααααα§ααααααααααααΎαα
αα αααααΆαα Kubernetes αααααΆαα
ααααααΆα
ααα»αααααα»αααααααααα
ααααααΆααααα’α·αααααΆαα’αα»αααα α
αΌαααΎαααααΎααααα½αααΆα ααα»α’αααΈααΆαααΆααΆα
αΆαααΆα
ααα
ααα Yandex ααΆαααααΆαααααα½α
α αΎα
ααα ααααΈααααΆα
α ααα»α’αααΈααΆαααΆααα?
αα αααα»ααααα»αα αα»αααααααΎα α αΆααααΆααααΈααΆαα αΆααααααΎαααααΆαααααΎααααΆαα Kubernetes αα αααα»αααΆαααα·α (α§ααΆα αααααΆα αααΎαααααΆαααααα) ααΎαααΆααα·ααααα»ααααααΎαα§αααααααααΆαααααα½αααααααΎα (deckhouse) αααααΆααα·ααΈααα ααΎαααααΆαααααααααΉαααααΎα±ααααΆααααα»ααααααΆααααααααΆαααααα Open Source . αααααΆααααα½αααααααΆ ααΎαααααααα ααΆαααααααα αα·αααααααα ααΆαααααααααααα»αααααααΎαααΆααα’αααααααααΎααΆαααααΆ α αΎααα αα α»ααααααααΆαα αααΎαααΆα 100 αααα½αααΆαα½α α αΎα ααΎααΆαααααααα ααΆαααααααααααααααΉαααΆα αααΎα αα·ααα αααα»αααααΆααααααααααααΆαααΆααα’ααα
α ααααααααααααΎ deckhouse ααΆααααΆαααΆαα»ααΆααα’αααααα αΆαααΆα ααααααΆααααααα·ααααα·ααΆαα αα»αααααΆα ααΆααααα½ααα·αα·αααααΆαα½αααΆααΆαααΆααααα½α αααααΆαα αα·αααΆαααΌαααααΉα ααΆααααααααααΆααα’αααααααΎααααΆααααΆααααα’ααααααααααααΆααΆααααα αααααΆααααΆαα αΌαααααΎααααΆαααααααααααααΆααα’αα α αΎαααΌα αααααα ααΎα ααΆααααΆαα ααα»α ααΆαααα»αααΆαααα‘αΎαα ααααα "ααΌαα‘αΎα" αααααααα αααα»ααααααααααΆααααααΆααααααααααααααα αααααααΆααΏααααΆαα·αα’αΆα αα αα½α α¬ααΉαααΆαα±ααααΆααααααΌαααΆααα·ααααΆαααΆαα»ααΆαααααααΆαα
NBα αααααΆαααα·αααααααααααΎα α αΎαααΆαα·αααΆααΆααααΆααααΆααα ααΎααα·αααΆααα·ααΈαααααααΆαααΆα’ααααααααααααΆαα½αααααΆαααααααΆα Kubernetes clusters ααααααα½αα―αααΆααΆαααααΎαααααααααΆααααααααααα½α ααΆααααα αααααα ααααα·ααΈααα ααΎααα·αααΆααααα·ααααααα·αααααΆαααααα»αααααα·ααααα·ααΆα Kubernetes ααΈ Yandex α αΎαααΎαααΉααα·ααααααααΆαααΆααααααααΆαα½αααααααΆααααααααα αααα»αα’ααααααααααα
ααΎααΆααΆα’αααΈ α αΎααααααΆααα’αααααΆ?
ααΌα
αααα ααΎαααΆααα·ααΆααα½α
ααα αΎαα’αααΈαα·ααΈααΆαααααααααΎααααα»αααΆααααα»ααα
αααα»α Kubernetesα
αα αα α»ααααααααα α’ααααααααααααΆαααααααΆα αααΎαααΆααααααΎααααααα·ααΈαααααΆαααααΆααααΆαααααΎααααΆααααΆαααααααααα½αααααΆααα·ααΆαααΆααααΆαααα αααα»α Kubernetes α ααααα·αααΎα’ααααααααααααααα·αααΆααααααα·ααΈαααααΆαααααααα ααα»αααααα»αααΆαα αΆαααΆα αααΆααα’ααααααΌαααΆααααααααΆαααα API αααααααΆαα’αααΈααΆααΆααα’αααααΈααΆαα’αα»αααααααααα·ααΈαααααΆααααααα½αα―ααααααα αααααΆα’αααΈαααααΆαααΎαα‘αΎαααΆαα½α Yandex.Cloud α
ααΎαααααΆααΌαααααΆααααααΆααααΆαα’αα·αααααα Operation
ααΎααααΈααΆαααΆαααααΆαααΆαααααααα·ααααα·ααΆααααααααΎαααΆαααΌα (α§ααΆα ααα ααΆααααααΎαααΆαααααΈ)α ααΎααααΈααααΎα’ααααααααααΆαα½α Yandex.Cloud API ααΌαααααΎ
ααααααααααΆαααΆααααααΆαααααΎ
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ααααααβαα·ααα
αα αα α»ααααααα’αααααΎαααααΆαααααα»αααΆαααΌα ααΆααααααα
- αααααΆαα·αααΆααα αααα»ααααααααΆααα’ααααα αααααααααα ααΆα topology αα nodes αααα»α cluster;
- ααΆαααααΈααααααΆααααααΆααΈαα»αα αα;
- ααααΆααααααΌαααα ααααα
αααααΆααααααΆααααΆα (Yandex.Cloud
αα·αααΆαααα αααααΎαααΆααααααααΌαααΆααααααα αααΆαααΈααα·αααα·α) α αααααΆααααααααΆαα’αααΈαααααααα’αααααΎαααααααΌααααααα ααΎααααΈααααααααα αααααα·αααΆαααΆαααΊα αΆααααΆααααα’αΆα ααααΎαα ααΆα ααΌαααΎαααΆααααααα
αα αααα’ααΆαα ααΎααααααααΉαα’αα»ααααααΆαααΆαααααααααΆααααΆααααααΎα αα·ααα»αααΌαααααΆαα
ααΆαααααΆαα αααααα·ααα·ααΈααΎααααΈααααααααΆα
ααααααααααααΆααααα»αααΆααααααΎαααΈααααα»ααααααααΆααΆααααααααα αααα»α Yandex.Cloud API ααΊααΆααΆαααααααααααααΎα±ααααΆαααΆααααα»αααααΆααααααααα·ααααα·ααΆαααααΆααααααΌαααα ααααααΆαα PV (ααααα·αααα‘ααααΆαααα αΌα): αααα»αααααΈααα α αΆαααΆα αααααΌααααααααααααα·ααΈαααααααΎααΆαα α αΎααααα’αΆα αααααΆαα±αααααααα·ααΈαααααααΎαααΆα
αααααΎαααααΆα VolumeExpansion.OFFLINE
) αααααΆααααααααΎαααΆαααααΆααααααΎαααΈααα½αααααααΎαααΆαααΌα
αααα
ααααα·αααΎαααααα·ααΈαααα½αααΆααα
VolumeExpansion.OFFLINE
αααααααΆααααααΈα αα·αααααα·αααα‘ααααααΌαααΆαααααα»αααααααΆα α¬ααΆααα ααΎααααΆαααα αααααααControllerExpandVolume
ααααΌαααα α αααααααΆααααΈα
- αααααα·ααΈαααα½αααΆαα§ααααααααααΆ
PUBLISH_UNPUBLISH_VOLUME
αααααααΆα αα·αControllerUnpublishVolume
ααααΌαααΆαα α ααααααααααα¬βαααααβααα
- αααααα·ααΈαααα½ααα·αααΆαα§ααααααααααΆααα
PUBLISH_UNPUBLISH_VOLUME
αααααααΆα αααααα·ααΈαααα½αααΆαααααΆααSTAGE_UNSTAGE_VOLUME
αααααααΆα, αα·αNodeUnstageVolume
ααααΌαααΆααααα ααααααααααααα¬βαααααβααα
- αααααα·ααΈαααα½ααα·αααΆαα§ααααααααααΆααα
PUBLISH_UNPUBLISH_VOLUME
αααααααΆα α¬ααααΆααSTAGE_UNSTAGE_VOLUME
αααααααΆα, αα·αNodeUnpublishVolume
ααΆααααα αααααααααααα
αααααΆααααααΆ α’αααααααΌαααααΆα αααΆαα ααααΈαααΆαααΈααα·αααα·α αα»αααααααααΈαααΆα
ααααααΆαααΆαααααααΆα’αα»αα ααΆαα’αα»αααα ααΆααααααΆαα CSI ααΆαααα sidecars αα·ααααααααΆααααααΌαααΆαααΆαααααααα
- αα
αααα»ααα»αα
αα αα
csi-attacher
ααααα½αααααα½ααα»αααααΌαα ααααααααααΆααααααααΆααααααααΌαααΆααααΆααααα αα»αααΆαααααα·αααααΌαααΆαα’αα»αααααααα»αααΆαααααΆααααααΌαααα ααααα αααααΆαααα ααΆααα·ααΆααααΆα’αααΈααΏααααααααΌαααΆαα αΆααααααΎααα ααΈααα . - ααΎβα’αααΈβαα
βααΆβαα»αβα
αα ααβαααα»αβααα·ααβααα? αααααα·ααΈαααα½α CSI αααα½αααΆαα·αααααΎα’ααααααααααΆαα½α Kubernetes API αα ααα»ααααααααΆααααααααΎααααα
ααΉαααΆαα α
ααΌααααα gRPC αααααααΎαα
ααΆααααα»αα
αα ααα α
α»αααααα
αααα»αααααΌαααΆαα’αα·αααα ααααα αααα Kubernetes α
αααα»αααααΈααααααΎα (αααααα·ααΈαααα½α CSI) ααααα·ααααα·ααΆαααααΆααααααΎαααΈαααΎααα ααΌα αααα
- ααΎαβααα½αβααΆαβααΆαβα α
βααΌααααα gRPC
ControllerExpandVolume
; - ααΎααααα»αααααΆααΆααααααΎαααΈααα αααα»α API ααα»ααααααΎαααα½αααΆαααα α»αα’αααΈααΆααα·αα’αΆα αα αα½α ααααααα·ααααα·ααΆααααααΆαααααΆαααααΌαααΆαααααα
- ααΎααααααΆαα»αα§ααααααααααα’ααααααααΆαααΆααα
αααα»ααααααΈαααααΆαααΆααααααααα·ααααα·ααΆαααΎαα‘αΎαα
αΆαααΆα
αααααΌαα’αα»ααααα ααΆααααααααα αααααΆααααΆααααααα ααΎαααΉαα α
αααααΈαααααΆααΆ
volumeResizeRequired
; - αααααααααααΎααΆαα
αααααααα Kubernetes ααΉαα
αΆααααααΎαααΆα‘αΎααα·αα ααΌα
ααααααΆααΆααα·αααΆααααααααΆααΎααααΈαααα (
ControllerPublishVolume
) αα»αααααααα ααααααα·ααααα·ααΆααααααΎααα αααααααΆααΆααααα ααΎααα·αα·αααααΎαααΆααΈααααααΆααααααα±αααα αααααα·ααααα»αvolumeResizeRequired
αα·ααααα‘ααααα α»ααα½α; - αααααα·ααΈαααααΆ CSI ααααΆααΆαααααΎααααα·ααααα·ααΆαααααΆααααααΌαααα αα‘αΎααα·αα ααααα·αααΎααααα·ααααα·ααΆαααΆααααααα αααααΆααααααααΆαα
ααααΈ
volumeResizeRequired
; - αααααΆααα ααααααααΆααααΆαααΆααααΈ
volumeResizeRequired
,ControllerPublishVolume
ααααααΆααααααααααα ααΆαααααΌαααΆααααα ααα αΆααααααΎαα
α’αααΈααααααααΆαααΎααα
ααΆαααααααααααααΆαα ααα»ααααααΌα
αααααααΆαααα α»αα αααααΈαααΆα
func DefaultControllerRateLimiter() RateLimiter {
return NewMaxOfRateLimiter(
NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),
// 10 qps, 100 bucket size. This is only for retry speed and its only the overall factor (not per item)
&BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
)
}
αααα’αΆα αααααΆαα±ααααααα·ααααα·ααΆααααααΈαααΆαααααΌαααΆααααααααααα 15+ ααΆααΈ α αΎαααΌα αααα αααααααααΌαααααΆαα·αα’αΆα ααααΎααΆαααα
αααααΎααααα½αααααααααΆααααα½α αα·αααααΆαααΆαααΊα
αΆααααΆαα’αα»ααααΆαα±ααααΎαααΆααααααααααααααΆααα
αΆαααααΆααααααΆαα»ααααΊααΆαααααΎααααΆααααααααΆααααα
ααααααΎαααΆαα½αααΉααααααααααααααααΆα’αα·ααααΆα
workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)
ααΎααα·αααΆαα αΆαααα»αααΆααΆα αΆαααΆα αααΎααααΈα αΆααααααΎαααΆααα·ααΆααααΆααΆαααααΆαα αα·ααα½ααα»αα§ααααααααααααααΆααααα αα ααΈαααααααΆαααααΆααααααΌαααα αααΆααααα αααααΆαααΊααΆααΆααααα αααααααΉαααΆααααααΆααααΈα’ααααααααααααΆαααααΆααα’ααα
ααΎααααΎααΌα ααααα ααΎααααΈα αΆααααααΎαααααΎ?
αααααα·ααΈαααααΆααααΌαααΆαααΆαααααα ααΎ Kubernetes αααα 1.15 αα·ααααααααΆααααα αααααΆααα’αααααΎαααααΎααααΈααααΎααΆα αααααΌαααΆαααΆααααααααααΌααααααααα
- ααΆααααα
--allow-privileged
ααααααα αααααtrue
αααααΆαααααΆαααΈααα API αα·α kubelet; - αα½ααααα
αΌα
--feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true
αααααΆαααααΆαααΈααα API αα·α kubelet; - ααΆαααααααΌααααα (
ααΆαααααααΌααααα ) ααααΌαααααΎααα ααΎα αααααα αα αααααααΎ Docker αααα·αααααΌαααααααααα ααΆααααααααααΎααααΈα’αα»ααααΆαα±αααααααααααΆαα αααααααα
ααΆααααα αΆαα
αΆαααΆα
ααααααΆααααΆαααα‘αΎαααααααα½αα―αα
αααααΆααα’αααααΎαααααΎααααΈααααΎααΆαα’αααααΉαααααΌαααΆαααΌα ααΆαααααα:
- αααααΆααα’ααααααααΆααααα
αααα»α manifest (
folder-id
) Yandex.Cloud (ααΎαα―αααΆα ); - ααΎααααΈααααΎα’ααααααααααΆαα½α Yandex.Cloud API αααααα·ααΈαααααΆ CSI ααααΎααααΈααααΆααααα αα
αααα»αααΆααααα αΆα ααΆααααααΆααααααΌαααααααααΆαα
ααΌααααααααΆαα’αα»ααααΆα ααΈααααΈααααΆααααα αα αααα»αα―αααΆαααΆααα·αααααΆ , αααααααααΎαααααΈααααΆαααα αα·αααα½αααΆαααα
ααα»αααΆααα’αα -
ααΆαααΆααααααααααααα
ααΆαααααα ααΎαα ααααααααααΆααααΆ ααΎαααΆαα’αα»αααααααααα·ααΈαααααΆ CSI ααααα·αααααααααΆαααααααααΆααααΆααα’ααα αΆααααααα»αααΆαααααααααααα·ααΈααααΈαααΆααα αααα»α Go ααααα ααα»αααααααααΆααααααααΌαααΆααααααΆαααα αααα»ααααα»αα αα»αα ααΆα αΆααααΈααΌα ααΆαα·αααΆααααααααααααααΆααααΎααααα»αααΆααααααααΆααΆαα’αα»ααααααααΆααααααααΎααα ααΌα ααααααααα·αααΎ Yandex αααα αΆαα αααΆααα’αΆαααααα αα·ααααααα α α·αααααααααΆααααα’αααααΎααα ααΎαααΉαααΈαααΆααααα»αααΆααααααααααΆαααα αα½αααα
ααΎαααΈαααααα Yandex αααα ααααΆααΆαααΆαα’αα»ααααααααΆαααααααααα½ααααααααα·ααΈαααααΆ CSI αα αααα»αα ααααα Kubernetes αααααΆαααααααααααααααααα½α αααα’αΆα ααααΌαααΆαα ααααααΆααα αααα»α Open Source α ααΎαααααΎαααΎαααΆαααααΎαααααΆαα’αα·αααααααααααΆαααααααα’ααααααααααα - αα ααααααΉαα’αΆα ααααΎααααΆαααααααα·ααΈαααααΆαααααΆααααααΆααααΈα’ααααααααααααΆ α αΎααα·ααααααααΈαααα»αα αα»αααΆααΈααΈααΈαααααα
PS
ααΌαα’αΆαααααααα ααΎαααααααααααΎαα
- Β«
αααααα·ααΈαααα½αααααα·αααα‘αααααααΆααααΆααααα»α Kubernetesα ααΈ Flexvolume αα CSI Β» - Β«
ααΎααααααΈα ααα»α αααααΆαααααα»ααα»αααΊααα (αα αααα»α Kubernetes αα·ααα·αααααΉαααααα»ααααα) Β» - Β«
ααΎααΆααΆααααα½α αα·αααΆααααα½ααααα»αααΆααααα αα ααααα Kubernetes αα? αααααΆαβααααα·ααααα·αα addon Β» - Β«
ααΆααααααΈα αα·ααααααα Kubernetes (αααΆαααΆαααααΌαα αα·αααΈααα’αΌ) "α
ααααα: www.habr.com