Kubernetes Pod рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ

Kubernetes Pod рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗTohad рджреНрд╡рд╛рд░рд╛ рдкреБрд░рд╕реНрдХрд╛рд░

Kubernetes рдХреЛ рд╕рд╛рде рд╕реБрд░реБ рдЧрд░реНрджрд╛, рдХрдиреНрдЯреЗрдирд░ рд╕реНрд░реЛрддрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдмрд┐рд░реНрд╕рдиреБ рд╕рд╛рдорд╛рдиреНрдп рдЫред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫ рдХрд┐ рдбрдХрд░ рдЫрд╡рд┐ рдХрд╛рдо рдЧрд░реНрджрдЫ рд░ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рддреИрдирд╛рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рддрд░ рдкрдЫрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд╕рдБрдЧ рдЙрддреНрдкрд╛рджрди рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рддреИрдирд╛рде рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд░реЛрддрд╣рд░реВ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддреНрдпрд╣рд╛рдБ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░ рдЪрд▓рд╛рдЙрди рдкрд░реНрдпрд╛рдкреНрдд рдЫрдиреН, рд░ рдЕрдиреНрдп рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЕрдиреБрднрд╡ рдЧрд░реНрджреИрдирдиреНред

рдЯреЛрд▓реА Kubernetes aaS Mail.ru рдмрд╛рдЯ рдХрдиреНрдЯреЗрдирд░ рд╕реНрд░реЛрддрд╣рд░реВ (CPU рд░ MEM), рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд░ рд╕реНрд░реЛрдд рд╕реАрдорд┐рддрддрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдПрдЙрдЯрд╛ рд▓реЗрдЦ рдЕрдиреБрд╡рд╛рдж рдЧрд░рд┐рдпреЛред рддрдкрд╛рдИрдВрд▓реЗ рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рд╕рд┐рдХреНрдиреБрд╣реБрдиреЗрдЫ рд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдПрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫред

рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рд╕реНрд░реЛрддрд╣рд░реВ

рд╣рд╛рдореАрд╕рдБрдЧ рдирд┐рдореНрди рдПрдХрд╛рдЗрд╣рд░реВрд╕рдБрдЧ рджреБрдИ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдЫрдиреН:

  • рдХреЗрдиреНрджреНрд░реАрдп рдкреНрд░рд╢реЛрдзрди рдЗрдХрд╛рдИ (CPU) - рдХреЛрд░;
  • рдореЗрдореЛрд░реА (MEM) - рдмрд╛рдЗрдЯреНрд╕ред

рдкреНрд░рддреНрдпреЗрдХ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рдирд┐рдореНрди Pod YAML рдлрд╛рдЗрд▓рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд░ рд╕реАрдорд┐рдд рд╕реНрд░реЛрддрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рд╕рдВрд╕рд╛рдзрди рдЦрдгреНрдб рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ:

  • рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдкреЛрдб рд╕рдВрд╕рд╛рдзрди = рд╕рдмреИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдпреЛрдЧ;
  • Pod Resource Limit = рд╕рдмреИ Pod Resource Limits рдХреЛ рдпреЛрдЧрдлрд▓ред

apiVersion: v1
kind: Pod
metadata:
  name: backend-pod-name
  labels:
    application: backend
spec:
  containers:
    тАФ name: main-container
      image: my-backend
      tag: v1
      ports:
      тАФ containerPort: 8080
      resources:
        requests:
          cpu: 0.2 # REQUESTED CPU: 200m cores
          memory: "1Gi" # REQUESTED MEM: 1Gi
        limits:
          cpu: 1 # MAX CPU USAGE: 1 core
          memory: "1Gi" # MAX MEM USAGE:  1Gi
    тАФ name: other-container
      image: other-app
      tag: v1
      ports:
      тАФ containerPort: 8000
      resources:
        requests:
          cpu: "200m" # REQUESTED CPU: 200m cores
          memory: "0.5Gi" # REQUESTED MEM: 0.5Gi
        limits:
          cpu: 1 # MAX CPU USAGE: 1 core
          memory: "1Gi" # MAX MEM USAGE:  1Gi

рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд░ рд╕реАрдорд┐рдд рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдг

рдХреНрд╖реЗрддреНрд░ resources.requested рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдмрд╛рдЯ Pod рдПрдХ рддрддреНрд╡ рд╣реЛ рдЬреБрди рдЗрдЪреНрдЫрд┐рдд рдиреЛрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддрдкрд╛рдИрдВ рдкрд╣рд┐рд▓реЗ рдиреИ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкреЛрдб рддреИрдирд╛рддреА рдпреЛрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВ рдХрд╕рд░реА рдЙрдкрдпреБрдХреНрдд рдиреЛрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ?

Kubernetes рдорд╛ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рд╡рд╛ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб (Kubernetes рдирд┐рдпрдиреНрддреНрд░рдг рд╡рд┐рдорд╛рди) рд╕рд╣рд┐рдд рдзреЗрд░реИ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╣реБрдиреНрдЫрдиреНред рдорд╛рд╕реНрдЯрд░ рдиреЛрдбрдорд╛ рдзреЗрд░реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЫрдиреН: kube-apiserver, kube-controller-manager рд░ kube-schedulerред

kube-scheduler рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирдпрд╛рдБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдкреЛрдбрд╣рд░реВ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрди рд░ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рд╣рд┐рдд рд╕рдмреИ рдкреЛрдб рдЕрдиреБрд░реЛрдзрд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреЗ рд╕рдореНрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдиреЛрдбрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред kube-scheduler рджреНрд╡рд╛рд░рд╛ рдлреЗрд▓рд╛ рдкрд░реЗрдХрд╛ рдиреЛрдбрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдХреНрд░рдордмрджреНрдз рдЧрд░рд┐рдПрдХреЛ рдЫред рдкреЛрдб рдЙрдЪреНрдЪрддрдо рд╕реНрдХреЛрд░ рд╕рдВрдЧ рдиреЛрдб рдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫред

Kubernetes Pod рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗрдмреИрдЬрдиреА рдкреЛрдб рдХрд╣рд╛рдБ рд░рд╛рдЦрд┐рдиреЗрдЫ?

рддрд╕реНрд╡рд┐рд░рдорд╛ рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ kube-scheduler рд▓реЗ рдирдпрд╛рдБ рдмреИрдЬрдиреА рдкреЛрдб рдЕрдиреБрд╕реВрдЪрд┐рдд рдЧрд░реНрдиреБрдкрд░реНрдЫред Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд▓реЗ рджреБрдИрд╡рдЯрд╛ рдиреЛрдбрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ: A рд░ Bред рддрдкрд╛рдИрдВрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, kube-scheduler рд▓реЗ рдиреЛрдб A рдорд╛ Pod рд╢реЗрдбреНрдпреВрд▓ рдЧрд░реНрди рд╕рдХреНрджреИрди - рдЙрдкрд▓рдмреНрдз (рдЕрдиреБрд░реЛрдз рдирдЧрд░рд┐рдПрдХреЛ) рд╕реНрд░реЛрддрд╣рд░реВ рдмреИрдЬрдиреА рдкреЛрдбрдХрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдБрджреИрдиред рддреНрдпрд╕реЛрднрдП, рдмреИрдЬрдиреА рдкреЛрдб рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ 1 GB рдореЗрдореЛрд░реА рдиреЛрдб A рдорд╛ рдлрд┐рдЯ рд╣реБрдиреЗ рдЫреИрди, рдХрд┐рдирдХрд┐ рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА 0,5 GB рдЫред рддрд░ рдиреЛрдб рдмреАрд╕рдБрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрд░реЛрддрд╣рд░реВ рдЫрдиреНред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, kube-scheduler рд▓реЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдЫ рдХрд┐ рдмреИрдЬрдиреА рдкреЛрдбрдХреЛ рдЧрдиреНрддрд╡реНрдп рдиреЛрдб B рд╣реЛред

рдЕрдм рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдХрд╕рд░реА рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрд▓реЗ рдкреЛрдб рдЪрд▓рд╛рдЙрди рдиреЛрдбрдХреЛ рдЫрдиреЛрдЯрд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫред рддрд░ рд╕реАрдорд╛рдиреНрдд рд╕реНрд░реЛрддрдХреЛ рдкреНрд░рднрд╛рд╡ рдХреЗ рд╣реЛ?

рд╕реНрд░реЛрдд рд╕реАрдорд╛ рднрдиреЗрдХреЛ CPU/MEM рд▓реЗ рдкрд╛рд░ рдЧрд░реНрди рдирд╕рдХреНрдиреЗ рд╕реАрдорд╛ рд╣реЛред рдЬреЗ рд╣реЛрд╕реН, CPU рд╕реНрд░реЛрдд рд▓рдЪрд┐рд▓реЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЬреБрди рддрд┐рдиреАрд╣рд░реВрдХреЛ CPU рд╕реАрдорд╛рдорд╛ рдкреБрдЧреНрдЫрдиреН рдкреЛрдбрд▓рд╛рдИ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрди рджрд┐рдБрджреИрдиред рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛, CPU рдереНрд░реЛрдЯрд▓рд┐рдЩ рд╕реБрд░реБ рд╣реБрдиреЗрдЫред рдпрджрд┐ MEM рдЙрдкрдпреЛрдЧ рд╕реАрдорд╛ рдкреБрдЧреНрдпреЛ рднрдиреЗ, рдХрдиреНрдЯреЗрдирд░ OOM-Killer рдХреЛ рдХрд╛рд░рдг рд░реЛрдХрд┐рдиреЗрдЫ рд░ RestartPolicy рд╕реЗрдЯрд┐рдЩрд▓реЗ рдЕрдиреБрдорддрд┐ рджрд┐рдПрдорд╛ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреЗрдЫред

рд╡рд┐рд╕реНрддреГрдд рд░реВрдкрдорд╛ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд░ рдЕрдзрд┐рдХрддрдо рд╕реНрд░реЛрддрд╣рд░реВ

Kubernetes Pod рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗDocker рд░ Kubernetes рдмреАрдЪ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдЪрд╛рд░

рд╕реНрд░реЛрдд рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд░ рд╕реНрд░реЛрдд рд╕реАрдорд╛рд╣рд░реВ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫрдиреН рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рддрд░рд┐рдХрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд░ рдбрдХрд░ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдз рдкрд░рд┐рдЪрдп рдЧрд░рд╛рдЙрдиреБ рд╣реЛред рдорд╛рдерд┐рдХреЛ рдЫрд╡рд┐рдорд╛ рддрдкрд╛рдИрд▓реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдлрд┐рд▓реНрдбрд╣рд░реВ рд░ рдбрдХрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВ рдХрд╕рд░реА рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН рднрдиреЗрд░ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдореЗрдореЛрд░реА: рдЕрдиреБрд░реЛрдз рд░ рд╕реАрдорд╛

containers:
...
 resources:
   requests:
     memory: "0.5Gi"
   limits:
     memory: "1Gi"

рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░, рдореЗрдореЛрд░реА рдмрд╛рдЗрдЯ рдорд╛ рдорд╛рдкрди рдЧрд░рд┐рдиреНрдЫред рдорд╛ рдЖрдзрд╛рд░рд┐рдд Kubernetes рджрд╕реНрддрд╛рд╡реЗрдЬ, рд╣рд╛рдореА рд╕рдВрдЦреНрдпрд╛рдХреЛ рд░реВрдкрдорд╛ рдореЗрдореЛрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдпреЛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА 2678 - рддреНрдпреЛ рд╣реЛ, 2678 рдмрд╛рдЗрдЯреНрд╕ред рддрдкрд╛рдИрдВ рдкрдирд┐ рдкреНрд░рддреНрдпрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ G ╨╕ Gi, рдореБрдЦреНрдп рдХреБрд░рд╛ рд╕рдореНрдЭрдирд╛ рдЫ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдмрд░рд╛рдмрд░ рдЫреИрдирдиреНред рдкрд╣рд┐рд▓реЛ рджрд╢рдорд▓рд╡ рд░ рджреЛрд╕реНрд░реЛ рдмрд╛рдЗрдирд░реА рд╣реЛред k8s рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдЙрджрд╛рд╣рд░рдг рдЬрд╕реНрддреИ: 128974848, 129e6, 129M, 123Mi - рддрд┐рдиреАрд╣рд░реВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рдмрд░рд╛рдмрд░ рдЫрдиреНред

Kubernetes рд╡рд┐рдХрд▓реНрдк limits.memory рдЭрдгреНрдбрд╛рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ --memory рдбрдХрд░рдмрд╛рдЯред рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛ request.memory рдбрдХрд░рдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рддреАрд░ рдЫреИрди рдХрд┐рдирднрдиреЗ рдбрдХрд░рд▓реЗ рдпреЛ рдХреНрд╖реЗрддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдиред рддрдкрд╛рдИрдВ рд╕реЛрдзреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдпреЛ рдкрдирд┐ рдЖрд╡рд╢реНрдпрдХ рдЫ? рд╣реЛ рдЪрд╛рд╣рд┐рдиреНрдЫред рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рднрдиреЗрдЭреИрдВ, рдХреНрд╖реЗрддреНрд░ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред рдпрд╕рдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рдЖрдзрд╛рд░рдорд╛, рдХреБрдмреЗ-рд╢реЗрдбреНрдпреБрд▓рд░рд▓реЗ рдХреБрди рдиреЛрдбрдорд╛ рдкреЛрдб рдЕрдиреБрд╕реВрдЪрд┐рдд рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрджрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реАрдХреЛ рд╕реАрдорд╛рдорд╛ рдкреБрдЧреНрдпреЛ рднрдиреЗ, рдкреЛрдбрд▓рд╛рдИ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕рдореВрд╣рдорд╛ рд░рд╛рдЦрд┐рдиреНрдЫ рдЬреБрди рдиреЛрдбрдорд╛ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдирднрдПрдХреЛ рдмреЗрд▓рд╛ рд░реЛрдХрд┐рдиреНрдЫред

рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдзреЗрд░реИ рдХрдо рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?

рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдирд╛рдШреНрдпреЛ рднрдиреЗ, рдпреЛ OOM-Killed рдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫред рд░ рдпрджрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рдЫ рднрдиреЗ RestartPolicy рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╕рдореНрднрд╡ рднрдПрдорд╛ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреЗрдЫ Always.

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрднрдПрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

Kubernetes рд▓реЗ рд╕реАрдорд╛ рдорд╛рди рд▓рд┐рдиреЗрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирдХреЛ рд░реВрдкрдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреЗрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрди рднрдиреЗ рдХреЗ рд╣реБрди рд╕рдХреНрдЫ?

рдХрдиреНрдЯреЗрдирд░рдорд╛ рдХреБрдиреИ рдкреНрд░рддрд┐рдмрдиреНрдз рдЫреИрди; рдпрд╕рд▓реЗ рдЪрд╛рд╣реЗ рдЬрддрд┐ рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫред рдпрджрд┐ рдЙрд╕рд▓реЗ рдиреЛрдбрдХреЛ рд╕рдмреИ рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдерд╛рд▓реНрдЫ рднрдиреЗ, OOM рд▓реЗ рдЙрд╕рд▓рд╛рдИ рдорд╛рд░реНрдиреЗрдЫред рдХрдиреНрдЯреЗрдирд░ рддреНрдпрд╕рдкрдЫрд┐ рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ рдиреАрддрд┐рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╕рдореНрднрд╡ рднрдПрдорд╛ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреЗрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЕрд╡рд╕реНрдерд╛ рд╣реЛ: рд╢реЗрдбреНрдпреБрд▓рд░рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдХрд┐ рдХрдиреНрдЯреЗрдирд░рд▓рд╛рдИ рдХрддрд┐ рд╕реНрд░реЛрддрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ, рд░ рдпрд╕рд▓реЗ рдиреЛрдбрдорд╛ рдЧрдореНрднреАрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдирд╛рдорд╕реНрдерд╛рдирдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛рд╣рд░реВ (LimitRange рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ) рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫред рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛рд╣рд░реВ рдЫреИрдирдиреН - рдкреЛрдбрдХреЛ рдХреБрдиреИ рд╕реАрдорд╛ рдЫреИрди, рдпрд╕рд▓реЗ рдЪрд╛рд╣реЗ рдЬрддрд┐ рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫред

рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реА рдиреЛрдбрд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрди рд╕рдХреНрдиреЗ рднрдиреНрджрд╛ рдмрдвреА рдЫ рднрдиреЗ, рдкреЛрдб рдЕрдиреБрд╕реВрдЪрд┐рдд рд╣реБрдиреЗрдЫреИрдиред рдпреЛ рд╕рдореНрдЭрдирд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ Requests.memory - рдиреНрдпреВрдирддрдо рдореВрд▓реНрдп рд╣реЛрдЗрдиред рдпреЛ рдХрдиреНрдЯреЗрдирд░ рдирд┐рд░рдиреНрддрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд░рд╛рдЦреНрди рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реАрдХреЛ рдорд╛рддреНрд░рд╛рдХреЛ рд╡рд┐рд╡рд░рдг рд╣реЛред

рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдиреНрдЫ request.memory ╨╕ limit.memoryред рдпрд╕рд▓реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрджрдЫ рдХрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд▓реЗ рдкреЛрдб рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рднрдПрдХреЛ рддрд░ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдирднрдПрдХреЛ рдиреЛрдбрдорд╛ рдкреЛрдб рдЕрдиреБрд╕реВрдЪрд┐рдд рдЧрд░реНрджреИрдиред рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН: рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреЛрдб рдпреЛрдЬрдирд╛рд▓реЗ рдорд╛рддреНрд░ рдЦрд╛рддрд╛рдорд╛ рд▓рд┐рдиреНрдЫ requests.memoryрд░ limits.memory рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИрдиред

CPU: рдЕрдиреБрд░реЛрдз рд░ рд╕реАрдорд╛

containers:
...
 resources:
   requests:
     cpu: 1
   limits:
     cpu: "1200m"

CPU рдХреЛ рд╕рд╛рде рд╕рдмреИ рдХреБрд░рд╛ рдЕрд▓рд┐ рдмрдвреА рдЬрдЯрд┐рд▓ рдЫред Kubernetes рд░ Docker рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдзрдХреЛ рддрд╕реНрд╡реАрд░рдорд╛ рдлрд░реНрдХреЗрд░, рддрдкрд╛рдЗрдБ рддреНрдпреЛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ request.cpu рдпрд╕рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ --cpu-sharesрдЬрдмрдХрд┐, limit.cpu рдЭрдгреНрдбрд╛рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ cpus рдбрдХрд░рдорд╛ред

Kubernetes рд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░реЗрдХреЛ CPU рд▓рд╛рдИ 1024 рд▓реЗ рдЧреБрдгрди рдЧрд░рд┐рдиреНрдЫ, CPU рдЪрдХреНрд░рдХреЛ рдЕрдиреБрдкрд╛рддред рдпрджрд┐ рддрдкрд╛рдИрдВ 1 рдкреВрд░реНрдг рдХреЛрд░ рдЕрдиреБрд░реЛрдз рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдердкреНрдиреБрдкрд░реНрдЫ cpu: 1рдорд╛рдерд┐ рджреЗрдЦрд╛рдЗрдПрдХреЛ рд░реВрдкрдорд╛ред

рдкреВрд░реНрдг рдХрд░реНрдиреЗрд▓ (рдЕрдиреБрдкрд╛рдд = 1024) рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрд╛ рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ рднрдиреНрдиреЗ рд╣реЛрдЗрдиред рдпрджрд┐ рддрдкрд╛рдЗрдБрдХреЛ рд╣реЛрд╕реНрдЯ рдореЗрд╕рд┐рдирдорд╛ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдХреЛрд░ рдЫ рд░ рддрдкрд╛рдЗрдБ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рдХрдиреНрдЯреЗрдирд░ рдЪрд▓рд╛рдЙрдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╕рдмреИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪ рдЙрдкрд▓рдмреНрдз CPU рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпреЛ рдХрд╕рд░реА рд╣реБрдиреНрдЫ? рддрд╕реНрд╡рд┐рд░ рд╣реЗрд░реМрдВред

Kubernetes Pod рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ
CPU рдЕрдиреБрд░реЛрдз - рдПрдХрд▓ рдХреЛрд░ рдкреНрд░рдгрд╛рд▓реА

рдХрд▓реНрдкрдирд╛ рдЧрд░реМрдВ рдХрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдПрдХрд▓-рдХреЛрд░ рд╣реЛрд╕реНрдЯ рдкреНрд░рдгрд╛рд▓реА рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЫрдиреНред рдЖрдорд╛ (рдХреБрдмрд░реНрдиреЗрдЯреНрд╕) рд▓реЗ рдкрд╛рдИ (рд╕реАрдкреАрдпреВ) рдкрдХрд╛рдЙрдиреБрднрдпреЛ рд░ рдпрд╕рд▓рд╛рдИ рдмрдЪреНрдЪрд╛рд╣рд░реВ (рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ) рдмреАрдЪрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫред рддреАрди рдмрдЪреНрдЪрд╛рд╣рд░реБ рдПрдХ рдкреВрд░реИ рдкрд╛рдИ рдЪрд╛рд╣рдиреНрдЫрдиреН (рдЕрдиреБрдкрд╛рдд = 1024), рдЕрд░реНрдХреЛ рдмрдЪреНрдЪрд╛ рдЖрдзрд╛ рдкрд╛рдИ (512) рдЪрд╛рд╣рдиреНрдЫред рдЖрдорд╛ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реБрди рдЪрд╛рд╣рдиреНрдЫ рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧрдгрдирд╛ рдЧрд░реНрдЫред

# ╨б╨║╨╛╨╗╤М╨║╨╛ ╨┐╨╕╤А╨╛╨│╨╛╨▓ ╤Е╨╛╤В╤П╤В ╨┤╨╡╤В╨╕?
# 3 ╤А╨╡╨▒╨╡╨╜╨║╨░ ╤Е╨╛╤В╤П╤В ╨┐╨╛ ╤Ж╨╡╨╗╨╛╨╝╤Г ╨┐╨╕╤А╨╛╨│╤Г ╨╕ ╨╡╤Й╨╡ ╨╛╨┤╨╕╨╜ ╤Е╨╛╤З╨╡╤В ╨┐╨╛╨╗╨╛╨▓╨╕╨╜╤Г ╨┐╨╕╤А╨╛╨│╨░
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# ╨Т╤Л╤А╨░╨╢╨╡╨╜╨╕╨╡ ╨┐╨╛╨╗╤Г╤З╨░╨╡╤В╤Б╤П ╤В╨░╨║:
3 (╤А╨╡╨▒╨╡╨╜╨║╨░/╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А╨░) * 1 (╤Ж╨╡╨╗╤Л╨╣ ╨┐╨╕╤А╨╛╨│/╨┐╨╛╨╗╨╜╨╛╨╡ ╤П╨┤╤А╨╛) + 1 (╤А╨╡╨▒╨╡╨╜╨╛╨║/╨║╨╛╨╜╤В╨╡╨╣╨╜╨╡╤А) * 0.5 (╨┐╨╛╨╗╨╛╨▓╨╕╨╜╨░ ╨┐╨╕╤А╨╛╨│╨░/╨┐╨╛╨╗╨╛╨▓╨╕╨╜╨░ ╤П╨┤╤А╨░)
# ╨б╨║╨╛╨╗╤М╨║╨╛ ╨┐╨╕╤А╨╛╨│╨╛╨▓ ╨╕╤Б╨┐╨╡╤З╨╡╨╜╨╛?
availableCakesNumber = 1
# ╨б╨║╨╛╨╗╤М╨║╨╛ ╨┐╨╕╤А╨╛╨│╨░ (╨╝╨░╨║╤Б╨╕╨╝╨░╨╗╤М╨╜╨╛) ╨┤╨╡╤В╨╕ ╤А╨╡╨░╨╗╤М╨╜╨╛ ╨╝╨╛╨│╤Г╤В ╨┐╨╛╨╗╤Г╤З╨╕╤В╤М?
newMaxRequest = 1 / 3.5 =~ 28%

рдЧрдгрдирд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛, рддреАрди рдмрдЪреНрдЪрд╛рд╣рд░реВрд▓реЗ рдХреЛрд░рдХреЛ 28% рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫрдиреН, рд░ рд╕рдореНрдкреВрд░реНрдг рдХреЛрд░ рд╣реЛрдЗрдиред рдЪреМрдереЛ рдмрдЪреНрдЪрд╛рд▓реЗ рдкреВрд░реНрдг рдХрд░реНрдиреЗрд▓рдХреЛ 14% рдкрд╛рдЙрдиреЗрдЫ, рдЖрдзрд╛ рд╣реЛрдЗрдиред рддрд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдмрд╣реБ-рдХреЛрд░ рдкреНрд░рдгрд╛рд▓реА рдЫ рднрдиреЗ рдЪреАрдЬрд╣рд░реВ рдлрд░рдХ рд╣реБрдиреЗрдЫрдиреНред

Kubernetes Pod рд╕реНрд░реЛрддрд╣рд░реВ рдХрд╕рд░реА рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ
CPU рдЕрдиреБрд░реЛрдз - рдмрд╣реБ-рдХреЛрд░ (4) рдкреНрд░рдгрд╛рд▓реА

рдорд╛рдерд┐рдХреЛ рддрд╕реНрдмрд┐рд░рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рддреАрди рдмрдЪреНрдЪрд╛рд╣рд░реВрд▓реЗ рдкреВрд░реИ рдкрд╛рдИ рдЪрд╛рд╣рдиреНрдЫрдиреН, рд░ рдПрдХрд▓реЗ рдЖрдзрд╛ рдЪрд╛рд╣рдиреНрдЫрдиреНред рдЖрдорд╛рд▓реЗ рдЪрд╛рд░ рдкрд╛рдИ рдкрдХрд╛рдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рдЙрдирдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрд░рд╛рдЫреЛрд░реАрд▓реЗ рдЙрдиреАрд╣рд░реВрд▓реЗ рдЪрд╛рд╣реЗрдХреЛ рдЬрддрд┐ рдкрд╛рдЙрдиреЗрдЫрдиреНред рдмрд╣реБ-рдХреЛрд░ рдкреНрд░рдгрд╛рд▓реАрдорд╛, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реНрд░реЛрддрд╣рд░реВ рд╕рдмреИ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░рд╣рд░реВрдорд╛ рд╡рд┐рддрд░рд┐рдд рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░ рдПрдХ рднрдиреНрджрд╛ рдХрдо рдкреВрд░реНрдг CPU рдХреЛрд░рдорд╛ рд╕реАрдорд┐рдд рдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдЕрдЭреИ рдкрдирд┐ рдпрд╕рд▓рд╛рдИ 100% рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫред

CPU рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдмреАрдЪ рдХрд╕рд░реА рд╡рд┐рддрд░рдг рдЧрд░рд┐рдиреНрдЫ рднрдиреЗрд░ рдмреБрдЭреНрди рдорд╛рдерд┐рдХреЛ рдЧрдгрдирд╛рд╣рд░реВ рд╕рд░рд▓реАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдЕрд╡рд╢реНрдп рдкрдирд┐, рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдмрд╛рд╣реЗрдХ, рддреНрдпрд╣рд╛рдБ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЫрдиреН рдЬреБрди CPU рд╕реНрд░реЛрддрд╣рд░реВ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдЬрдм рдПрдХ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реБрдиреНрдЫрдиреН, рдЕрд░реВрд▓реЗ рдпрд╕рдХреЛ рд╕реНрд░реЛрдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред CPU: "200m" рдпрд╕рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ CPU: 0,2, рдЬрд╕рдХреЛ рдЕрд░реНрде рдПрдХ рдХреЛрд░ рдХреЛ рд▓рдЧрднрдЧ 20% рд╣реЛред

рдЕрдм рдХреБрд░рд╛ рдЧрд░реМрдВ limit.cpuред рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд▓реЗ рд╕реАрдорд┐рдд рдЧрд░реЗрдХреЛ CPU рд▓рд╛рдИ 100 рд▓реЗ рдЧреБрдгрди рдЧрд░рд┐рдиреНрдЫред рдкрд░рд┐рдгрд╛рдо рднрдиреЗрдХреЛ рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ 100 ┬╡s рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╕рдордп рд╣реЛредcpu-period).

limit.cpu рдбрдХрд░ рдЭрдгреНрдбрд╛рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ --cpusред рдпреЛ рдкреБрд░рд╛рдиреЛрдХреЛ рдирдпрд╛рдБ рд╕рдВрдпреЛрдЬрди рд╣реЛ --cpu-period ╨╕ --cpu-quotaред рдпрд╕рд▓рд╛рдИ рд╕реЗрдЯ рдЧрд░реЗрд░, рд╣рд╛рдореА рд╕рдЩреНрдХреЗрдд рдЧрд░реНрдЫреМрдВ рдХрд┐ рдХрддрд┐ рдЙрдкрд▓рдмреНрдз CPU рд╕реНрд░реЛрддрд╣рд░реВ рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рд╕реБрд░реБ рд╣реБрдиреБ рдЕрдШрд┐ рдЕрдзрд┐рдХрддрдо рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН:

  • cpus - рд╕рдВрдпреЛрдЬрди cpu-period ╨╕ cpu-quota. cpus = 1.5 рд╕реЗрдЯрд┐рдЩ рдмрд░рд╛рдмрд░ cpu-period = 100000 ╨╕ cpu-quota = 150000;
  • CPU- рдЕрд╡рдзрд┐ - рдЕрд╡рдзрд┐ CPU CFS рдЕрдиреБрд╕реВрдЪрдХ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд 100 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдб;
  • cpu-рдХреЛрдЯрд╛ - рднрд┐рддреНрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдб рдХреЛ рд╕рдВрдЦреНрдпрд╛ cpu-period, рдЬреЛ рдХрдиреНрдЯреЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдШреЗрд░рд┐рдПрдХреЛ рдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдкрд░реНрдпрд╛рдкреНрдд рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ CPU рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдпрджрд┐ рдХрдиреНрдЯреЗрдирд░рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рднрдиреНрджрд╛ рдмрдвреА рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдмрд╛рдЯ CPU рдЪреЛрд░реНрдиреЗрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ CPU рд╕реАрдорд╛ рдзреЗрд░реИ рдХрдо рд╕реЗрдЯ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

CPU рд╕реНрд░реЛрдд рд╕рдорд╛рдпреЛрдЬреНрдп рднрдПрдХреЛрд▓реЗ, рдереНрд░реЙрдЯрд▓рд┐рдЩ рд╕рдХреНрд░рд┐рдп рд╣реБрдиреЗрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ CPU рдЕрдиреБрд░реЛрдз рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрднрдПрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдореЗрдореЛрд░реАрдХреЛ рд░реВрдкрдорд╛, рдЕрдиреБрд░реЛрдз рдорд╛рди рд╕реАрдорд╛ рдмрд░рд╛рдмрд░ рдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ CPU рд╕реАрдорд╛ рддреЛрдХреНрдиреБрд╣реБрдиреНрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдХрдиреНрдЯреЗрдирд░рд▓реЗ рдпрд╕рд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЬрддрд┐ CPU рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд CPU рдиреАрддрд┐ (LimitRange) рдиреЗрдорд╕реНрдкреЗрд╕рдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдпреЛ рд╕реАрдорд╛ рдХрдиреНрдЯреЗрдирд░рдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрд░реЛрдз рд╡рд╛ CPU рд╕реАрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрднрдПрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдореЗрдореЛрд░реАрдХреЛ рд░реВрдкрдорд╛, рдпреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм-рдХреЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рд╣реЛред рдЕрдиреБрд╕реВрдЪрдХрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рддрдкрд╛рдИрдВрдХреЛ рдХрдиреНрдЯреЗрдирд░рд▓рд╛рдИ рдХрддрд┐ рд╕реНрд░реЛрддрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ, рд░ рдпрд╕рд▓реЗ рдиреЛрдбрдорд╛ рдЧрдореНрднреАрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред рдпрд╕рдмрд╛рдЯ рдмрдЪреНрди, рддрдкрд╛рдИрдВрд▓реЗ рдиреЗрдорд╕реНрдкреЗрд╕рд╣рд░реВ (LimitRange) рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реАрдорд╛рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпрд╛рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдиреЛрдбрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреЗ рднрдиреНрджрд╛ рдмрдвреА CPU рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, Pod рдЕрдиреБрд╕реВрдЪрд┐рдд рд╣реБрдиреЗрдЫреИрдиред Requests.cpu - рдиреНрдпреВрдирддрдо рдорд╛рди рд╣реЛрдЗрди, рддрд░ Pod рд╕реБрд░реБ рдЧрд░реНрди рд░ рд╡рд┐рдлрд▓рддрд╛ рдмрд┐рдирд╛ рдХрд╛рдо рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдиред рдпрджрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИрди рднрдиреЗ, рдЙрддреНрддрдо рд╡рд┐рдХрд▓реНрдк рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╣реЛ request.cpu <= 1 рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рдзреЗрд░реИ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рд╕реБрд░реВ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд╕реНрд░реЛрдд рд╡рд╛ рд╕реНрд░реЛрдд рд╕реАрдорд╛рдХреЛ рдЖрджрд░реНрд╢ рдорд╛рддреНрд░рд╛

рд╣рд╛рдореАрд▓реЗ рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕реАрдорд┐рддрддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рд┐рдХреЗрдХрд╛ рдЫреМрдВред рдЕрдм рдпреЛ рдкреНрд░рд╢реНрдирдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреЗ рд╕рдордп рд╣реЛ: "рдореЗрд░реЛ рдкреЛрдбрд▓рд╛рдИ рдХреБрдиреИ рдкрдирд┐ рд╕рдорд╕реНрдпрд╛ рдмрд┐рдирд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрди рдХрддрд┐ рд╕реНрд░реЛрддрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ? рдЖрджрд░реНрд╢ рд░рдХрдо рдХреЗ рд╣реЛ?

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпреА рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдХреБрдиреИ рд╕реНрдкрд╖реНрдЯ рдЬрд╡рд╛рдл рдЫреИрдиред рдпрджрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рд╡рд╛ рдХрддрд┐ CPU рд╡рд╛ рдореЗрдореЛрд░реА рдЪрд╛рд╣рд┐рдиреНрдЫ рдерд╛рд╣рд╛ рдЫреИрди рднрдиреЗ, рдЙрддреНрддрдо рд╡рд┐рдХрд▓реНрдк рднрдиреЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдзреЗрд░реИ рдореЗрдореЛрд░реА рд░ CPU рджрд┐рдиреБ рд╣реЛ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред

рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдгрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдХ рд╣рдкреНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдЧрдордирдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ рдЧреНрд░рд╛рдлрд╣рд░реВрд▓реЗ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ рдХрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рддрдкрд╛рдЗрдБрд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░реЗрдХреЛ рднрдиреНрджрд╛ рдХрдо рд╕реНрд░реЛрддрд╣рд░реВ рдЦрдкрдд рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рддрдкрд╛рдЗрдБ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ CPU рд╡рд╛ рдореЗрдореЛрд░реАрдХреЛ рдорд╛рддреНрд░рд╛ рдШрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдпреЛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН Grafana рдбреНрдпрд╛рд╕рдмреЛрд░реНрдбред рдпрд╕рд▓реЗ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд╕реНрд░реЛрдд рд╡рд╛ рд╕реНрд░реЛрдд рд╕реАрдорд╛ рд░ рд╣рд╛рд▓рдХреЛ рд╕реНрд░реЛрдд рдЙрдкрдпреЛрдЧ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рджреЗрдЦрд╛рдЙрдБрдЫред

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

рдЕрдиреБрд░реЛрдз рд░ рд╕реНрд░реЛрддрд╣рд░реВ рд╕реАрдорд┐рдд рдЧрд░реНрдирд╛рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рд╕реНрд╡рд╕реНрде рд░рд╛рдЦреНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рдЙрдЪрд┐рдд рд╕реАрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рд▓рд╛рдЧрддрд▓рд╛рдИ рдХрдо рдЧрд░реНрдЫ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рд╕рдзреИрдВ рдЪрд▓рд┐рд░рд╣рдиреНрдЫред

рдЫреЛрдЯрдХрд░реАрдорд╛, рджрд┐рдорд╛рдЧрдорд╛ рд░рд╛рдЦреНрди рдХреЗрд╣рд┐ рдЪреАрдЬрд╣рд░реВ рдЫрдиреН:

  1. рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдПрдХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реЛ рдЬреБрди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордпрдорд╛ рдЦрд╛рддрд╛рдорд╛ рд▓рд┐рдЗрдиреНрдЫ (рдЬрдм Kubernetes рдПрдк рд╣реЛрд╕реНрдЯ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫ)ред рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, рд░рдирдЯрд╛рдЗрдордорд╛ рд╕реНрд░реЛрддрд╣рд░реВ рд╕реАрдорд┐рдд рдЧрд░реНрдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╣реБрдиреНрдЫ - рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдиреЛрдбрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╣реБрдиреНрдЫред
  2. рдореЗрдореЛрд░реАрдХреЛ рддреБрд▓рдирд╛рдорд╛, CPU рдПрдХ рд╡рд┐рдирд┐рдпрдорд┐рдд рд╕реНрд░реЛрдд рд╣реЛред рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдкрд░реНрдпрд╛рдкреНрдд CPU рдЫреИрди рднрдиреЗ, рддрдкрд╛рдЗрдБрдХреЛ рдкреЛрдб рдмрдиреНрдж рд╣реБрдиреЗрдЫреИрди рд░ рдереНрд░реЛрдЯрд▓рд┐рдЩ рдореЗрдХрд╛рдирд┐рдЬрдо рдЦреЛрд▓рд┐рдиреЗрдЫред
  3. рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд╕реНрд░реЛрдд рд░ рд╕реНрд░реЛрдд рд╕реАрдорд╛ рдиреНрдпреВрдирддрдо рд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рд╣реЛрдЗрди! рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реЗрд░, рддрдкрд╛рдЗрдБ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛ рдЪрд▓реНрдиреЗрдЫред
  4. рд░рд╛рдореНрд░реЛ рдЕрднреНрдпрд╛рд╕ рднрдиреЗрдХреЛ рдореЗрдореЛрд░реА рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдЧрд░реНрдиреБ рд╣реЛред
  5. рдареАрдХ рдЫ рд╕реНрдерд╛рдкрдирд╛ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдпреЛ CPU <=1, рдпрджрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдЬрдЯрд┐рд▓ рдЧрдгрдирд╛рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИрдиред
  6. рдпрджрд┐ рддрдкрд╛рдЗрдБ рдиреЛрдбрдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ рднрдиреНрджрд╛ рдмрдвреА рд╕реНрд░реЛрддрд╣рд░реВ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдкреЛрдб рддреНрдпреЛ рдиреЛрдбрдорд╛ рдХрд╣рд┐рд▓реЗ рдкрдирд┐ рдЕрдиреБрд╕реВрдЪрд┐рдд рд╣реБрдиреЗрдЫреИрдиред
  7. рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд╕реНрд░реЛрдд/рд╕реНрд░реЛрдд рд╕реАрдорд╛рд╣рд░реВрдХреЛ рд╕рд╣реА рдорд╛рддреНрд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди, рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг рд░ рдЕрдиреБрдЧрдорди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпрд╕ рд▓реЗрдЦрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕реНрд░реЛрдд рд╕реАрдорд┐рддрддрд╛рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдЕрд╡рдзрд╛рд░рдгрд╛ рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рд░ рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рдХрд╛рдо рдорд╛ рдпреЛ рдЬреНрдЮрд╛рди рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫред

рд╢реБрднрдХрд╛рдордирд╛!

рдЕрд░реБ рдХреЗ рдкрдвреНрдиреЗ:

  1. SRE рдЕрд╡рд▓реЛрдХрди рдпреЛрдЧреНрдпрддрд╛: рдиреЗрдорд╕реНрдкреЗрд╕ рд░ рдореЗрдЯреНрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛.
  2. Kubernetes рдХреЛ рд▓рд╛рдЧрд┐ 90+ рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдгрд╣рд░реВ: рддреИрдирд╛рддреА, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрд╕реБрд░рдХреНрд╖рд╛ рд░ рдердк.
  3. Telegram рдорд╛ Kubernetes рдХреЛ рдЖрд╕рдкрд╛рд╕ рд╣рд╛рдореНрд░реЛ рдЪреНрдпрд╛рдирд▓.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди