ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes

ื”ืขืจื”. ืชืจื’ื•ื: ื”ื”ื™ืกื˜ื•ืจื™ื” ืžืื™ืจืช ื”ืขื™ื ื™ื™ื ื”ื–ื• ืฉืœ Omio - ืื’ืจื’ื˜ื•ืจ ื˜ื™ื•ืœื™ื ืื™ืจื•ืคื™ - ืœื•ืงื—ืช ืืช ื”ืงื•ืจืื™ื ืžื”ืชื™ืื•ืจื™ื” ื”ื‘ืกื™ืกื™ืช ืืœ ื”ืžื•ืจื›ื‘ื•ื™ื•ืช ื”ืžืขืฉื™ื•ืช ื”ืžืจืชืงื•ืช ืฉืœ ืชืฆื•ืจืช Kubernetes. ื”ื™ื›ืจื•ืช ืขื ืžืงืจื™ื ื›ืืœื” ืขื•ื–ืจืช ืœื ืจืง ืœื”ืจื—ื™ื‘ ืื•ืคืงื™ื, ืืœื ื’ื ืœืžื ื•ืข ื‘ืขื™ื•ืช ืœื ื˜ืจื™ื•ื•ื™ืืœื™ื•ืช.

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes

ื”ืื ืื™ ืคืขื ื ืชืงืขื” ืœืš ืืคืœื™ืงืฆื™ื”, ื”ืคืกืงืช ืœื”ื’ื™ื‘ ืœื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ื•ืœื ื”ืฆืœื—ืช ืœื”ื‘ื™ืŸ ืœืžื”? ื”ืกื‘ืจ ืืคืฉืจื™ ืื—ื“ ืงืฉื•ืจ ืœืžื’ื‘ืœื•ืช ืžื›ืกืช ืžืฉืื‘ื™ ื”ืžืขื‘ื“. ืขืœ ื–ื” ื ื“ื‘ืจ ื‘ืžืืžืจ ื–ื”.

TL; DR:
ืื ื• ืžืžืœื™ืฆื™ื ื‘ื—ื•ื ืœื”ืฉื‘ื™ืช ืืช ืžื’ื‘ืœื•ืช ื”-CPU ื‘-Kubernetes (ืื• ืœื”ืฉื‘ื™ืช ืžื›ืกื•ืช CFS ื‘-Kubelet) ืื ืืชื” ืžืฉืชืžืฉ ื‘ื’ืจืกื” ืฉืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก ืขื ื‘ืื’ ืžื›ืกืช CFS. ื‘ืœื™ื‘ื” ะธะผะตะตั‚ัั ืจืฆื™ื ื™ ื• ื™ื“ื•ืข ื”ื™ื˜ื‘ ื‘ืื’ ืฉืžื•ื‘ื™ืœ ืœืžืฆืขืจืช ื•ืขื™ื›ื•ื‘ื™ื ืžื•ื’ื–ืžื™ื
.

ื‘ืื•ืžื™ื• ื›ืœ ื”ืชืฉืชื™ืช ืžื ื•ื”ืœืช ืขืœ ื™ื“ื™ Kubernetes. ื›ืœ ืขื•ืžืกื™ ื”ืขื‘ื•ื“ื” ื”ืžืžืœื›ืชื™ื™ื ื•ื—ืกืจื™ ื”ืžื“ื™ื ื” ืฉืœื ื• ืคื•ืขืœื™ื ืืš ื•ืจืง ืขืœ Kubernetes (ืื ื• ืžืฉืชืžืฉื™ื ื‘-Google Kubernetes Engine). ื‘ืฉืฉืช ื”ื—ื•ื“ืฉื™ื ื”ืื—ืจื•ื ื™ื ื”ืชื—ืœื ื• ืœืจืื•ืช ื”ืื˜ื•ืช ืืงืจืื™ื•ืช. ืืคืœื™ืงืฆื™ื•ืช ืงื•ืคืื•ืช ืื• ืžืคืกื™ืงื•ืช ืœื”ื’ื™ื‘ ืœื‘ื“ื™ืงื•ืช ืชืงื™ื ื•ืช, ืžืื‘ื“ื•ืช ื—ื™ื‘ื•ืจ ืœืจืฉืช ื•ื›ื•'. ื”ืชื ื”ื’ื•ืช ื–ื• ืชืžื”ื” ืื•ืชื ื• ื‘ืžืฉืš ื–ืžืŸ ืจื‘, ื•ืœื‘ืกื•ืฃ ื”ื—ืœื˜ื ื• ืœืงื—ืช ืืช ื”ื‘ืขื™ื” ื‘ืจืฆื™ื ื•ืช.

ืกื™ื›ื•ื ื”ืžืืžืจ:

  • ื›ืžื” ืžื™ืœื™ื ืขืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ื•-Kubernetes;
  • ื›ื™ืฆื“ ืžื™ื•ืฉืžื™ื ื‘ืงืฉื•ืช ื•ืžื’ื‘ืœื•ืช CPU;
  • ื›ื™ืฆื“ ืžื’ื‘ืœืช CPU ืคื•ืขืœืช ื‘ืกื‘ื™ื‘ื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช;
  • ื›ื™ืฆื“ ืœืขืงื•ื‘ ืื—ืจ ืžืฆืขืจืช ืžืขื‘ื“;
  • ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื•ื ื™ื•ืื ืกื™ื.

ื›ืžื” ืžื™ืœื™ื ืขืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ื•-Kubernetes

Kubernetes ื”ื•ื ื‘ืขืฆื ื”ืกื˜ื ื“ืจื˜ ื”ืžื•ื“ืจื ื™ ื‘ืขื•ืœื ื”ืชืฉืชื™ื•ืช. ื”ืžืฉื™ืžื” ื”ืขื™ืงืจื™ืช ืฉืœื• ื”ื™ื ืชื–ืžื•ืจ ืžื›ื•ืœื”.

ืžื™ื›ืœื™ื

ื‘ืขื‘ืจ, ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ ื—ืคืฆื™ื ื›ืžื• Java JARs/WARs, Python Eggs ืื• ืงื•ื‘ืฆื™ ื”ืคืขืœื” ื›ื“ื™ ืœืจื•ืฅ ืขืœ ืฉืจืชื™ื. ืขื ื–ืืช, ื›ื“ื™ ืœื’ืจื•ื ืœื”ื ืœืชืคืงื“, ื”ื™ื” ืฆืจื™ืš ืœืขืฉื•ืช ืขื‘ื•ื“ื” ื ื•ืกืคืช: ื”ืชืงื ืช ืกื‘ื™ื‘ืช ื”ืจื™ืฆื” (Java/Python), ื”ืฆื‘ืช ื”ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื ื‘ืžืงื•ืžื•ืช ื”ื ื›ื•ื ื™ื, ื”ื‘ื˜ื—ืช ืชืื™ืžื•ืช ืœื’ืจืกื” ืกืคืฆื™ืคื™ืช ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื•ื›ื•'. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื”ื™ื” ืฆื•ืจืš ืœื”ืงื“ื™ืฉ ืชืฉื•ืžืช ืœื‘ ืงืคื“ื ื™ืช ืœื ื™ื”ื•ืœ ืชืฆื•ืจื” (ืฉื”ื™ื” ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืงื•ืจ ืœืžื—ืœื•ืงืช ื‘ื™ืŸ ืžืคืชื—ื™ื ื•ืžื ื”ืœื™ ืžืขืจื›ืช).

ืžื™ื›ืœื™ื ืฉื™ื ื• ื”ื›ืœ. ื›ืขืช ื”ื—ืคืฅ ื”ื•ื ืชืžื•ื ืช ืžื™ื›ืœ. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื™ื•ืฆื’ ื›ืžืขื™ืŸ ืงื•ื‘ืฅ ื”ืคืขืœื” ืžื•ืจื—ื‘ ื”ืžื›ื™ืœ ืœื ืจืง ืืช ื”ืชื•ื›ื ื™ืช, ืืœื ื’ื ืกื‘ื™ื‘ืช ื”ืคืขืœื” ืžืœืื” (Java/Python/...), ื›ืžื• ื’ื ืืช ื”ืงื‘ืฆื™ื/ื—ื‘ื™ืœื•ืช ื”ื“ืจื•ืฉื™ื, ืžื•ืชืงื ื™ื ืžืจืืฉ ื•ืžื•ื›ื ื™ื ืœึธืจื•ึผืฅ. ื ื™ืชืŸ ืœืคืจื•ืก ื•ืœื”ืจื™ืฅ ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ืฉืจืชื™ื ืฉื•ื ื™ื ืœืœื ืฉืœื‘ื™ื ื ื•ืกืคื™ื.

ื‘ื ื•ืกืฃ, ืžื›ื•ืœื•ืช ืคื•ืขืœื•ืช ื‘ืกื‘ื™ื‘ืช ืืจื’ื– ื—ื•ืœ ืžืฉืœื”ืŸ. ื™ืฉ ืœื”ื ืžืชืื ืจืฉืช ื•ื™ืจื˜ื•ืืœื™ ืžืฉืœื”ื, ืžืขืจื›ืช ืงื‘ืฆื™ื ืžืฉืœื”ื ืขื ื’ื™ืฉื” ืžื•ื’ื‘ืœืช, ื”ื™ืจืจื›ื™ื™ืช ืชื”ืœื™ื›ื™ื ืžืฉืœื”ื, ืžื’ื‘ืœื•ืช ืžืฉืœื”ื ืขืœ CPU ื•ื–ื™ื›ืจื•ืŸ ื•ื›ื•'. ื›ืœ ื–ื” ืžื™ื•ืฉื ื”ื•ื“ื•ืช ืœืชืช-ืžืขืจื›ืช ืžื™ื•ื—ื“ืช ืฉืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก - ืžืจื—ื‘ื™ ืฉืžื•ืช.

ืงื•ื‘ืจื ื˜

ื›ืคื™ ืฉืฆื•ื™ืŸ ืงื•ื“ื ืœื›ืŸ, Kubernetes ื”ื•ื ืžืชื–ืžืจ ืžื›ื•ืœื•ืช. ื–ื” ืขื•ื‘ื“ ื›ื›ื”: ืืชื” ื ื•ืชืŸ ืœื• ืžืื’ืจ ืฉืœ ืžื›ื•ื ื•ืช, ื•ืื– ืื•ืžืจ: "ื”ื™ื™, Kubernetes, ื‘ื•ืื• ื ืฉื™ืง ืขืฉืจื” ืžื•ืคืขื™ื ืฉืœ ื”ืงื•ื ื˜ื™ื™ื ืจ ืฉืœื™ ืขื 2 ืžืขื‘ื“ื™ื ื•-3 GB ืฉืœ ื–ื™ื›ืจื•ืŸ ื›ืœ ืื—ื“, ื•ื ืžืฉื™ืš ืœืคืขื•ืœ!" Kubernetes ื™ื“ืื’ ืœื›ืœ ื”ืฉืืจ. ื”ื•ื ื™ืžืฆื ืงื™ื‘ื•ืœืช ืคื ื•ื™ื”, ื™ืฉื™ืง ืงื•ื ื˜ื™ื™ื ืจื™ื ื•ื™ืคืขื™ืœ ืื•ืชื ืžื—ื“ืฉ ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ื™ื•ืฆื™ื ืขื“ื›ื•ืŸ ื‘ืขืช โ€‹โ€‹ืฉื™ื ื•ื™ ื’ืจืกืื•ืช ื•ื›ื•'. ื‘ืขื™ืงืจื• ืฉืœ ื“ื‘ืจ, Kubernetes ืžืืคืฉืจ ืœืš ืœืคืฉื˜ ืืช ืจื›ื™ื‘ ื”ื—ื•ืžืจื” ื•ื”ื•ืคื›ืช ืžื’ื•ื•ืŸ ืจื—ื‘ ืฉืœ ืžืขืจื›ื•ืช ืœืžืชืื™ืžื™ื ืœืคืจื™ืกื” ื•ื”ืจืฆื” ืฉืœ ื™ื™ืฉื•ืžื™ื.

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
Kubernetes ืžื ืงื•ื“ืช ืžื‘ื˜ื• ืฉืœ ื”ื“ื™ื•ื˜

ืžื”ืŸ ื‘ืงืฉื•ืช ื•ืžื’ื‘ืœื•ืช ื‘-Kubernetes

ืื•ืงื™ื™, ื›ื™ืกื™ื ื• ืžื›ื•ืœื•ืช ื•-Kubernetes. ืื ื—ื ื• ื’ื ื™ื•ื“ืขื™ื ืฉืžื™ื›ืœื™ื ืžืจื•ื‘ื™ื ื™ื›ื•ืœื™ื ืœืฉื”ื•ืช ืขืœ ืื•ืชื” ืžื›ื•ื ื”.

ื ื™ืชืŸ ืœืฆื™ื™ืจ ืื ืœื•ื’ื™ื” ืขื ื“ื™ืจื” ืžืฉื•ืชืคืช. ืžืชื—ื ืžืจื•ื•ื— (ืžื›ื•ื ื•ืช/ื™ื—ื™ื“ื•ืช) ื ืœืงื— ื•ืžื•ืฉื›ืจ ืœืžืกืคืจ ื“ื™ื™ืจื™ื (ืžื›ื•ืœื•ืช). Kubernetes ืคื•ืขืœ ื›ืžืชื•ื•ืš. ื ืฉืืœืช ื”ืฉืืœื”, ืื™ืš ืœืฉืžื•ืจ ืขืœ ื“ื™ื™ืจื™ื ืžืขื™ืžื•ืชื™ื ื–ื” ืขื ื–ื”? ืžื” ืื ืื—ื“ ืžื”ื, ืœืžืฉืœ, ื™ื—ืœื™ื˜ ืœืฉืื•ืœ ืืช ื”ืฉื™ืจื•ืชื™ื ืœื—ืฆื™ ืžื”ื™ื•ื?

ื›ืืŸ ื ื›ื ืกื•ืช ืœืชืžื•ื ื” ื‘ืงืฉื•ืช ื•ืžื’ื‘ืœื•ืช. ืžืขื‘ื“ ื‘ืงืฉ ื ื—ื•ืฅ ืืš ื•ืจืง ืœืžื˜ืจื•ืช ืชื›ื ื•ืŸ. ื–ื” ืžืฉื”ื• ื›ืžื• "ืจืฉื™ืžืช ืžืฉืืœื•ืช" ืฉืœ ื”ืžื™ื›ืœ, ื•ื”ื™ื ืžืฉืžืฉืช ืœื‘ื—ื™ืจืช ื”ืฆื•ืžืช ื”ืžืชืื™ื ื‘ื™ื•ืชืจ. ื‘ืžืงื‘ื™ืœ ื”ืžืขื‘ื“ ื”ื’ื‘ื•ืœ ื ื™ืชืŸ ืœื”ืฉื•ื•ืช ืœื”ืกื›ื ืฉื›ื™ืจื•ืช - ื‘ืจื’ืข ืฉื ื‘ื—ืจ ื™ื—ื™ื“ื” ืœืžื›ื•ืœื”, ื” ืœื ื™ื•ื›ืœ ืœืœื›ืช ืžืขื‘ืจ ืœื’ื‘ื•ืœื•ืช ืฉื ืงื‘ืขื•. ื•ื›ืืŸ ื ื•ืฆืจืช ื”ื‘ืขื™ื”...

ื›ื™ืฆื“ ืžื™ื•ืฉืžื™ื ื‘ืงืฉื•ืช ื•ืžื’ื‘ืœื•ืช ื‘-Kubernetes

Kubernetes ืžืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ ืžืฆืขืจืช (ื“ื™ืœื•ื’ ืขืœ ืžื—ื–ื•ืจื™ ืฉืขื•ืŸ) ื”ืžื•ื‘ื ื” ื‘ืœื™ื‘ื” ื›ื“ื™ ืœื™ื™ืฉื ืžื’ื‘ืœื•ืช CPU. ืื ื™ื™ืฉื•ื ื—ื•ืจื’ ืžื”ืžื’ื‘ืœื”, ืžืฆืขืจืช ืžื•ืคืขืœืช (ื›ืœื•ืžืจ ื”ื•ื ืžืงื‘ืœ ืคื—ื•ืช ืžื—ื–ื•ืจื™ ืžืขื‘ื“). ื‘ืงืฉื•ืช ื•ืžื’ื‘ืœื•ืช ืœื–ื™ื›ืจื•ืŸ ืžืื•ืจื’ื ื•ืช ืื—ืจืช, ื›ืš ืฉืงืœ ื™ื•ืชืจ ืœื–ื”ื•ืช ืื•ืชืŸ. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืคืฉื•ื˜ ื‘ื“ื•ืง ืืช ืžืฆื‘ ื”ื”ืคืขืœื” ืžื—ื“ืฉ ื”ืื—ืจื•ืŸ ืฉืœ ื”ืคื•ื“: ื”ืื ื”ื•ื "OOMKilled". ื”ื—ืกื ืช ื”ืžืขื‘ื“ ืื™ื ื” ื›ืœ ื›ืš ืคืฉื•ื˜ื”, ืžื›ื™ื•ื•ืŸ ืฉ-K8s ื”ื•ืคืš ืžื“ื“ื™ื ืœื–ืžื™ื ื™ื ืจืง ืœืคื™ ืฉื™ืžื•ืฉ, ืœื ืœืคื™ cgroups.

ื‘ืงืฉืช ืžืขื‘ื“

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
ื›ื™ืฆื“ ืžื™ื•ืฉืžืช ื‘ืงืฉืช CPU

ืœืžืขืŸ ื”ืคืฉื˜ื•ืช, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื”ืชื”ืœื™ืš ื‘ืืžืฆืขื•ืช ืžื›ื•ื ื” ืขื ืžืขื‘ื“ 4 ืœื™ื‘ื•ืช ื›ื“ื•ื’ืžื”.

K8s ืžืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ ืงื‘ื•ืฆืช ื‘ืงืจื” (cgroups) ื›ื“ื™ ืœืฉืœื•ื˜ ื‘ื”ืงืฆืืช ืžืฉืื‘ื™ื (ื–ื™ื›ืจื•ืŸ ื•ืžืขื‘ื“). ื–ืžื™ืŸ ืขื‘ื•ืจื• ืžื•ื“ืœ ื”ื™ืจืจื›ื™: ื”ื™ืœื“ ื™ื•ืจืฉ ืืช ื’ื‘ื•ืœื•ืช ืงื‘ื•ืฆืช ื”ื”ื•ืจื™ื. ืคืจื˜ื™ ื”ื”ืคืฆื” ืžืื•ื—ืกื ื™ื ื‘ืžืขืจื›ืช ืงื‘ืฆื™ื ื•ื™ืจื˜ื•ืืœื™ืช (/sys/fs/cgroup). ื‘ืžืงืจื” ืฉืœ ืžืขื‘ื“ ื–ื”ื• /sys/fs/cgroup/cpu,cpuacct/*.

K8s ืžืฉืชืžืฉ ื‘ืงื•ื‘ืฅ cpu.share ืœื”ืงืฆืืช ืžืฉืื‘ื™ ืžืขื‘ื“. ื‘ืžืงืจื” ืฉืœื ื•, ื”-cgroup ื”ืฉื•ืจืฉ ืžืงื‘ืœ 4096 ืฉื™ืชื•ืคื™ื ืฉืœ ืžืฉืื‘ื™ CPU - 100% ืžื”ืกืคืง ื”ืžืขื‘ื“ ื”ื–ืžื™ืŸ (ืœื™ื‘ื” ืื—ืช = 1; ื–ื”ื• ืขืจืš ืงื‘ื•ืข). ืงื‘ื•ืฆืช ื”ืฉื•ืจืฉ ืžื—ืœืงืช ืžืฉืื‘ื™ื ื‘ืื•ืคืŸ ืคืจื•ืคื•ืจืฆื™ื•ื ืœื™ ื‘ื”ืชืื ืœืžื ื™ื•ืช ื”ืฆืืฆืื™ื ื”ืจืฉื•ืžื™ื ื‘ื” cpu.share, ื•ื”ื, ื‘ืชื•ืจื, ืขื•ืฉื™ื ืื•ืชื• ื“ื‘ืจ ืขื ืฆืืฆืื™ื”ื ื•ื›ื•'. ื‘ืฆื•ืžืช Kubernetes ื˜ื™ืคื•ืกื™, ืœ-cgroup ื”ืฉื•ืจืฉ ื™ืฉ ืฉืœื•ืฉื” ื™ืœื“ื™ื: system.slice, user.slice ะธ kubepods. ืฉืชื™ ืงื‘ื•ืฆื•ืช ื”ืžืฉื ื” ื”ืจืืฉื•ื ื•ืช ืžืฉืžืฉื•ืช ืœื—ืœื•ืงืช ืžืฉืื‘ื™ื ื‘ื™ืŸ ืขื•ืžืกื™ ืžืขืจื›ืช ืงืจื™ื˜ื™ื™ื ื•ืชื•ื›ื ื™ื•ืช ืžืฉืชืžืฉ ืžื—ื•ืฅ ืœ-K8s. ืื—ืจื•ืŸ - kubepods - ื ื•ืฆืจ ืขืœ ื™ื“ื™ Kubernetes ื›ื“ื™ ืœื”ืคื™ืฅ ืžืฉืื‘ื™ื ื‘ื™ืŸ ืชืจืžื™ืœื™ื.

ื”ืชืจืฉื™ื ืฉืœืžืขืœื” ืžืจืื” ืฉืชืช-ื”ืงื‘ื•ืฆื” ื”ืจืืฉื•ื ื” ื•ื”ืฉื ื™ื™ื” ืงื™ื‘ืœื• ื›ืœ ืื—ืช 1024 ืžื ื™ื•ืช, ื›ืืฉืจ ืชืช-ืงื‘ื•ืฆืช kuberpod ื”ื•ืงืฆืชื” 4096 ืžื ื™ื•ืช ืื™ืš ื–ื” ืืคืฉืจื™: ืื—ืจื™ ื”ื›ืœ, ืœืงื‘ื•ืฆืช ื”ืฉื•ืจืฉ ื™ืฉ ื’ื™ืฉื” ื‘ืœื‘ื“ 4096 ืžื ื™ื•ืช, ื•ืกื›ื•ื ื”ืžื ื™ื•ืช ืฉืœ ืฆืืฆืื™ื” ืขื•ืœื” ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ืขืœ ืžืกืคืจ ื–ื” (6144)? ื”ื ืงื•ื“ื” ื”ื™ื ืฉื”ืขืจืš ื”ื’ื™ื•ื ื™, ื•ืœื›ืŸ ืžืชื–ืžืŸ ืœื™ื ื•ืงืก (CFS) ืžืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœื”ืงืฆื•ืช ื‘ืื•ืคืŸ ืคืจื•ืคื•ืจืฆื™ื•ื ืœื™ ืžืฉืื‘ื™ CPU. ื‘ืžืงืจื” ืฉืœื ื•, ืฉืชื™ ื”ืงื‘ื•ืฆื•ืช ื”ืจืืฉื•ื ื•ืช ืžืงื‘ืœื™ื 680 ืžื ื™ื•ืช ืจื™ืืœื™ื•ืช (16,6% ืž-4096), ื•-kubepod ืžืงื‘ืœ ืืช ื”ื ื•ืชืจื™ื 2736 ืžื ื™ื•ืช ื‘ืžืงืจื” ืฉืœ ื”ืฉื‘ืชื”, ืฉืชื™ ื”ืงื‘ื•ืฆื•ืช ื”ืจืืฉื•ื ื•ืช ืœื ื™ืฉืชืžืฉื• ื‘ืžืฉืื‘ื™ื ืฉื”ื•ืงืฆื•.

ืœืžืจื‘ื” ื”ืžื–ืœ, ืœืžืชื–ืžืŸ ื™ืฉ ืžื ื’ื ื•ืŸ ืœืžื ื•ืข ื‘ื–ื‘ื•ื– ืžืฉืื‘ื™ ืžืขื‘ื“ ืฉืื™ื ื ื‘ืฉื™ืžื•ืฉ. ื”ื•ื ืžืขื‘ื™ืจ ืงื™ื‘ื•ืœืช "ื‘ื˜ืœื”" ืœืžืื’ืจ ื’ืœื•ื‘ืœื™, ืฉืžืžื ื• ื”ื•ื ืžื•ืคืฅ ืœืงื‘ื•ืฆื•ืช ื”ื–ืงื•ืงื•ืช ืœื›ื•ื— ืžืขื‘ื“ ื ื•ืกืฃ (ื”ื”ืขื‘ืจื” ืžืชืจื—ืฉืช ื‘ืืฆื•ื•ื” ื›ื“ื™ ืœืžื ื•ืข ื”ืคืกื“ื™ ืขื™ื’ื•ืœ). ืฉื™ื˜ื” ื“ื•ืžื” ืžื™ื•ืฉืžืช ืขืœ ื›ืœ ื”ืฆืืฆืื™ื ืฉืœ ื”ืฆืืฆืื™ื.

ืžื ื’ื ื•ืŸ ื–ื” ืžื‘ื˜ื™ื— ื—ืœื•ืงื” ื”ื•ื’ื ืช ืฉืœ ื›ื•ื— ื”ืžืขื‘ื“ ื•ืžื‘ื˜ื™ื— ืฉืืฃ ืชื”ืœื™ืš ืœื "ื’ื•ื ื‘" ืžืฉืื‘ื™ื ืžืื—ืจื™ื.

ืžื’ื‘ืœืช ืžืขื‘ื“

ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉืชืฆื•ืจื•ืช ื”ื”ื’ื‘ืœื•ืช ื•ื”ื‘ืงืฉื•ืช ื‘-K8s ื ืจืื•ืช ื“ื•ืžื•ืช, ื”ื™ื™ืฉื•ื ืฉืœื”ืŸ ืฉื•ื ื” ื‘ืชื›ืœื™ืช: ื–ื” ืžื˜ืขื” ื‘ื™ื•ืชืจ ื•ื”ื—ืœืง ื”ื›ื™ ืคื—ื•ืช ืžืชื•ืขื“.

K8s ืžืขื•ืจื‘ ืžื ื’ื ื•ืŸ ืžื›ืกืช CFS ืœื™ื™ืฉื ืžื’ื‘ืœื•ืช. ื”ื”ื’ื“ืจื•ืช ืฉืœื”ื ืžืฆื•ื™ื ื•ืช ื‘ืงื‘ืฆื™ื cfs_period_us ะธ cfs_quota_us ื‘ืกืคืจื™ื™ืช cgroup (ื”ืงื•ื‘ืฅ ื ืžืฆื ื’ื ืฉื cpu.share).

ะ’ ะพั‚ะปะธั‡ะธะต ะพั‚ cpu.share, ืขืœ ื‘ืกื™ืก ื”ืžื›ืกื” ืชืงื•ืคืช ื–ืžืŸ, ื•ืœื ื‘ื›ื•ื— ื”ืžืขื‘ื“ ื”ื–ืžื™ืŸ. cfs_period_us ืžืฆื™ื™ืŸ ืืช ืžืฉืš ื”ืชืงื•ืคื” (ืขื™ื“ืŸ) - ื–ื” ืชืžื™ื“ 100000 ืžื™ืงืจื•ืžื˜ืจ (100 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”). ื™ืฉ ืืคืฉืจื•ืช ืœืฉื ื•ืช ืืช ื”ืขืจืš ื”ื–ื” ื‘-K8s, ืื‘ืœ ื”ื•ื ื–ืžื™ืŸ ืจืง ื‘ืืœืคื ืœืขืช ืขืชื”. ื”ืžืชื–ืžืŸ ืžืฉืชืžืฉ ื‘ืขื™ื“ืŸ ื›ื“ื™ ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืžื›ืกื•ืช ื‘ืฉื™ืžื•ืฉ. ืงื•ื‘ืฅ ืฉื ื™ cfs_quota_us, ืžืฆื™ื™ืŸ ืืช ื”ื–ืžืŸ ื”ื–ืžื™ืŸ (ืžื›ืกื”) ื‘ื›ืœ ืชืงื•ืคื”. ืฉื™ืžื• ืœื‘ ืฉื”ื•ื ืžืฆื•ื™ืŸ ื’ื ื‘ืžื™ืงืจื•-ืฉื ื™ื•ืช. ื”ืžื›ืกื” ืขืฉื•ื™ื” ืœื—ืจื•ื’ ืžืื•ืจืš ื”ืขื™ื“ืŸ; ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื”ื•ื ืขืฉื•ื™ ืœื”ื™ื•ืช ื’ื“ื•ืœ ืž-100 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”.

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืฉื ื™ ืชืจื—ื™ืฉื™ื ืขืœ ืžื›ื•ื ื•ืช 16 ืœื™ื‘ื•ืช (ืกื•ื’ ื”ืžื—ืฉื‘ ื”ื ืคื•ืฅ ื‘ื™ื•ืชืจ ืฉื™ืฉ ืœื ื• ื‘ืื•ืžื™ื•):

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
ืชืจื—ื™ืฉ 1: 2 ืฉืจืฉื•ืจื™ื ื•ืžื’ื‘ืœื” ืฉืœ 200 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”. ืื™ืŸ ืžืฆืขืจืช

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
ืชืจื—ื™ืฉ 2: 10 ืฉืจืฉื•ืจื™ื ื•ืžื’ื‘ืœื” ืฉืœ 200 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”. ื”ืžืฆืขืจืช ืžืชื—ื™ืœื” ืœืื—ืจ 20 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”, ื”ื’ื™ืฉื” ืœืžืฉืื‘ื™ ื”ืžืขื‘ื“ ื—ื•ื–ืจืช ืœืื—ืจ 80 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”

ื ื ื™ื— ืฉื”ื’ื“ืจืช ืืช ืžื’ื‘ืœืช ื”ืžืขื‘ื“ ืœ 2 ื’ืจืขื™ื ื™ื; Kubernetes ืชืชืจื’ื ืืช ื”ืขืจืš ื”ื–ื” ืœ-200 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”. ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉื”ืžื›ื•ืœื” ื™ื›ื•ืœื” ืœื”ืฉืชืžืฉ ื‘ืžืงืกื™ืžื•ื ืฉืœ 200ms ืฉืœ ื–ืžืŸ ืžืขื‘ื“ ืœืœื ืžืฆืขืจืช.

ื•ื›ืืŸ ืžืชื—ื™ืœ ื”ื›ื™ืฃ. ื›ืคื™ ืฉื”ื•ื–ื›ืจ ืœืขื™ืœ, ื”ืžื›ืกื” ื”ื–ืžื™ื ื” ื”ื™ื 200 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”. ืื ืืชื” ืขื•ื‘ื“ ื‘ืžืงื‘ื™ืœ ืขืฉืจ ื—ื•ื˜ื™ื ื‘ืžื›ื•ื ื” ื‘ืขืœืช 12 ืœื™ื‘ื•ืช (ืจืื” ืื™ื•ืจ ืœืชืจื—ื™ืฉ 2), ื‘ืขื•ื“ ืฉื›ืœ ืฉืืจ ื”ืชืจืžื™ืœื™ื ืื™ื ื ืคืขื™ืœื™ื, ื”ืžื›ืกื” ืชืžื•ืฆื” ืชื•ืš 20 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื” ื‘ืœื‘ื“ (ืžื›ื™ื•ื•ืŸ 10*20 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื” = 200 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”), ื•ื›ืœ ื”ื—ื•ื˜ื™ื ืฉืœ ื”ืชืจืžื™ืœ ื”ื–ื” ื™ืชืœื• ยป (ืžึทืฆืขึถืจึถืช) ืœืžืฉืš 80 ื”ืืœืง' ื”ื‘ืื•ืช. ื”ืืžื•ืจ ื›ื‘ืจ ื‘ืื’ ืžืชื–ืžืŸ, ืขืงื‘ ื›ืš ืžืชืจื—ืฉืช ืฆืจื•ืจ ื™ืชืจ ื•ื”ืžื™ื›ืœ ืœื ื™ื›ื•ืœ ืืคื™ืœื• ืœืขืžื•ื“ ื‘ืžื›ืกื” ื”ืงื™ื™ืžืช.

ื›ื™ืฆื“ ืœื”ืขืจื™ืš ืžืฆืขืจืช ื‘ืชืจืžื™ืœื™ื?

ืคืฉื•ื˜ ื”ื™ื›ื ืก ืœ-pod ื•ื‘ืฆืข cat /sys/fs/cgroup/cpu/cpu.stat.

  • nr_periods - ื”ืžืกืคืจ ื”ื›ื•ืœืœ ืฉืœ ืชืงื•ืคื•ืช ืžืชื–ืžืŸ;
  • nr_throttled - ืžืกืคืจ ืชืงื•ืคื•ืช ืžืฆืขืจื•ืช ื‘ื”ืจื›ื‘ nr_periods;
  • throttled_time - ื–ืžืŸ ืžืฆื˜ื‘ืจ ืžืฆื˜ื‘ืจ ื‘ื ื ื•-ืฉื ื™ื•ืช.

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes

ืžื” ื‘ืืžืช ืงื•ืจื”?

ื›ืชื•ืฆืื” ืžื›ืš, ืื ื• ืžืงื‘ืœื™ื ืžืฆืขืจืช ื’ื‘ื•ื”ื” ื‘ื›ืœ ื”ื™ื™ืฉื•ืžื™ื. ืœืคืขืžื™ื ื”ื•ื ื‘ืคื ื™ื ืคืขื ื•ื—ืฆื™ ื—ื–ืง ืžื”ืžื—ื•ืฉื‘!

ื–ื” ืžื•ื‘ื™ืœ ืœืฉื’ื™ืื•ืช ืฉื•ื ื•ืช - ื›ืฉืœื™ื ื‘ื‘ื“ื™ืงืช ืžื•ื›ื ื•ืช, ื”ืงืคืืช ืžื™ื›ืœ, ื”ืคืกืงื•ืช ื—ื™ื‘ื•ืจ ืœืจืฉืช, ืคืกืง ื–ืžืŸ ื‘ืงืจื™ืื•ืช ืฉื™ืจื•ืช. ื–ื” ืžื‘ื™ื ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืœื”ืฉื”ื™ื™ื” ืžื•ื’ื‘ืจืช ื•ืฉื™ืขื•ืจื™ ืฉื’ื™ืื•ืช ื’ื‘ื•ื”ื™ื ื™ื•ืชืจ.

ื”ื—ืœื˜ื” ื•ื”ืฉืœื›ื•ืช

ื”ื›ืœ ืคืฉื•ื˜ ื›ืืŸ. ื ื˜ืฉื ื• ืืช ืžื’ื‘ืœื•ืช ื”ืžืขื‘ื“ ื•ื”ืชื—ืœื ื• ืœืขื“ื›ืŸ ืืช ืœื™ื‘ืช ืžืขืจื›ืช ื”ื”ืคืขืœื” ื‘ืืฉื›ื•ืœื•ืช ืœื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ, ืฉื‘ื” ืชื•ืงืŸ ื”ื‘ืื’. ืžืกืคืจ ื”ืฉื’ื™ืื•ืช (HTTP 5xx) ื‘ืฉื™ืจื•ืชื™ื ืฉืœื ื• ื™ืจื“ ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ื‘ืื•ืคืŸ ืžื™ื™ื“ื™:

ืฉื’ื™ืื•ืช HTTP 5xx

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
ืฉื’ื™ืื•ืช HTTP 5xx ืขื‘ื•ืจ ืฉื™ืจื•ืช ืงืจื™ื˜ื™ ืื—ื“

ื–ืžืŸ ืชื’ื•ื‘ื” p95

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
ื–ืžืŸ ืื—ื–ื•ืจ ื‘ืงืฉืช ืฉื™ืจื•ืช ืงืจื™ื˜ื™, ืื—ื•ื–ื•ืŸ 95

ืขืœื•ื™ื•ืช ืชืคืขื•ืœ

ืžื’ื‘ืœื•ืช ืžืขื‘ื“ ื•ืžืฆืขืจืช ืื’ืจืกื™ื‘ื™ืช ื‘-Kubernetes
ืžืกืคืจ ืฉืขื•ืช ื”ืžื•ืคืข ืฉื”ื•ืฉืงืข

ืžื”ื• ื”ืžืœื›ื•ื“?

ื›ืคื™ ืฉื ืืžืจ ื‘ืชื—ื™ืœืช ื”ืžืืžืจ:

ื ื™ืชืŸ ืœืฉืจื˜ื˜ ืื ืœื•ื’ื™ื” ืœื“ื™ืจื” ืžืฉื•ืชืคืช... Kubernetes ืคื•ืขืœ ื›ืžืชื•ื•ืš. ืื‘ืœ ืื™ืš ืœืฉืžื•ืจ ืขืœ ื“ื™ื™ืจื™ื ืžืขื™ืžื•ืชื™ื ื–ื” ืขื ื–ื”? ืžื” ืื ืื—ื“ ืžื”ื, ืœืžืฉืœ, ื™ื—ืœื™ื˜ ืœืฉืื•ืœ ืืช ื”ืฉื™ืจื•ืชื™ื ืœื—ืฆื™ ืžื”ื™ื•ื?

ื”ื ื” ื”ืžืœื›ื•ื“. ืžื™ื›ืœ ืจืฉืœื ื™ ืื—ื“ ื™ื›ื•ืœ ืœืื›ื•ืœ ืืช ื›ืœ ืžืฉืื‘ื™ ื”ืžืขื‘ื“ ื”ื–ืžื™ื ื™ื ื‘ืžื›ื•ื ื”. ืื ื™ืฉ ืœืš ืขืจื™ืžืช ื™ื™ืฉื•ืžื™ื ื—ื›ืžื” (ืœื“ื•ื’ืžื”, JVM, Go, Node VM ืžื•ื’ื“ืจื™ื ื›ืจืื•ื™), ืื– ื–ื• ืœื ื‘ืขื™ื”: ืืชื” ื™ื›ื•ืœ ืœืขื‘ื•ื“ ื‘ืชื ืื™ื ื›ืืœื” ื‘ืžืฉืš ื–ืžืŸ ืจื‘. ืื‘ืœ ืื ื”ื™ื™ืฉื•ืžื™ื ืขื‘ืจื• ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื’ืจื•ืขื” ืื• ืœื ืขื‘ืจื• ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื›ืœืœ (FROM java:latest), ื”ืžืฆื‘ ืขืœื•ืœ ืœืฆืืช ืžืฉืœื™ื˜ื”. ื‘-Omio ื™ืฉ ืœื ื• Dockerfiles ืื•ื˜ื•ืžื˜ื™ื™ื ืขื ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ืžื—ื“ืœ ื ืื•ืชื•ืช ืขื‘ื•ืจ ืžื—ืกื ื™ืช ื”ืฉืคื” ื”ืขื™ืงืจื™ืช, ื›ืš ืฉื‘ืขื™ื” ื–ื• ืœื ื”ื™ื™ืชื” ืงื™ื™ืžืช.

ืื ื• ืžืžืœื™ืฆื™ื ืœืขืงื•ื‘ ืื—ืจ ื”ืžื“ื“ื™ื ืœื”ืฉืชืžืฉ (ืฉื™ืžื•ืฉ, ืจื•ื•ื™ื” ื•ืฉื’ื™ืื•ืช), ืขื™ื›ื•ื‘ื™ื ื‘-API ื•ืฉื™ืขื•ืจื™ ืฉื’ื™ืื•ืช. ื•ื“ื ืฉื”ืชื•ืฆืื•ืช ืขื•ืžื“ื•ืช ื‘ืฆื™ืคื™ื•ืช.

ืชื–ื›ื•ืจ

ื–ื” ื”ืกื™ืคื•ืจ ืฉืœื ื•. ื”ื—ื•ืžืจื™ื ื”ื‘ืื™ื ืขื–ืจื• ืžืื•ื“ ืœื”ื‘ื™ืŸ ืžื” ืงื•ืจื”:

ื“ื™ื•ื•ื— ืขืœ ื‘ืื’ื™ื ืฉืœ Kubernetes:

ื”ืื ื ืชืงืœืช ื‘ื‘ืขื™ื•ืช ื“ื•ืžื•ืช ื‘ืชืจื’ื•ืœ ืฉืœืš ืื• ืฉื™ืฉ ืœืš ื ื™ืกื™ื•ืŸ ื”ืงืฉื•ืจ ืœืžืฆืขืจืช ื‘ืกื‘ื™ื‘ื•ืช ื™ื™ืฆื•ืจ ื‘ืžื›ื•ืœื•ืช? ืฉืชืคื• ืืช ื”ืกื™ืคื•ืจ ืฉืœื›ื ื‘ืชื’ื•ื‘ื•ืช!

ื .ื‘ ืžื”ืžืชืจื’ื

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”