เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 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 เช•เชพเชขเซ€ เชจเชพเช–เซ‡ เช›เซ‡

เช•เซเชฌเซ‡เชฒเซ‡เชŸเซ‡ เช˜เชฃเชพ เชฌเชงเชพ เชธเซ€เชชเซ€เชฏเซเชจเซ‹ เชตเชชเชฐเชพเชถ เชถเชฐเซ‚ เช•เชฐเซเชฏเซ‹:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

เช•เซ‹เชˆเชจเซ‡ เช† เช—เชฎเชถเซ‡ เชจเชนเซ€เช‚, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชธเชœเซเชœ เช•เชฐเซ€ เชชเชฐเชซ เช…เชจเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚. เชคเชชเชพเชธเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เชนเชคเชพ:

  • เช•เซเชฌเซ‡เชฒเซ‡เชŸ เชคเซ‡เชจเชพ CPU เชธเชฎเชฏเชจเชพ เชคเซเชฐเซ€เชœเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเชฎเชฏ เชคเชฎเชพเชฎ cgroupsเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชฎเชฐเซ€ เชกเซ‡เชŸเชพ เช–เซ‡เช‚เชšเชตเชพเชฎเชพเช‚ เชตเชฟเชคเชพเชตเซ‡ เช›เซ‡:

    เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

  • เช•เชฐเซเชจเชฒ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ€ เชฎเซ‡เช‡เชฒเชฟเช‚เช— เชธเซ‚เชšเชฟเชฎเชพเช‚ เชคเชฎเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเชฎเชธเซเชฏเชพเชจเซ€ เชšเชฐเซเชšเชพ. เชŸเซ‚เช‚เช•เชฎเชพเช‚, เชฎเซเชฆเซเชฆเซ‹ เชจเซ€เชšเซ‡ เช†เชตเซ‡ เช›เซ‡: เชตเชฟเชตเชฟเชง tmpfs เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เช…เชจเซเชฏ เชธเชฎเชพเชจ เชตเชธเซเชคเซเช“ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€ cgroup เช•เชพเชขเซ€ เชจเชพเช–เชคเซ€ เชตเช–เชคเซ‡, เช•เชนเซ‡เชตเชพเชคเชพ memcg เชฎเช‚เชฆเชฌเซเชฆเซเชงเชฟ เช…เชจเซ‡ เชญเชพเชตเชถเซ‚เชจเซเชฏ เชฎเชพเชฃเชธ. เชตเชนเซ‡เชฒเชพ เช•เซ‡ เชชเช›เซ€ เชคเซ‡เช“ เชชเซƒเชทเซเช  เช•เซ‡เชถเชฎเชพเช‚เชฅเซ€ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชชเชฐเช‚เชคเซ เชธเชฐเซเชตเชฐ เชชเชฐ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเซ‡เชฎเชฐเซ€ เช›เซ‡ เช…เชจเซ‡ เช•เชฐเซเชจเชฒ เชคเซ‡เชฎเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชฌเช—เชพเชกเชตเชพเชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เชœเซ‹เชคเซ‹ เชจเชฅเซ€. เชคเซ‡เชฅเซ€ เชœ เชคเซ‡เช“ เช เช—เชพเชˆ เช•เชฐเชคเชพ เชฐเชนเซ‡ เช›เซ‡. เช†เชตเซเช‚ เชชเชฃ เช•เซ‡เชฎ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡? เช† เช•เซเชฐเซ‹เชจ เชœเซ‹เชฌเซเชธ เชงเชฐเชพเชตเชคเซเช‚ เชธเชฐเซเชตเชฐ เช›เซ‡ เชœเซ‡ เชธเชคเชค เชจเชตเซ€ เชจเซ‹เช•เชฐเซ€เช“เชจเซเช‚ เชธเชฐเซเชœเชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชจเชตเชพ เชชเซ‹เชกเซเชธ เชชเชฃ เช›เซ‡. เช†เชฎ, เชคเซ‡เชฎเชพเช‚เชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเชพเชŸเซ‡ เชจเชตเชพ cgroups เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  • เช•เซเชฌเซ‡เชฒเซ‡เชŸเชฎเชพเช‚ เชธเซ€เชเชกเชตเชพเชˆเชเชฐ เช†เชŸเชฒเซ‹ เชธเชฎเชฏ เช•เซ‡เชฎ เชฌเช—เชพเชกเซ‡ เช›เซ‡? เช† เชธเชฐเชณ เช…เชฎเชฒ เชธเชพเชฅเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชธเชฐเชณ เช›เซ‡ 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, - เชชเชฐเช‚เชคเซ เช•เชฐเซเชจเชฒ เชตเชงเซ เชœเชŸเชฟเชฒ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช…เชจเซ‡ เช•เชพเชฐ เช•เซเชฐเซ‡เชถ เชฅเชˆ เช—เชˆ.

เชถเซ เช•เชฐเชตเซ? เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เช›เซ‡ (เชชเซเชฐเชคเชฟเชฌเชฆเซเชง, เช…เชจเซ‡ เชตเชฐเซเชฃเชจ เชฎเชพเชŸเซ‡ เชœเซเช“ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ‹Linux เช•เชฐเซเชจเชฒเชจเซ‡ เช†เชตเซƒเชคเซเชคเชฟ 4.16 เชฎเชพเช‚ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เช‡เชคเชฟเชนเชพเชธ 3. Systemd เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชฎเชพเช‰เชจเซเชŸ

เชซเชฐเซ€เชฅเซ€, เช•เซเชฌเซ‡เชฒเซ‡เชŸ เช•เซ‡เชŸเชฒเชพเช• เช—เชพเช‚เช เซ‹ เชชเชฐ เช˜เชฃเชพ เชฌเชงเชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชตเช–เชคเซ‡ เชคเซ‡ เช–เซ‚เชฌ เชœ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช‰เชฌเซเชจเซเชŸเซ 16.04 เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ systemd เชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เชฎเชพเช‰เชจเซเชŸเซ‹เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฅเชพเชฏ เช›เซ‡ subPath ConfigMap's เช…เชฅเชตเชพ secret's เชฎเชพเช‚เชฅเซ€. เชชเซ‹เชก เชคเซ‡เชจเซเช‚ เช•เชพเชฎ เชชเซ‚เชฐเซเชฃ เช•เชฐเซเชฏเชพ เชชเช›เซ€ systemd เชธเซ‡เชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเซ‡เชตเชพ เชฎเชพเช‰เชจเซเชŸ เชฐเชนเซ‡ เช›เซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚. เชธเชฎเชฏ เชœเชคเชพเช‚, เชคเซ‡เชฎเชพเช‚เชจเซ€ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชเช•เช เชพ เชฅเชพเชฏ เช›เซ‡. เช† เชตเชฟเชทเชฏ เชชเชฐ เชชเชฃ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡:

  1. #5916;
  2. kubernetes #57345.

...เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช›เซ‡เชฒเซเชฒเซเช‚ เชธเชฟเชธเซเชŸเชฎd เชฎเชพเช‚ 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 เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€, เชจเซ‡เช•เซเชธเชธ, เชตเช—เซ‡เชฐเซ‡);
  2. เชœเซ‡เชตเซ€ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช•เซเชฐเซ‡เช•เซ‡เชจ.

เชตเชพเชฐเซเชคเชพ 5. เชฏเชพเชฆเชถเช•เซเชคเชฟเชจเชพ เช…เชญเชพเชตเซ‡ เช—เชพเช‚เช เซ‹ เช…เชŸเช•เซ€ เชœเชพเชฏ เช›เซ‡

เชตเชฟเชตเชฟเชง เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชธเช‚เชšเชพเชฒเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช…เชฎเซ‡ เชเชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‹ เชชเชฃ เชธเชพเชฎเชจเซ‹ เช•เชฐเซเชฏเซ‹ เช•เซ‡ เชœเซเชฏเชพเช‚ เชจเซ‹เชก เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชฒเชญ เชฅเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡: SSH เชชเซเชฐเชคเชฟเชธเชพเชฆ เช†เชชเชคเซเช‚ เชจเชฅเซ€, เชฌเชงเชพ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชกเชฟเชฎเชจ เชชเชกเซ€ เชœเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชฒเซ‹เช—เชฎเชพเช‚ เช•เช‚เชˆเชชเชฃ (เช…เชฅเชตเชพ เชฒเช—เชญเช— เช•เช‚เชˆเชชเชฃ) เชตเชฟเชธเช‚เช—เชคเชคเชพ เชจเชฅเซ€.

เชนเซเช‚ เชคเชฎเชจเซ‡ เชเช• เชจเซ‹เชกเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชšเชฟเชคเซเชฐเซ‹เชฎเชพเช‚ เช•เชนเซ€เชถ เชœเซเชฏเชพเช‚ MongoDB เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡.

เช† เช‰เชชเชฐเชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชฎเชพเชŸเซ‡ เช…เช•เชธเซเชฎเชพเชคเซ‹:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

เช…เชจเซ‡ เช†เชจเซ€ เชœเซ‡เชฎ - ะฟะพัะปะต เช…เช•เชธเซเชฎเชพเชคเซ‹:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—เชฎเชพเช‚, เชเช• เชคเซ€เชตเซเชฐ เชœเชฎเซเชช เชชเชฃ เช›เซ‡, เชœเซ‡เชจเชพ เชชเชฐ เชจเซ‹เชก เช‰เชชเชฒเชฌเซเชง เชฅเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

เช†เชฎ, เชธเซเช•เซเชฐเซ€เชจเชถเซ‹เชŸ เชชเชฐเชฅเซ€ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡:

  1. เชฎเชถเซ€เชจ เชชเชฐเชจเซ€ RAM เช…เช‚เชคเชจเซ€ เชจเชœเซ€เช• เช›เซ‡;
  2. RAM เชตเชชเชฐเชพเชถเชฎเชพเช‚ เชคเซ€เชตเซเชฐ เช‰เช›เชพเชณเซ‹ เช›เซ‡, เชœเซ‡เชจเชพ เชชเช›เซ€ เชธเชฎเช—เซเชฐ เชฎเชถเซ€เชจเชจเซ€ เชเช•เซเชธเซ‡เชธ เช…เชšเชพเชจเช• เช…เช•เซเชทเชฎ เชฅเชˆ เชœเชพเชฏ เช›เซ‡;
  3. เชฎเซ‹เช‚เช—เซ‹ เชชเชฐ เชเช• เชฎเซ‹เชŸเซเช‚ เช•เชพเชฐเซเชฏ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ DBMS เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เช…เชจเซ‡ เชกเชฟเชธเซเช•เชฎเชพเช‚เชฅเซ€ เชธเช•เซเชฐเชฟเชฏ เชฐเซ€เชคเซ‡ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเซ‡ เช›เซ‡.

เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‹ Linux เชฎเชซเชค เชฎเซ‡เชฎเชฐเซ€ (เชฎเซ‡เชฎเชฐเซ€ เชชเซเชฐเซ‡เชถเชฐ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡) เชธเชฎเชพเชชเซเชค เชฅเชˆ เชœเชพเชฏ เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชธเซเชตเซ‡เชช เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€ เชฎเชพเชŸเซ‡ เชœเซเชฏเชพเชฐเซ‡ OOM เช•เชฟเชฒเชฐ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชชเซƒเชทเซเช  เช•เซ‡เชถเชฎเชพเช‚ เชซเซ‡เช‚เช•เชตเชพ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชชเชพเช›เชพ เชฒเช–เชตเชพ เชตเชšเซเชšเซ‡ เชธเช‚เชคเซเชฒเชจ เช•เชพเชฐเซเชฏ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เช† kswapd เชฆเซเชตเชพเชฐเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เช…เชจเซเช—เชพเชฎเซ€ เชตเชฟเชคเชฐเชฃ เชฎเชพเชŸเซ‡ เชฌเชนเชพเชฆเซเชฐเซ€เชชเซ‚เชฐเซเชตเช• เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเชพ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชฎเซเช•เซเชค เช•เชฐเซ‡ เช›เซ‡.

เช•เชฎเชจเชธเซ€เชฌเซ‡, เช“เช›เซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชซเซเชฐเซ€ เชฎเซ‡เชฎเชฐเซ€ เชธเชพเชฅเซ‡ เชฎเซ‹เชŸเชพ I/O เชฒเซ‹เชก เชธเชพเชฅเซ‡, kswapd เชธเชฎเช—เซเชฐ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช…เชกเชšเชฃ เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เช“ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เชฌเชงเชพ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช เซ‹เชจเซ€ เชซเชพเชณเชตเชฃเซ€ (เชชเซƒเชทเซเช  เช–เชพเชฎเซ€). เชœเซ‹ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชนเชตเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชจ เชนเซ‹เชฏ, เชชเชฐเช‚เชคเซ OOM-เช•เชฟเชฒเชฐ เชเชฌเชฟเชธเชจเซ€ เช–เซ‚เชฌ เชœ เชงเชพเชฐ เชชเชฐ เชจเชฟเชถเซเชšเชฟเชค เชนเซ‹เชฏ เชคเซ‹ เช† เช–เซ‚เชฌ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชšเชพเชฒเซ€ เชถเช•เซ‡ เช›เซ‡.

เชธเซเชตเชพเชญเชพเชตเชฟเช• เชชเซเชฐเชถเซเชจ เช›เซ‡: OOM เช•เชฟเชฒเชฐ เช†เชŸเชฒเซเช‚ เชฎเซ‹เชกเซเช‚ เช•เซ‡เชฎ เช†เชตเซ‡ เช›เซ‡? เชคเซ‡เชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟเชฎเชพเช‚, OOM เช•เชฟเชฒเชฐ เช…เชคเซเชฏเช‚เชค เชฎเซ‚เชฐเซเช– เช›เซ‡: เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช  เชซเชพเชณเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชœ เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฎเชพเชฐเซ€ เชจเชพเช–เชถเซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เชœเซ‹ เชชเซƒเชทเซเช  เชฆเซ‹เชท เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ. เช† เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชฅเชคเซเช‚ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ kswapd เชฌเชนเชพเชฆเซเชฐเซ€เชชเซ‚เชฐเซเชตเช• เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชฎเซเช•เซเชค เช•เชฐเซ‡ เช›เซ‡, เชชเซƒเชทเซเช  เช•เซ‡เชถ (เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชธเชฎเช—เซเชฐ เชกเชฟเชธเซเช• I/O, เชนเช•เซ€เช•เชคเชฎเชพเช‚) เชชเชพเช›เชพ เชกเชฟเชธเซเช• เชชเชฐ เชกเชฎเซเชช เช•เชฐเซ‡ เช›เซ‡. เชตเชงเซ เชตเชฟเช—เชคเชฎเชพเช‚, เช•เชฐเซเชจเชฒเชฎเชพเช‚ เช†เชตเซ€ เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชชเช—เชฒเชพเช‚เช“เชจเชพ เชตเชฐเซเชฃเชจ เชธเชพเชฅเซ‡, เชคเชฎเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

เช† เชตเชฐเซเชคเชจ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช Linux เช•เชฐเซเชจเชฒ 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

เชฅเซ‹เชกเซ€เช• เช–เซ‹เชฆเช•เชพเชฎ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เชงเชพเชฐเชฃเชพ เช•เชฐเซ€ เช•เซ‡ เช•เซเชฌเซ‡เชฒเซ‡เชŸ เชชเชพเชธเซ‡ เชชเซ‹เชกเซเชธเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เช…เชจเซ‡ เชœเซ€เชตเช‚เชคเชคเชพ/เชคเซˆเชฏเชพเชฐเชคเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชตเชฟเชถเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชฎเชพเชนเชฟเชคเซ€ 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)

เชœเซ‹เชฏเซเช‚ เชคเซ‡เชฎ, เชฎเซ‚เชณเชญเซ‚เชค เช•เชฟเช‚เชฎเชคเซ‹ เช–เซ‚เชฌ เชจเชพเชจเซ€ เช›เซ‡, เช…เชจเซ‡ 90% เชฎเชพเช‚ เชคเซ‡เช“ เชฌเชงเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡ เช›เซ‡... เชœเซ‹ เช•เซ‡, เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช† เชชเซ‚เชฐเชคเซเช‚ เชจ เชนเชคเซเช‚. เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช:

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

... เช…เชจเซ‡ เช•เซเชฏเซเชฌเซ‡เชฒเซ‡เชŸเซเชธ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซเชฏเชพ, เชœเซ‡เชจเชพ เชชเช›เซ€ เช…เชฎเซ‡ API เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เช•เซ‰เชฒเซเชธเชจเชพ เช—เซเชฐเชพเชซเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซเช‚ เชšเชฟเชคเซเชฐ เชœเซ‹เชฏเซเช‚:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเชพ เชธเช‚เชšเชพเชฒเชจเชฎเชพเช‚ 6 เชฎเชจเซ‹เชฐเช‚เชœเช• เชธเชฟเชธเซเชŸเชฎ เชฌเช—เซเชธ [เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช‰เช•เซ‡เชฒ]

... เช…เชจเซ‡ เชนเชพ, เชฌเชงเซเช‚ เช‰เชกเชตเชพ เชฒเชพเช—เซเชฏเซเช‚!

PS

เชญเซ‚เชฒเซ‹ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช…เชจเซ‡ เช† เชฒเซ‡เช– เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เชคเซ‡เชฎเชจเซ€ เชฎเชฆเชฆ เชฎเชพเชŸเซ‡, เชนเซเช‚ เช…เชฎเชพเชฐเซ€ เช•เช‚เชชเชจเซ€เชจเชพ เช…เชธเช‚เช–เซเชฏ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ เช…เชจเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช…เชฎเชพเชฐเซ€ R&D เชŸเซ€เชฎเชจเชพ เชฎเชพเชฐเชพ เชธเชพเชฅเซ€เชฆเชพเชฐ เชเชจเซเชกเซเชฐเซ‡ เช•เซเชฒเชฟเชฎเซ‡เชจเซเชŸเซ‡เชต (เชเซเชเชพ).

เชชเซ€.เชชเซ€.เชเชธ.

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹