рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдЙрддреНрдкрд╛рджрдирд╛рдд рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡рд░реНрд╖рд╛рдиреБрд╡рд░реНрд╖реЗ, рдЖрдореНрд╣реА рд╡рд┐рд╡рд┐рдз рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХрд╛рдВрдордзреАрд▓ рдмрдЧреНрд╕рдореБрд│реЗ рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рдкреЙрдбреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рдгрд╛рд░реЗ рдЕрдкреНрд░рд┐рдп рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рд╕рдордЬрдгреНрдпрд╛рдЬреЛрдЧреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╕реЗ рдШрдбрд▓реЗ рдпрд╛рдмрджреНрджрд▓ рдмрд░реНрдпрд╛рдЪ рдордиреЛрд░рдВрдЬрдХ рдХрдерд╛ рдЬрдорд╛ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдХрд╛рд╣реА рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдВрд╡рд╛ рдордиреЛрд░рдВрдЬрдХ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдЬрд░реА рддреБрдореНрд╣реА рдЕрд╢рд╛ рдкреНрд░рд╕рдВрдЧрд╛рдВрдирд╛ рддреЛрдВрдб рджреЗрдгреНрдпрд╛рдЗрддрдХреЗ рднрд╛рдЧреНрдпрд╡рд╛рди рдирд╕рд▓реЗ рддрд░реАрд╣реА, рдЕрд╢рд╛ рд▓рд╣рд╛рди рдЧреБрдкреНрддрд╣реЗрд░ рдХрдерд╛рдВрдмрджреНрджрд▓ рд╡рд╛рдЪрдгреЗ - рд╡рд┐рд╢реЗрд╖рддрдГ "рдлрд░реНрд╕реНрдЯ-рд╣рдБрдб" - рд╣реЗ рдиреЗрд╣рдореАрдЪ рдордиреЛрд░рдВрдЬрдХ рдЕрд╕рддреЗ, рдирд╛рд╣реА рдХрд╛? ..

рдХрдерд╛ 1. рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХ рдЖрдгрд┐ рдЕрдбрдХрд▓реЗрд▓рд╛ рдбреЙрдХрд░

рдПрдХрд╛ рдХреНрд▓рд╕реНрдЯрд░рд╡рд░, рдЖрдореНрд╣рд╛рд▓рд╛ рд╡реЗрд│реЛрд╡реЗрд│реА рдПрдХ рдЧреЛрдард╡рд▓реЗрд▓рд╛ рдбреЙрдХрд░ рдорд┐рд│рд╛рд▓рд╛, рдЬреНрдпрд╛рдиреЗ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрд╛рдордзреНрдпреЗ рд╡реНрдпрддреНрдпрдп рдЖрдгрд▓рд╛. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдбреЙрдХрд░ рд▓реЙрдЧрдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рджрд┐рд╕реВрди рдЖрд▓реНрдпрд╛:

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. рдПрдХ рд╕рд░рд╕рдХрдЯ рдЕрднреНрдпрд╛рд╕ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ рдХреА рдбреЙрдХрд░ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕ рдХрд╛рдЯрд╛ рджреЗрдК рд╢рдХрдд рдирд╛рд╣реА, рдореНрд╣рдгреВрдирдЪ рддреА рд╡реЗрд│реЛрд╡реЗрд│реА "рд╣рдБрдЧ" рд╣реЛрддреЗ.

рдирд┐рд░реАрдХреНрд╖рдгрд╛рдордзреНрдпреЗ, рдЦрд╛рд▓реАрд▓ рдЪрд┐рддреНрд░ рдХрд╛рдп рдШрдбрдд рдЖрд╣реЗ рдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдЕрд╢реАрдЪ рдкрд░рд┐рд╕реНрдерд┐рддреА рдЗрддрд░ рдиреЛрдбреНрд╕рд╡рд░ рджрд┐рд╕реВрди рдпреЗрддреЗ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 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>
тАж

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

рд╢реЗрд░рд╛: рдЕрдзрд┐рдХ рддрдВрддреЛрддрдВрдд рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреНрд░реЙрди рдЯрд╛рд╕реНрдХрджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рддрдерд╛рдкрд┐ рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХ рд╣реА рдПрдХ рдЗрдирд┐рдЯ рдкреНрд░рдгрд╛рд▓реА рдирд╛рд╣реА рдЖрдгрд┐ рддрд┐рдЪреНрдпрд╛ рдореБрд▓рд╛рдВрдиреА рдирд┐рд░реНрдорд╛рдг рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рдЕрд╡рд▓рдВрдм" рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдЬреЗрд╡реНрд╣рд╛ 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. рдХрд┐рдВрд╡рд╛ рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХрдордзреНрдпреЗ рдЯрд╛рд╕реНрдХ рд▓рд╛рдБрдЪ рдХрд░рд╛ рдереЗрдЯ рдирд╛рд╣реА, рдкрдг рддреЗрдЪ рд╡рд╛рдкрд░реВрди рдЯрд┐рдиреА, рдЬреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЖрд╣реЗ рдЖрдгрд┐ рдЭреЛрдореНрдмреА рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА.

рдХрдерд╛ 2. cgroup рд╣рдЯрд╡рддрд╛рдирд╛ "рдЭреЛрдореНрдмреАрдЬ".

рдХреБрдмреЗрд▓реЗрдЯрдиреЗ рднрд░рдкреВрд░ CPU рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рд╣реЗ рдХреЛрдгрд╛рд▓рд╛рд╣реА рдЖрд╡рдбрдд рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рд╕реНрд╡рддрдГрд▓рд╛ рд╕рд╢рд╕реНрддреНрд░ рдХреЗрд▓реЗ рдкрд░рдл рдЖрдгрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рддрд╛рд│рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рддрдкрд╛рд╕рдгреАрдЪреЗ рдкрд░рд┐рдгрд╛рдо рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╣реЛрддреЗ:

  • рдХреБрдмреЗрд▓реЗрдЯ рд╕рд░реНрд╡ cgroups рдордзреВрди рдореЗрдорд░реА рдбреЗрдЯрд╛ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА CPU рд╡реЗрд│реЗрдЪреНрдпрд╛ рдПрдХ рддреГрддреАрдпрд╛рдВрд╢ рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдШрд╛рд▓рд╡рддреЗ:

    рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

  • рдХрд░реНрдирд▓ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдореЗрд▓рд┐рдВрдЧ рд▓рд┐рд╕реНрдЯрдордзреНрдпреЗ, рддреБрдореНрд╣реА рд╢реЛрдзреВ рд╢рдХрддрд╛ рд╕рдорд╕реНрдпреЗрдЪреА рдЪрд░реНрдЪрд╛. рдереЛрдбрдХреНрдпрд╛рдд, рдореБрджреНрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рд╡рд┐рд╡рд┐рдз tmpfs рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рдЗрддрд░ рддрддреНрд╕рдо рдЧреЛрд╖реНрдЯреА рд╕рд┐рд╕реНрдЯрдордордзреВрди рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реНрдпрд╛ рдЬрд╛рдд рдирд╛рд╣реАрдд cgroup рд╣рдЯрд╡рддрд╛рдирд╛, рддрдерд╛рдХрдерд┐рдд memcg рдЬрд╝реЛрдВрдмреА. рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рддреЗ рдкреГрд╖реНрда рдХреЕрд╢реЗрдордзреВрди рд╣рдЯрд╡рд┐рд▓реЗ рдЬрд╛рддреАрд▓, рдкрд░рдВрддреБ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рднрд░рдкреВрд░ рдореЗрдорд░реА рдЖрд╣реЗ рдЖрдгрд┐ рдХрд░реНрдирд▓ рддреНрдпрд╛рдВрдирд╛ рд╣рдЯрд╡рдгреНрдпрд╛рдд рд╡реЗрд│ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдореБрджреНрджрд╛ рджрд┐рд╕рдд рдирд╛рд╣реА. рддреНрдпрд╛рдореБрд│реЗ рддреЗ рдвреАрдЧрднрд░ рд░рд╛рд╣рддрд╛рдд. рдЕрд╕реЗ рдХрд╛ рд╣реЛрдд рдЖрд╣реЗ? рд╣рд╛ рдХреНрд░реЙрди рдЬреЙрдмреНрд╕ рдЕрд╕рд▓реЗрд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░ рдЖрд╣реЗ рдЬреЛ рд╕рддрдд рдирд╡реАрди рдиреЛрдХрд░реНтАНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕реЛрдмрдд рдирд╡реАрди рдкреЙрдбреНрд╕. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рддреНрдпрд╛рддреАрд▓ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдирд╡реАрди cgroups рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рдЬреЗ рд▓рд╡рдХрд░рдЪ рд╣рдЯрд╡рд▓реЗ рдЬрд╛рддрд╛рдд.
  • рдХреБрдмреЗрд▓реЗрдЯрдордзреАрд▓ cAdvisor рдЗрддрдХрд╛ рд╡реЗрд│ рдХрд╛ рдШрд╛рд▓рд╡рддреЛ? рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрджреНрд╡рд╛рд░реЗ рд╣реЗ рдкрд╛рд╣рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ time cat /sys/fs/cgroup/memory/memory.stat. рдЬрд░ рдирд┐рд░реЛрдЧреА рдорд╢реАрдирд╡рд░ рдСрдкрд░реЗрд╢рдирд▓рд╛ 0,01 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд, рддрд░ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдХреНрд░реЛрди02 рд╡рд░ 1,2 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд. рдЧреЛрд╖реНрдЯ рдЕрд╢реА рдЖрд╣реЗ рдХреА cAdvisor, рдЬреЛ sysfs рдХрдбреАрд▓ рдбреЗрдЯрд╛ рдЕрддрд┐рд╢рдп рд╣рд│реВ рд╡рд╛рдЪрддреЛ, рдЭреЛрдореНрдмреА cgroups рдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдд рдпреЗрдгрд╛рд░реА рдореЗрдорд░реА рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ.
  • рдЭреЛрдореНрдмреА рдЬрдмрд░рджрд╕реНрддреАрдиреЗ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА LKML рдиреЗ рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реНрдпрд╛рдиреБрд╕рд╛рд░ рдХреЕрд╢реЗ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛: sync; echo 3 > /proc/sys/vm/drop_caches, - рдкрд░рдВрддреБ рдХреЛрд░ рдЕрдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдирд┐рдШрд╛рд▓рд╛ рдЖрдгрд┐ рдХрд╛рд░ рд▓рдЯрдХрд▓реА.

рдХрд╛рдп рдХрд░рд╛рдпрдЪрдВ? рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рдд рдЖрд╣реЗрд╡рдЪрдирдмрджреНрдз, рдЖрдгрд┐ рдордзреНрдпреЗ рд╡рд░реНрдгрди рдкрд╣рд╛ рд╕рдВрджреЗрд╢ рд╕реЛрдбрд╛рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓ рдЖрд╡реГрддреНрддреА рек.резрем рдордзреНрдпреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░реВрди.

рдЗрддрд┐рд╣рд╛рд╕ 3. Systemd рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдорд╛рдЙрдВрдЯ

рдкреБрдиреНрд╣рд╛, рдХреБрдмреЗрд▓реЗрдЯ рдХрд╛рд╣реА рдиреЛрдбреНрд╕рд╡рд░ рдЦреВрдк рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░рддреЗ, рдкрд░рдВрддреБ рдпрд╛рд╡реЗрд│реА рддреЗ рдЕрдзрд┐рдХ рдореЗрдорд░реА рдЖрд╣реЗ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдЙрдмрдВрдЯреВ 16.04 рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ рдорд╛рдЙрдВрдЯ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдирд╛ рдЙрджреНрднрд╡рддреЗ. subPath ConfigMap рдЪреНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдЧреБрдкреНрдд рдЪреНрдпрд╛ рдкрд╛рд╕реВрди. рдкреЙрдб рддреНрдпрд╛рдЪреЗ рдХрд╛рдо рдкреВрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ systemd рд╕реЗрд╡рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рд╕реЗрд╡рд╛ рдорд╛рдЙрдВрдЯ рд░рд╛рд╣рддреЗ рдкреНрд░рдгрд╛рд▓реА рдордзреНрдпреЗ. рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ, рддреЗ рдЦреВрдк рдореЛрдареА рд░рдХреНрдХрдо рдЬрдорд╛ рдХрд░рддрд╛рдд. рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рджреЗрдЦреАрд▓ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд:

  1. #релрепрезрем;
  2. kubernetes #57345.

...рдЬреНрдпрд╛рдкреИрдХреА рд╢реЗрд╡рдЯрдЪрд╛ рд╕рд┐рд╕реНрдЯреАрдордб рдордзреАрд▓ PR рдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ: #7811 (рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ - #7798).

рд╕рдорд╕реНрдпрд╛ рдЖрддрд╛ рдЙрдмрдВрдЯреВ 18.04 рдордзреНрдпреЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЙрдмрдВрдЯреВ 16.04 рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░реАрд▓ рдЖрдордЪрд╛ рдЙрдкрд╛рдп рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯреВ рд╢рдХреЗрд▓.

рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдбреЗрдордирд╕реЗрдЯ рдмрдирд╡рд┐рд▓рд╛:

---
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

... рдЖрдгрд┐ рддреЗ рдЖрдзреА рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реБрдкрд░рдХреНрд░реЛрдирд┐рдХрдЪреНрдпрд╛ рдорджрддреАрдиреЗ рджрд░ 5 рдорд┐рдирд┐рдЯрд╛рдВрдиреА рдЪрд╛рд▓рддреЗ. рддреНрдпрд╛рдЪреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

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"]

рдХрдерд╛ 4. рд╢реЗрдбреНрдпреВрд▓ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рддрд╛рдирд╛ рд╕реНрдкрд░реНрдзрд╛рддреНрдордХрддрд╛

рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдХреА: рдЬрд░ рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдиреЛрдбрд╡рд░ рдПрдХ рдкреЙрдб рдареЗрд╡рд▓рд╛ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдкреНрд░рддрд┐рдорд╛ рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рд╕рд╛рдареА рдмрд╛рд╣реЗрд░ рдЯрд╛рдХрд▓реА рдЧреЗрд▓реА рдЕрд╕реЗрд▓, рддрд░ рддреНрдпрд╛рдЪ рдиреЛрдбрд▓рд╛ "рд╣рд┐рдЯ" рдХрд░рдгрд╛рд░рд╛ рджреБрд╕рд░рд╛ рдкреЙрдб рд╕рд╣рдЬрдкрдгреЗ рдмрд╛рд╣реЗрд░ рдпреЗрдИрд▓. рдирд╡реАрди рдкреЙрдб рдкреНрд░рддрд┐рдорд╛ рдЦреЗрдЪрдгреЗ рд╕реБрд░реВ рдХрд░рдд рдирд╛рд╣реА. рддреНрдпрд╛рдРрд╡рдЬреА, рдорд╛рдЧреАрд▓ рдкреЙрдбрдЪреА рдкреНрд░рддрд┐рдорд╛ 'рдЦреЗрдЪрд▓реА' рдЬрд╛рдгреНрдпрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ. рдкрд░рд┐рдгрд╛рдореА, рдПрдХ рдкреЙрдб рдЬреЛ рдЖрдзреАрдЪ рдирд┐рдпреЛрдЬрд┐рдд рд╣реЛрддрд╛ рдЖрдгрд┐ рдЬреНрдпрд╛рдЪреА рдкреНрд░рддрд┐рдорд╛ рдлрдХреНрдд рдПрдХрд╛ рдорд┐рдирд┐рдЯрд╛рдд рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ рддреА рдмрд░реНрдпрд╛рдЪ рдХрд╛рд│рд╛рд╕рд╛рдареА рд╕реНрдерд┐рддреАрдд рд░рд╛рд╣реАрд▓. 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 Registry, Nexus, рдЗ.);
  2. рд╕рд╛рд░рдЦреНрдпрд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрдЪрд╛ рд▓рд╛рдн рдШреНрдпрд╛ рдХреНрд░реЕрдХреЗрди.

рдХрдерд╛ 5. рд╕реНрдорд░рдгрд╢рдХреНрддреАрдЪреНрдпрд╛ рдХрдорддрд░рддреЗрдореБрд│реЗ рд╣рдБрдЧрд┐рдВрдЧ рдиреЛрдбреНрд╕

рд╡рд┐рд╡рд┐рдз рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рди рджрд░рдореНрдпрд╛рди, рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╢реА рдкрд░рд┐рд╕реНрдерд┐рддреА рджреЗрдЦреАрд▓ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реА рдЬреЗрд╡реНрд╣рд╛ рдиреЛрдб рдкреВрд░реНрдгрдкрдгреЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдгреЗ рдмрдВрдж рд╣реЛрддреЗ: SSH рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдд рдирд╛рд╣реА, рд╕рд░реНрд╡ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбрд┐рдорди рдмрдВрдж рд╣реЛрддрд╛рдд рдЖрдгрд┐ рдирдВрддрд░ рд▓реЙрдЧрдордзреНрдпреЗ рдХрд╛рд╣реАрд╣реА (рдХрд┐рдВрд╡рд╛ рдЬрд╡рд│рдЬрд╡рд│ рдХрд╛рд╣реАрд╣реА) рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╛рд╣реА.

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

рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдЕрд╕реЗ рджрд┐рд╕рддреЗ рддреЗ рдЕрдкрдШрд╛рдд:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдЖрдгрд┐ рдпрд╛рдкреНрд░рдорд╛рдгреЗ - ╨┐╨╛╤Б╨╗╨╡ рдЕрдкрдШрд╛рдд:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рдирд┐рд░реАрдХреНрд╖рдгрд╛рдордзреНрдпреЗ, рдПрдХ рддреАрдХреНрд╖реНрдг рдЙрдбреА рджреЗрдЦреАрд▓ рдЖрд╣реЗ, рдЬреНрдпрд╛рд╡рд░ рдиреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реЛрдгреЗ рдерд╛рдВрдмрддреЗ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

рддрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрд╡рд░реВрди рддреБрдореНрд╣реА рддреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛:

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

рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдЬрд░ рд▓рд┐рдирдХреНрд╕рдЪреА рдлреНрд░реА рдореЗрдорд░реА рд╕рдВрдкрд▓реА (рдореЗрдорд░реА рдкреНрд░реЗрд╢рд░ рд╕реЗрдЯ рдЭрд╛рд▓реЗ) рдЖрдгрд┐ рд╕реНрд╡реЕрдк рдирд╕реЗрд▓ рддрд░ рддреЗ OOM рдХрд┐рд▓рд░рдЪреНрдпрд╛ рдЖрдЧрдордирд╛рдирдВрддрд░, рдкреГрд╖реНрда рдХреЕрд╢реЗрдордзреНрдпреЗ рдкреГрд╖реНрдареЗ рдлреЗрдХрдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдбрд┐рд╕реНрдХрд╡рд░ рдкрд░рдд рд▓рд┐рд╣рд┐рдгреЗ рдпрд╛рдВрдЪреНрдпрд╛рдд рд╕рдорддреЛрд▓ рдЕрд╕реВ рд╢рдХрддреЛ. рд╣реЗ kswapd рджреНрд╡рд╛рд░реЗ рд╣рд╛рддрд╛рд│рд▓реЗ рдЬрд╛рддреЗ, рдЬреЗ рдирдВрддрд░рдЪреНрдпрд╛ рд╡рд╛рдЯрдкрд╛рд╕рд╛рдареА рд╢рдХреНрдп рддрд┐рддрдХреА рдореЗрдорд░реА рдкреГрд╖реНрдареЗ рдореЛрдХрд│реА рдХрд░рддреЗ.

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

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

рд╣реЗ рд╡рд░реНрддрди рд╕реБрдзрд╛рд░рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓ 4.6+ рд╕рд╣.

рдХрдерд╛ 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

рдХрд╛рд╣реА рдЦреЛрджрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рд▓реЗ рдХреА рдХреБрдмреЗрд▓реЗрдЯрд▓рд╛ рд╢реЗрдВрдЧрд╛рдВрдЪреНрдпрд╛ рд╕реНрдерд┐рддреАрдмрджреНрджрд▓рдЪреА рд╕рд░реНрд╡ рдорд╛рд╣рд┐рддреА рдЖрдгрд┐ рдПрдкреАрдЖрдп рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╕рдЬреАрд╡рддрд╛/рддрддреНрдкрд░рддрд╛ рдЪрд╛рдЪрдгреНрдпрд╛ рдкрд╛рдард╡рд╛рдпрд▓рд╛ рд╡реЗрд│ рдирд╛рд╣реА.

рдЖрдгрд┐ рдорджрддреАрдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрдврд│рд▓реЗ:

--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)

рдкрд╛рд╣рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдпреЗ рдЦреВрдкрдЪ рд▓рд╣рд╛рди рдЖрд╣реЗрдд, рдЖрдгрд┐ 90% рдордзреНрдпреЗ рддреЗ рд╕рд░реНрд╡ рдЧрд░рдЬрд╛ рдкреВрд░реНрдг рдХрд░рддрд╛рдд ... рддрдерд╛рдкрд┐, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╣реЗ рдкреБрд░реЗрд╕реЗ рдирд╡реНрд╣рддреЗ. рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдореВрд▓реНрдпреЗ рд╕реЗрдЯ рдХрд░рддреЛ:

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

... рдЖрдгрд┐ рдХреБрдмреЗрд▓реЗрдЯреНрд╕ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реЗ, рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА рдПрдкреАрдЖрдп рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рдХреЙрд▓рдЪреНрдпрд╛ рдЖрд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рдЪрд┐рддреНрд░ рдкрд╛рд╣рд┐рд▓реЗ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ 6 рдордиреЛрд░рдВрдЬрдХ рд╕рд┐рд╕реНрдЯрдо рдмрдЧ [рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг]

...рдЖрдгрд┐ рд╣реЛ, рд╕рдЧрд│рдВ рдЙрдбрд╛рдпрд▓рд╛ рд▓рд╛рдЧрд▓рдВ!

PS

рдмрдЧ рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рдд рдЖрдгрд┐ рд╣рд╛ рд▓реЗрдЦ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рддреНрдпрд╛рдВрдиреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдорджрддреАрдмрджреНрджрд▓, рдореА рдЖрдордЪреНрдпрд╛ рдХрдВрдкрдиреАрдЪреНрдпрд╛ рдЕрд╕рдВрдЦреНрдп рдЕрднрд┐рдпрдВрддреНрдпрд╛рдВрдЪреЗ рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рдд: рдЖрдордЪреНрдпрд╛ R&D рдЯреАрдордордзреАрд▓ рдорд╛рдЭреЗ рд╕рд╣рдХрд╛рд░реА рдЖрдВрджреНрд░реЗ рдХреНрд▓рд┐рдореЗрдВрдЯрдпреЗрд╡реНрд╣ (рдЭреБрдЭрд╛).

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

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛