Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдЙрддреНрдкрд╛рджрдирдорд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рд╡рд░реНрд╖реМрдВрдХреЛ рдЕрд╡рдзрд┐рдорд╛, рд╣рд╛рдореАрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓реА рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдорд╛ рднрдПрдХрд╛ рдмрдЧрд╣рд░реВрд▓реЗ рдХрдиреНрдЯреЗрдирд░ рд░ рдкреЛрдбрд╣рд░реВрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирд▓рд╛рдИ рдХрд╕рд░реА рдЕрд╕рд░ рдЧрд░реНрдиреЗ рдЕрдкреНрд░рд┐рдп рд░/рд╡рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдП рднрдиреНрдиреЗ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рд░реЛрдЪрдХ рдХрдерд╛рд╣рд░реВ рд╕рдВрдХрд▓рди рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореАрд▓реЗ рддреА рдордзреНрдпреЗ рдХреЗрд╣реА рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╛ рд░реЛрдЪрдХ рдХрдерд╛рд╣рд░реВрдХреЛ рдЪрдпрди рд╕рдВрдХрд▓рди рдЧрд░реЗрдХрд╛ рдЫреМрдВред рдпрджрд┐ рддрдкрд╛рдИрдВ рдХрд╣рд┐рд▓реНрдпреИ рдпрд╕реНрддрд╛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрди рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реБрдиреБрд╣реБрдиреНрди рднрдиреЗ рдкрдирд┐, рдпрд╕реНрддрд╛ рдЫреЛрдЯреЛ рдЬрд╛рд╕реВрд╕реА рдХрдерд╛рд╣рд░реВ - рд╡рд┐рд╢реЗрд╖ рдЧрд░реА "рдкреНрд░рддреНрдпрдХреНрд╖" рдХрдерд╛рд╣рд░реВ - рдкрдвреНрдиреБ рд╕рдзреИрдВ рд░реЛрдЪрдХ рд╣реБрдиреНрдЫ, рд╣реЛрдЗрди рд░?...

рдХрдерд╛ рез. рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХ рд░ рдЭреБрдгреНрдбрд┐рдПрдХреЛ рдбрдХрд░

рдПрдЙрдЯрд╛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛, рд╣рд╛рдореАрд▓реЗ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ "рдлреНрд░реЛрдЬрди" рдбрдХрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреМрдВ, рдЬрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд▓рд╛рдИ рд░реЛрдХреНрдпреЛред рдЙрд╣реА рд╕рдордпрдорд╛, рдбрдХрд░ рд▓рдЧрд╣рд░реВрдорд╛ рдирд┐рдореНрди рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред

level=error msg="containerd: start init process" error="exit status 2: "runtime/cgo: pthread_create failed: No space left on device
SIGABRT: abort
PC=0x7f31b811a428 m=0

goroutine 0 [idle]:

goroutine 1 [running]:
runtime.systemstack_switch() /usr/local/go/src/runtime/asm_amd64.s:252 fp=0xc420026768 sp=0xc420026760
runtime.main() /usr/local/go/src/runtime/proc.go:127 +0x6c fp=0xc4200267c0 sp=0xc420026768
runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc4200267c8 sp=0xc4200267c0

goroutine 17 [syscall, locked to thread]:
runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2086 +0x1

тАж

рдпрд╕ рддреНрд░реБрдЯрд┐рдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдмреИрднрдиреНрджрд╛ рдмрдвреА рдЪрд╛рд╕реЛ рднрдПрдХреЛ рд╕рдиреНрджреЗрд╢ рдпреЛ рд╣реЛ: pthread_create failed: No space left on deviceрдЫрд┐рдЯреЛ рдЕрдзреНрдпрдпрди рдХрд╛рдЧрдЬрд╛рдд рдбрдХрд░рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдлреЛрд░реНрдХ рдЧрд░реНрди рдирд╕рдХреНрдиреЗ рдмрддрд╛рдП, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд╕рдордп-рд╕рдордпрдорд╛ "рд╕реНрдерд┐рд░" рд╣реБрдиреНрдЫред

рдЕрдиреБрдЧрдордирдорд╛, рдирд┐рдореНрди рддрд╕реНрд╡реАрд░ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗрд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдЕрдиреНрдп рдиреЛрдбрд╣рд░реВрдорд╛ рдкрдирд┐ рдпрд╕реНрддреИ рдЕрд╡рд╕реНрдерд╛ рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдПрдХреЛ рдЫ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдпреА рдиреИ рдиреЛрдбрд╣рд░реВрдорд╛ рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ:

root@kube-node-1 ~ # ps auxfww | grep curl -c
19782
root@kube-node-1 ~ # ps auxfww | grep curl | head
root     16688  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root     17398  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root     16852  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root      9473  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root      4664  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root     30571  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root     24113  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root     16475  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root      7176  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>
root      1090  0.0  0.0      0     0 ?        Z    Feb06   0:00      |       _ [curl] <defunct>

рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреЛрдбрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рднрдиреНрдиреЗ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рд╕реБрдкрд░рдХреНрд░реЛрди (рдкреЛрдбрд╣рд░реВрдорд╛ рдХреНрд░реЛрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЪрд▓рд╛рдЙрди рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЧреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛):

 _ docker-containerd-shim 833b60bb9ff4c669bb413b898a5fd142a57a21695e5dc42684235df907825567 /var/run/docker/libcontainerd/833b60bb9ff4c669bb413b898a5fd142a57a21695e5dc42684235df907825567 docker-runc
|   _ /usr/local/bin/supercronic -json /crontabs/cron
|       _ /usr/bin/newrelic-daemon --agent --pidfile /var/run/newrelic-daemon.pid --logfile /dev/stderr --port /run/newrelic.sock --tls --define utilization.detect_aws=true --define utilization.detect_azure=true --define utilization.detect_gcp=true --define utilization.detect_pcf=true --define utilization.detect_docker=true
|       |   _ /usr/bin/newrelic-daemon --agent --pidfile /var/run/newrelic-daemon.pid --logfile /dev/stderr --port /run/newrelic.sock --tls --define utilization.detect_aws=true --define utilization.detect_azure=true --define utilization.detect_gcp=true --define utilization.detect_pcf=true --define utilization.detect_docker=true -no-pidfile
|       _ [newrelic-daemon] <defunct>
|       _ [curl] <defunct>
|       _ [curl] <defunct>
|       _ [curl] <defunct>
тАж

рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ: рдЬрдм рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХрдорд╛ рдХреБрдиреИ рдХрд╛рд░реНрдп рд╕реБрд░реБ рд╣реБрдиреНрдЫ, рддреНрдпрд╕рдмрд╛рдЯ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рдкреВрд░рд╛ рдЧрд░реНрди рд╕рдХреНрджреИрди, рдорд╛ рдкрд░рд┐рдгрдд рд╣реБрдБрджреИ рдЬреЛрдореНрдмреА.

рднрдиреНрдиреБ: рдЕрдЭ рд╕рдЯреАрдХ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐, рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдХреНрд░реЛрди рдХрд╛рд░реНрдпрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫрдиреН, рддрд░ рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХ рдПрдХ init рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдЗрди рд░ рдпрд╕рдХреЛ рдмрдЪреНрдЪрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ "рдЕрдкрдирд╛рдЙрди" рд╕рдХреНрджреИрдиред рдЬрдм SIGHUP рд╡рд╛ SIGTERM рд╕рдВрдХреЗрддрд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрджрдЫ, рддрд┐рдиреАрд╣рд░реВ рдЬрдиреНрдорд┐рдПрдХрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рдкрдард╛рдЗрдБрджреИрдирдиреН, рдЬрд╕рдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рдорд╛рдкреНрдд рд╣реБрдБрджреИрдирдиреН, рдЬреЛрдореНрдмреА рд╕реНрдерд┐рддрд┐рдорд╛ рд░рд╣рдиреНрдЫрдиреНред рдпреА рд╕рдмреИрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╛ рдпрд╕реНрддреЛ рд▓реЗрдЦ.

рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ рдХреЗрд╣реА рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН:

  1. рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рдирдХреЛ рд░реВрдкрдорд╛ - рдПрдХ рдкрдЯрдХрдорд╛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ PID рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реН:
           /proc/sys/kernel/pid_max (since Linux 2.5.34)
                  This file specifies the value at which PIDs wrap around (i.e., the value in this file is one greater than the maximum PID).  PIDs greater than this  value  are  not  alloтАР
                  cated;  thus, the value in this file also acts as a system-wide limit on the total number of processes and threads.  The default value for this file, 32768, results in the
                  same range of PIDs as on earlier kernels
  2. рдЕрдерд╡рд╛ рддрдкрд╛рдИрдВ рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд┐рдзреИ рд╣реЛрдЗрди, рддрд░ рдЙрд╣реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЯрд┐рдиреА, рдЬреБрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓рд╛рдИ рд╕рд╣реА рд░реВрдкрдорд╛ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрд╖рдо рдЫ рд░ рдЬреЛрдореНрдмреАрд╣рд░реВ рдЬрдиреНрдорд╛рдЙрдБрджреИрдиред

рдХрдерд╛ реи. cgroup рд╣рдЯрд╛рдЙрдБрджрд╛ "Zombies"

рдХреБрдмрд▓реЗрдЯрд▓реЗ рдзреЗрд░реИ CPU рдЦрдкрдд рдЧрд░реНрди рдерд╛рд▓реНрдпреЛ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдХрд╕реИрд▓рд╛рдИ рдкрдирд┐ рдпреЛ рдорди рдкрд░реНрджреИрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдЖрдлреВрд▓рд╛рдИ рд╣рддрд┐рдпрд╛рд░ рджрд┐рдпреМрдВ perf рд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдерд╛рд▓реЗред рдЕрдиреБрд╕рдиреНрдзрд╛рдирдХреЛ рдирддрд┐рдЬрд╛ рдпрд╕ рдкреНрд░рдХрд╛рд░ рдерд┐рдпреЛ:

  • рдХреБрдмрд▓реЗрдЯрд▓реЗ рдЖрдлреНрдиреЛ CPU рд╕рдордпрдХреЛ рдПрдХ рддрд┐рд╣рд╛рдЗ рднрдиреНрджрд╛ рдмрдвреА рд╕рдордп рд╕рдмреИ cgroups рдмрд╛рдЯ рдореЗрдореЛрд░реА рдбреЗрдЯрд╛ рддрд╛рдиреНрдирдорд╛ рдЦрд░реНрдЪ рдЧрд░реНрдЫ:

    Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

  • рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдореЗрд▓рд┐рдЩ рд╕реВрдЪреАрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рдорд╕реНрдпрд╛рдХреЛ рдЫрд▓рдлрд▓рдЫреЛрдЯрдХрд░реАрдорд╛, рдпрд╕рдХреЛ рд╕рд╛рд░ рдпреЛ рд╣реЛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди tmpfs рдлрд╛рдЗрд▓рд╣рд░реВ рд░ рдЕрдиреНрдп рд╕рдорд╛рди рдЪреАрдЬрд╣рд░реВ рдкреНрд░рдгрд╛рд▓реАрдмрд╛рдЯ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╣рдЯрд╛рдЗрдБрджреИрдирдиреНред cgroup рдореЗрдЯрд╛рдЙрдБрджрд╛, рддрдерд╛рдХрдерд┐рддрд╣рд░реВ рд░рд╣рдиреНрдЫрдиреН рдореЗрдорд╕реАрдЬреА рдкреНрд░реЗрддред рдврд┐рд▓реЛрдЪрд╛рдБрдбреЛ рддрд┐рдиреАрд╣рд░реВ рдкреГрд╖реНрда рдХреНрдпрд╛рд╕рдмрд╛рдЯ рдореЗрдЯрд┐рдиреЗрдЫрдиреН, рддрд░ рд╕рд░реНрднрд░рдорд╛ рдзреЗрд░реИ рдореЗрдореЛрд░реА рдЫ рд░ рдХрд░реНрдиреЗрд▓рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдореЗрдЯрд╛рдЙрди рд╕рдордп рдмрд░реНрдмрд╛рдж рдЧрд░реНрдиреБрдХреЛ рдЕрд░реНрде рджреЗрдЦреНрджреИрдиред рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВ рдЬрдореНрдорд╛ рднрдЗрд░рд╣рдиреНрдЫрдиреНред рдпреЛ рдХрд┐рди рд╣реБрдиреНрдЫ? рдпреЛ рдХреНрд░реЛрди рдХрд╛рд░реНрдпрд╣рд░реВ рднрдПрдХреЛ рд╕рд░реНрднрд░ рд╣реЛ рдЬрд╕рд▓реЗ рдирд┐рд░рдиреНрддрд░ рдирдпрд╛рдБ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ - рдирдпрд╛рдБ рдкреЛрдбрд╣рд░реВред рдпрд╕рд░реА, рддрд┐рдиреАрд╣рд░реВрдорд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ cgroups рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдЪрд╛рдБрдбреИ рдореЗрдЯрд╛рдЗрдиреНрдЫред
  • рдХреБрдмреЗрд▓реЗрдЯрдорд╛ cAdvisor рд▓реЗ рдХрд┐рди рдпрддрд┐ рдзреЗрд░реИ рд╕рдордп рд▓рд┐рдиреНрдЫ? рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╕рд╛рде рдпреЛ рд╣реЗрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫред time cat /sys/fs/cgroup/memory/memory.statред рдпрджрд┐ рд╕реНрд╡рд╕реНрде рдореЗрд╕рд┐рдирдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди реж.режрез рд╕реЗрдХреЗрдиреНрдб рд▓рд╛рдЧреНрдЫ рднрдиреЗ, рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд cron0,01 рдорд╛ рдпрд╕рд▓реЗ рез.реи рд╕реЗрдХреЗрдиреНрдб рд▓рд┐рдиреНрдЫред рд╕рдореНрдкреВрд░реНрдг рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ cAdvisor, рдЬрд╕рд▓реЗ sysfs рдмрд╛рдЯ рдбреЗрдЯрд╛ рдзреЗрд░реИ рдмрд┐рд╕реНрддрд╛рд░реИ рдкрдвреНрдЫ, zombie cgroups рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реАрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫред
  • рдЬреЛрдореНрдмреАрд╣рд░реВрд▓рд╛рдИ рдЬрдмрд░рдЬрд╕реНрддреА рд╣рдЯрд╛рдЙрди, рд╣рд╛рдореАрд▓реЗ LKML рдорд╛ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░ рдХреНрдпрд╛рд╕рд╣рд░реВ рдЦрд╛рд▓реА рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдпреМрдВ: sync; echo 3 > /proc/sys/vm/drop_caches, - рддрд░ рдХреЛрд░ рдЕрдЭ рдЬрдЯрд┐рд▓ рднрдпреЛ рд░ рдореЗрд╕рд┐рди рдЭреБрдгреНрдбрд┐рдпреЛред

рдХреЗ рдЧрд░реНрдиреЗ? рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рднрдпреЛ (рдкреНрд░рддрд┐рдмрджреНрдз, рд░ рд╡рд┐рд╡рд░рдг рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рд╡рд┐рдореЛрдЪрди рдШреЛрд╖рдгрд╛) рдХрд░реНрдиреЗрд▓ рдЕрдкрдбреЗрдЯ Linux рд╕рдВрд╕реНрдХрд░рдг 4.16 рд╕рдореНрдоред

рдЗрддрд┐рд╣рд╛рд╕ рей. рд╕рд┐рд╕реНрдЯрдордбреА рд░ рдпрд╕рдХреЛ рдорд╛рдЙрдиреНрдЯ

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

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдпреЛ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рдХрд┐ systemd рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕рдорд╕реНрдпрд╛ рдерд┐рдпреЛ Ubuntu резрем.режрек, рд░ рдпреЛ рдЬрдбрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рдорд╛рдЙрдиреНрдЯрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрджрд╛ рд╣реБрдиреНрдЫ subPath рдХрдиреНрдлрд┐рдЧрдореНрдпрд╛рдкреНрд╕ рд╡рд╛ рд╕реЗрдХреНрд░реЗрдЯреНрд╕рдмрд╛рдЯред рдкреЛрдб рд╕рдХрд┐рдПрдкрдЫрд┐ systemd рд╕реЗрд╡рд╛ рд░ рдпрд╕рдХреЛ рд╕реЗрд╡рд╛ рдорд╛рдЙрдиреНрдЯ рдмрд╛рдБрдХреА рдЫред рдкреНрд░рдгрд╛рд▓реАрдорд╛ред рд╕рдордпрд╕рдБрдЧреИ, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛ рдЬрдореНрдорд╛ рд╣реБрдиреНрдЫред рдпрд╕ рд╡рд┐рд╖рдпрдорд╛ рдкрдирд┐ рдореБрджреНрджрд╛рд╣рд░реВ рдЫрдиреН:

  1. рдХреЛрдкреНрд╕ #релрепрезрем;
  2. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #релренрейрекрел.

... рдЬрд╕рдордзреНрдпреЗ рдЕрдиреНрддрд┐рдорд▓реЗ systemd рдорд╛ PR рд▓рд╛рдИ рдЬрдирд╛рдЙрдБрдЫ: #7811 (systemd рдорд╛ рд╕рдорд╕реНрдпрд╛ - #7798).

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

рддреНрдпрд╕реИрд▓реЗ, рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди DaemonSet рдмрдирд╛рдпреМрдВ:

---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  labels:
    app: systemd-slices-cleaner
  name: systemd-slices-cleaner
  namespace: kube-system
spec:
  updateStrategy:
    type: RollingUpdate
  selector:
    matchLabels:
      app: systemd-slices-cleaner
  template:
    metadata:
      labels:
        app: systemd-slices-cleaner
    spec:
      containers:
      - command:
        - /usr/local/bin/supercronic
        - -json
        - /app/crontab
        Image: private-registry.org/systemd-slices-cleaner/systemd-slices-cleaner:v0.1.0
        imagePullPolicy: Always
        name: systemd-slices-cleaner
        resources: {}
        securityContext:
          privileged: true
        volumeMounts:
        - name: systemd
          mountPath: /run/systemd/private
        - name: docker
          mountPath: /run/docker.sock
        - name: systemd-etc
          mountPath: /etc/systemd
        - name: systemd-run
          mountPath: /run/systemd/system/
        - name: lsb-release
          mountPath: /etc/lsb-release-host
      imagePullSecrets:
      - name: antiopa-registry
      priorityClassName: cluster-low
      tolerations:
      - operator: Exists
      volumes:
      - name: systemd
        hostPath:
          path: /run/systemd/private
      - name: docker
        hostPath:
          path: /run/docker.sock
      - name: systemd-etc
        hostPath:
          path: /etc/systemd
      - name: systemd-run
        hostPath:
          path: /run/systemd/system/
      - name: lsb-release
        hostPath:
          path: /etc/lsb-release

... рд░ рдпрд╕рд▓реЗ рдирд┐рдореНрди рд▓рд┐рдкрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ:

#!/bin/bash

# we will work only on xenial
hostrelease="/etc/lsb-release-host"
test -f ${hostrelease} && grep xenial ${hostrelease} > /dev/null || exit 0

# sleeping max 30 minutes to dispense load on kube-nodes
sleep $((RANDOM % 1800))

stoppedCount=0
# counting actual subpath units in systemd
countBefore=$(systemctl list-units | grep subpath | grep "run-" | wc -l)
# let's go check each unit
for unit in $(systemctl list-units | grep subpath | grep "run-" | awk '{print $1}'); do
  # finding description file for unit (to find out docker container, who born this unit)
  DropFile=$(systemctl status ${unit} | grep Drop | awk -F': ' '{print $2}')
  # reading uuid for docker container from description file
  DockerContainerId=$(cat ${DropFile}/50-Description.conf | awk '{print $5}' | cut -d/ -f6)
  # checking container status (running or not)
  checkFlag=$(docker ps | grep -c ${DockerContainerId})
  # if container not running, we will stop unit
  if [[ ${checkFlag} -eq 0 ]]; then
    echo "Stopping unit ${unit}"
    # stoping unit in action
    systemctl stop $unit
    # just counter for logs
    ((stoppedCount++))
    # logging current progress
    echo "Stopped ${stoppedCount} systemd units out of ${countBefore}"
  fi
done

... рд░ рдпреЛ рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд░реЗрдХ рел рдорд┐рдиреЗрдЯрдорд╛ рдЪрд▓реНрдЫред рдпрд╕рдХреЛ рдбрдХрд░рдлрд╛рдЗрд▓ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

FROM ubuntu:16.04
COPY rootfs /
WORKDIR /app
RUN apt-get update && 
    apt-get upgrade -y && 
    apt-get install -y gnupg curl apt-transport-https software-properties-common wget
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" && 
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && 
    apt-get update && 
    apt-get install -y docker-ce=17.03.0*
RUN wget https://github.com/aptible/supercronic/releases/download/v0.1.6/supercronic-linux-amd64 -O 
    /usr/local/bin/supercronic && chmod +x /usr/local/bin/supercronic
ENTRYPOINT ["/bin/bash", "-c", "/usr/local/bin/supercronic -json /app/crontab"]

рдХрдерд╛ рек: рдкреЛрдб рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╕рдорд░реВрдкрддрд╛

рдпреЛ рдпрд╛рдж рдЖрдпреЛ рдХрд┐: рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдиреЛрдбрдорд╛ рдкреЛрдб рд░рд╛рдЦреЗрдХрд╛ рдЫреМрдВ рд░ рдпрд╕рдХреЛ рдЫрд╡рд┐ рдзреЗрд░реИ рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рдбрд╛рдЙрдирд▓реЛрдб рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗ, рдЕрд░реНрдХреЛ рдкреЛрдб рдЬреБрди рдЙрд╣реА рдиреЛрдбрдорд╛ "рдорд┐рд▓реЗрдХреЛ" рдЫ рдирдпрд╛рдБ рдкреЛрдбрдХреЛ рдЫрд╡рд┐ рддрд╛рдиреНрди рд╕реБрд░реБ рдЧрд░реНрджреИрдиред рдмрд░реБ, рдпреЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрдбрдХреЛ рдЫрд╡рд┐ рддрд╛рдиреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкрд╣рд┐рд▓реЗ рдиреИ рддрд╛рд▓рд┐рдХрд╛рдмрджреНрдз рдЧрд░рд┐рдПрдХреЛ рд░ рдЬрд╕рдХреЛ рдЫрд╡рд┐ рдХреЗрд╡рд▓ рдПрдХ рдорд┐рдиреЗрдЯрдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛ, рддреНрдпреЛ рдкреЛрдбрдХреЛ рд╕реНрдерд┐рддрд┐рдорд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫред containerCreating.

рдШрдЯрдирд╛рд╣рд░реВ рдпрд╕ рдкреНрд░рдХрд╛рд░ рджреЗрдЦрд┐рдиреЗрдЫрдиреН:

Normal  Pulling    8m    kubelet, ip-10-241-44-128.ap-northeast-1.compute.internal  pulling image "registry.example.com/infra/openvpn/openvpn:master"

рдпрд╕рд▓реЗ рддреНрдпрд╕рдмрд╛рдЯ рд╣рдЯрд╛рдЙрдБрдЫ рдврд┐рд▓реЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдмрд╛рдЯ рдПрдЙрдЯрд╛ рдЫрд╡рд┐рд▓реЗ рдбрд┐рдкреНрд▓реЛрдпрд▓рд╛рдИ рд░реЛрдХреНрди рд╕рдХреНрдЫ рдиреЛрдбрдорд╛ред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫреИрдирдиреН:

  1. рдЖрдлреНрдиреЛ рдбрдХрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд▓рд╛рдИ рд╕рд┐рдзреИ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рд╡рд╛ рд╕рд┐рдзреИ рдХреНрд▓рд╕реНрдЯрд░рд╕рдБрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, GitLab рд░рдЬрд┐рд╕реНрдЯреНрд░реА, Nexus, рдЖрджрд┐);
  2. рдЬрд╕реНрддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХреНрд░рд╛рдХреЗрди.

рдХрдерд╛ рел. рдЕрдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реАрдХрд╛ рдХрд╛рд░рдг рдиреЛрдбрд╣рд░реВ рдЭреБрдгреНрдбрд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН

рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдХреНрд░рдордорд╛, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛рдХреЛ рдкрдирд┐ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреМрдВ рдЬрд╣рд╛рдБ рдиреЛрдб рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рд╣реБрди рдмрдиреНрдж рд╣реБрдиреНрдЫ: SSH рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдБрджреИрди, рд╕рдмреИ рдЕрдиреБрдЧрдорди рдбреЗрдордирд╣рд░реВ рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫрдиреН, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд▓рдЧрд╣рд░реВрдорд╛ рдХреЗрд╣реА рдкрдирд┐ (рд╡рд╛ рд▓рдЧрднрдЧ рдХреЗрд╣реА рдкрдирд┐) рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реБрдБрджреИрдиред

рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЪрд┐рддреНрд░рд╣рд░реВрдорд╛ рдПрдЙрдЯрд╛ рдиреЛрдбрдХреЛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрддрд╛рдЙрдиреЗрдЫреБ рдЬрд╣рд╛рдБ MongoDB рд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛред

рдорд╛рдерд┐рдмрд╛рдЯ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЧрд░реНрди рджреБрд░реНрдШрдЯрдирд╛рд╣рд░реВ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдЕрдирд┐ рдпрд╕рд░реА - ╨┐╨╛╤Б╨╗╨╡ рджреБрд░реНрдШрдЯрдирд╛рд╣рд░реВ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдЕрдиреБрдЧрдордирд▓реЗ рддреАрд╡реНрд░ рдЙрдЫрд╛рд▓ рдкрдирд┐ рджреЗрдЦрд╛рдЙрдБрдЫ, рдЬреБрди рдмрд┐рдиреНрджреБрдорд╛ рдиреЛрдб рдЕрдиреБрдкрд▓рдмреНрдз рд╣реБрдиреНрдЫ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

рдпрд╕рд░реА, рд╕реНрдХреНрд░рд┐рдирд╕рдЯрд╣рд░реВрдмрд╛рдЯ рдпреЛ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреНрдЫ рдХрд┐:

  1. рдореЗрд╕рд┐рдирдорд╛ RAM рдХрдо рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ;
  2. RAM рдЦрдкрддрдорд╛ рддреАрд╡реНрд░ рд╡реГрджреНрдзрд┐ рднрдПрдХреЛ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд╕рдореНрдкреВрд░реНрдг рдореЗрд╕рд┐рдирдорд╛ рдкрд╣реБрдБрдЪ рдЕрдЪрд╛рдирдХ рдЕрд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХреЛ рдЫ;
  3. рдореЛрдВрдЧреЛрдорд╛ рдПрдЙрдЯрд╛ рдареВрд▓реЛ рдХрд╛рд░реНрдп рдЖрдЙрдБрдЫ, рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ DBMS рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдмрдвреА рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫ рд░ рдбрд┐рд╕реНрдХрдмрд╛рдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдкрдвреНрди рдерд╛рд▓реНрдЫред

рдпреЛ рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫ рдХрд┐ рдпрджрд┐ рднрд┐рддреНрд░ Linux рдирд┐:рд╢реБрд▓реНрдХ рдореЗрдореЛрд░реА рд╕рдХрд┐рдпреЛ (рдореЗрдореЛрд░реА рдкреНрд░реЗрд╕рд░ рд╣реБрдиреНрдЫ) рд░ рдХреБрдиреИ рд╕реНрд╡рд╛рдк рд╣реБрдБрджреИрди, рддреНрдпрд╕рдкрдЫрд┐ рдЧрд░реНрди рдЬрдм OOM рдХрд┐рд▓рд░ рдЖрдЙрдБрдЫ, рдкреГрд╖реНрда рдХреНрдпрд╛рд╕рдорд╛ рдкреГрд╖реНрдард╣рд░реВ рдлреНрдпрд╛рдБрдХреНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдбрд┐рд╕реНрдХрдорд╛ рдлрд┐рд░реНрддрд╛ рд▓реЗрдЦреНрдиреЗ рдмреАрдЪ рд╕рдиреНрддреБрд▓рди рд╣реБрди рд╕рдХреНрдЫред рдпреЛ kswapd рджреНрд╡рд╛рд░рд╛ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдкрдЫрд┐рдХреЛ рдЖрд╡рдВрдЯрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдХреЗрд╕рдореНрдо рдзреЗрд░реИ рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВ рд╕рд╛рд╣рд╕рдкреВрд░реНрд╡рдХ рдЦрд╛рд▓реА рдЧрд░реНрджрдЫред

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдЙрдЪреНрдЪ I/O рднрд╛рд░ рд░ рдереЛрд░реИ рдорд╛рддреНрд░рд╛рдорд╛ рдирд┐:рд╢реБрд▓реНрдХ рдореЗрдореЛрд░реАрдХреЛ рд╕рд╛рде, kswapd рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдмрд╛рдзрд╛ рдмрдиреНрдЫ, рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдпрд╕рдорд╛ рдмрд╛рдБрдзрд┐рдПрдХрд╛ рдЫрдиреН рд╕рдмреИ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВрдХреЛ рдЖрд╡рдВрдЯрди (рдкреГрд╖реНрда рджреЛрд╖рд╣рд░реВ)ред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓реЗ рдЕрдм рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдирдиреН рднрдиреЗ рдпреЛ рдзреЗрд░реИ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдЬрд╛рд░реА рд░рд╣рди рд╕рдХреНрдЫ, рддрд░ OOM-рдХрд┐рд▓рд░-рдЕрдЧрд╛рдз рдЦрд╛рдбрд▓рдХреЛ рдХрд┐рдирд╛рд░рдорд╛ рдЕрдбреНрдХрд┐рдиреНрдЫред

рдкреНрд░рд╢реНрди рдпреЛ рдЫ: OOM рдХрд┐рд▓рд░ рдХрд┐рди рдпрддрд┐ рдврд┐рд▓реЛ рдЖрдЙрдБрдЫ? рдпрд╕рдХреЛ рд╣рд╛рд▓рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдорд╛, OOM рдХрд┐рд▓рд░ рдЕрддреНрдпрдиреНрддреИ рдореВрд░реНрдЦ рдЫ: рдпрд╕рд▓реЗ рдореЗрдореЛрд░реА рдкреГрд╖реНрда рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд╣реБрдБрджрд╛ рдорд╛рддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕рдорд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ, рдЕрд░реНрдерд╛рддреН рдпрджрд┐ рдкреГрд╖реНрда рдЧрд▓реНрддреА рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗред рдпреЛ рдзреЗрд░реИ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рд╣реБрдБрджреИрди, рдХрд┐рдирднрдиреЗ kswapd рд▓реЗ рд╕рд╛рд╣рд╕рдкреВрд░реНрд╡рдХ рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВ рдЦрд╛рд▓реА рдЧрд░реНрджрдЫ, рдкреГрд╖реНрда рдХреНрдпрд╛рд╕ (рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕рдмреИ рдбрд┐рд╕реНрдХ I/O, рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛) рдбрд┐рд╕реНрдХрдорд╛ рдлрд┐рд░реНрддрд╛ рдлреНрд▓рд╢ рдЧрд░реНрджрдЫред рдердк рд╡рд┐рд╡рд░рдгрдорд╛, рдХрд░реНрдиреЗрд▓рдорд╛ рдпрд╕реНрддрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгрд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдгрдХреЛ рд╕рд╛рде, рддрдкрд╛рдИрдВ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╣рд╛рдБ.

рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ рдХреЛрд░ рднрдПрдХреЛ Linux 4.6 +ред

рдХрдерд╛ ремред рдХреЛрд╕рд╛рд╣рд░реВ рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЕрдбреНрдХрд┐рдПрдХрд╛ рдЫрдиреН

рдХреЗрд╣реА рдХреНрд▓рд╕реНрдЯрд░рд╣рд░реВрдорд╛ рдЬрд╣рд╛рдБ рд╕рд╛рдБрдЪреНрдЪреИ рдзреЗрд░реИ рдкреЛрдбрд╣рд░реВ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН, рд╣рд╛рдореАрд▓реЗ рдпрд╛рдж рдЧрд░реНрди рдерд╛рд▓реНрдпреМрдВ рдХрд┐ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдареВрд▓реЛ рднрд╛рдЧ рдзреЗрд░реИ рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рд░рд╛рдЬреНрдпрдорд╛ "рдЭреБрдгреНрдбрд┐рдПрдХреЛ" рдерд┐рдпреЛред Pending, рдпрджреНрдпрдкрд┐ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВ рдЖрдлреИрдВ рдкрд╣рд┐рд▓реЗ рдиреИ рдиреЛрдбрд╣рд░реВрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН рд░ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдПрдХреИ рд╕рдордпрдорд╛, describe рдХреЗрд╣реА рдЧрд▓рдд рдЫреИрди:

  Type    Reason                  Age                From                     Message
  ----    ------                  ----               ----                     -------
  Normal  Scheduled               1m                 default-scheduler        Successfully assigned sphinx-0 to ss-dev-kub07
  Normal  SuccessfulAttachVolume  1m                 attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-6aaad34f-ad10-11e8-a44c-52540035a73b"
  Normal  SuccessfulMountVolume   1m                 kubelet, ss-dev-kub07    MountVolume.SetUp succeeded for volume "sphinx-config"
  Normal  SuccessfulMountVolume   1m                 kubelet, ss-dev-kub07    MountVolume.SetUp succeeded for volume "default-token-fzcsf"
  Normal  SuccessfulMountVolume   49s (x2 over 51s)  kubelet, ss-dev-kub07    MountVolume.SetUp succeeded for volume "pvc-6aaad34f-ad10-11e8-a44c-52540035a73b"
  Normal  Pulled                  43s                kubelet, ss-dev-kub07    Container image "registry.example.com/infra/sphinx-exporter/sphinx-indexer:v1" already present on machine
  Normal  Created                 43s                kubelet, ss-dev-kub07    Created container
  Normal  Started                 43s                kubelet, ss-dev-kub07    Started container
  Normal  Pulled                  43s                kubelet, ss-dev-kub07    Container image "registry.example.com/infra/sphinx/sphinx:v1" already present on machine
  Normal  Created                 42s                kubelet, ss-dev-kub07    Created container
  Normal  Started                 42s                kubelet, ss-dev-kub07    Started container

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

рд░ рдорджреНрджрддрдХреЛ рдЕрдзреНрдпрдпрди рдЧрд░реЗрдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдпреМрдВ:

--kube-api-qps - QPS to use while talking with kubernetes apiserver (default 5)
--kube-api-burst  - Burst to use while talking with kubernetes apiserver (default 10) 
--event-qps - If > 0, limit event creations per second to this value. If 0, unlimited. (default 5)
--event-burst - Maximum size of a bursty event records, temporarily allows event records to burst to this number, while still not exceeding event-qps. Only used if --event-qps > 0 (default 10) 
--registry-qps - If > 0, limit registry pull QPS to this value.
--registry-burst - Maximum size of bursty pulls, temporarily allows pulls to burst to this number, while still not exceeding registry-qps. Only used if --registry-qps > 0 (default 10)

рджреЗрдЦрд┐рдП рдЬрд╕реНрддреИ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдирд╣рд░реВ рдПрдХрджрдореИ рд╕рд╛рдиреЛ рдЫрдиреНред, рд░ репреж% рдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдЫрдиреН... рдпрджреНрдпрдкрд┐, рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдпреЛ рдкрд░реНрдпрд╛рдкреНрдд рдерд┐рдПрдиред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ:

--event-qps=30 --event-burst=40 --kube-api-burst=40 --kube-api-qps=30 --registry-qps=30 --registry-burst=40

... рд░ рдХреНрдпреБрдмрд▓реЗрдЯрд╣рд░реВ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдпреМрдВ, рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореАрд▓реЗ API рд╕рд░реНрднрд░рдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЧреНрд░рд╛рдлрдорд╛ рдирд┐рдореНрди рддрд╕реНрд╡реАрд░ рджреЗрдЦреНрдпреМрдВ:

Kubernetes рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ 6 рдордиреЛрд░рдЮреНрдЬрди рдкреНрд░рдгрд╛рд▓реА рдмрдЧрд╣рд░реВ [рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдорд╛рдзрд╛рди]

...рд░ рд╣реЛ, рд╕рдмреИ рдХреБрд░рд╛ рдЙрдбреНрди рдерд╛рд▓реНрдпреЛ!

PS

рдмрдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рд░ рд▓реЗрдЦ рддрдпрд╛рд░ рдЧрд░реНрди рдорджреНрджрддрдХреЛ рд▓рд╛рдЧрд┐, рдо рд╣рд╛рдореНрд░реЛ рдХрдореНрдкрдиреАрдХрд╛ рдЕрд╕рдВрдЦреНрдп рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рд░ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рд╣рд╛рдореНрд░реЛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рд░ рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реАрдХрд╛ рдореЗрд░рд╛ рд╕рд╣рдХрд░реНрдореА, рдЖрдиреНрджреНрд░реЗ рдХреНрд▓рд┐рдореЗрдиреНрдЯреЗрдн (рдЬреБрдЬреНрдЬрд╛).

рдкреАрдкреАрдПрд╕

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рднрдПрдХрд╛ рд╕рд╛рдЗрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрд░рдкрд░реНрджреЛ рд╣реЛрд╕реНрдЯрд┐рдЩ рдЦрд░рд┐рдж рдЧрд░реНрдиреБрд╣реЛрд╕реН ЁЯФе DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рднрд░рдкрд░реНрджреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдЩ рдХрд┐рдиреНрдиреБрд╣реЛрд╕реН | ProHoster