6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

Kubernetes-แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒฌแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒจแƒ˜ แƒฃแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒ“แƒ/แƒแƒœ แƒ’แƒแƒฃแƒ’แƒ”แƒ‘แƒแƒ  แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒแƒ›แƒ“แƒ”, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒฎแƒ“แƒ”แƒœแƒ“แƒœแƒ”แƒœ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒญแƒฃแƒ แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒ–แƒ”. แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒœ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜. แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒ’แƒแƒ’แƒ˜แƒ›แƒแƒ แƒ—แƒšแƒ”แƒ‘แƒ— แƒแƒกแƒ”แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒก, แƒแƒกแƒ”แƒ—แƒ˜ แƒ›แƒแƒ™แƒšแƒ” แƒ“แƒ”แƒขแƒ”แƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ - แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— "แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ—" - แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ, แƒแƒ แƒ?..

แƒแƒ›แƒ‘แƒแƒ•แƒ˜ 1. Supercronic แƒ“แƒ Docker แƒฉแƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜

แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ” แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒฃแƒšแƒแƒ“ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ“แƒ˜แƒ— แƒ’แƒแƒงแƒ˜แƒœแƒฃแƒš แƒ“แƒแƒ™แƒ”แƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฎแƒ”แƒšแƒก แƒฃแƒจแƒšแƒ˜แƒ“แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ  แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒแƒก. แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, Docker-แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒจแƒ˜ แƒ“แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜:

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 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ–แƒ”:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒ˜แƒ›แƒแƒ•แƒ” แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—:

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>

แƒ’แƒแƒ˜แƒ แƒ™แƒ•แƒ, แƒ แƒแƒ› แƒ”แƒก แƒฅแƒชแƒ”แƒ•แƒ แƒแƒ แƒ˜แƒก แƒžแƒแƒ“แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒกแƒฃแƒžแƒ”แƒ แƒฅแƒ แƒแƒœแƒ˜แƒ™แƒฃแƒšแƒ˜ (Go แƒฃแƒขแƒ˜แƒšแƒ˜แƒขแƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— cron แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ pods-แƒจแƒ˜):

 _ 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>
โ€ฆ

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒแƒกแƒ”แƒ—แƒ˜แƒ: แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒ›แƒแƒชแƒแƒœแƒ แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒกแƒฃแƒžแƒ”แƒ แƒฅแƒ แƒแƒœแƒ˜แƒ™แƒจแƒ˜, แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒกแƒฌแƒแƒ แƒแƒ“ แƒ•แƒ”แƒ  แƒฌแƒงแƒ“แƒ”แƒ‘แƒ, แƒ’แƒแƒ“แƒแƒฅแƒชแƒ”แƒ•แƒ zombie.

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒฃแƒคแƒ แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ™แƒ แƒแƒœแƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒฃแƒžแƒ”แƒ แƒ™แƒ แƒแƒœแƒ˜แƒ™แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒฌแƒงแƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ“แƒ แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ โ€žแƒ›แƒ˜แƒ˜แƒฆแƒแƒกโ€œ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒ˜แƒกแƒ›แƒ แƒจแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ›แƒ แƒฌแƒแƒ แƒ›แƒแƒแƒ“แƒ’แƒ˜แƒœแƒ”แƒก. แƒ แƒแƒ“แƒ”แƒกแƒแƒช 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-แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒกแƒแƒก

Kubelet-แƒ›แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ‘แƒ”แƒ•แƒ แƒ˜ CPU-แƒ˜แƒก แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒ”แƒก แƒแƒ แƒแƒ•แƒ˜แƒก แƒ›แƒแƒ”แƒฌแƒแƒœแƒ”แƒ‘แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒจแƒ”แƒ•แƒ˜แƒแƒ แƒแƒฆแƒ“แƒ˜แƒ— perf แƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ. แƒ’แƒแƒ›แƒแƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒ˜แƒงแƒ:

  • Kubelet แƒฎแƒแƒ แƒฏแƒแƒ•แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ CPU แƒ“แƒ แƒแƒ˜แƒก แƒ›แƒ”แƒกแƒแƒ›แƒ”แƒ“แƒ–แƒ” แƒ›แƒ”แƒขแƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒแƒ–แƒ” แƒงแƒ•แƒ”แƒšแƒ cแƒฏแƒ’แƒฃแƒคแƒ˜แƒ“แƒแƒœ:

    6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

  • แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ. แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒกแƒแƒฅแƒ›แƒ” แƒแƒฅแƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒ“แƒ˜แƒก: แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ tmpfs แƒคแƒแƒ˜แƒšแƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ› แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒ“แƒแƒœ cgroup-แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ˜แƒกแƒแƒก แƒ”.แƒฌ memcg zombie. แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒ แƒ“แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜ แƒ•แƒ”แƒ  แƒฎแƒ”แƒ“แƒแƒ•แƒก แƒแƒ–แƒ แƒก แƒ“แƒ แƒแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ แƒ’แƒ•แƒแƒจแƒ˜ แƒ›แƒแƒ— แƒฌแƒแƒจแƒšแƒแƒ–แƒ”. แƒแƒ›แƒ˜แƒขแƒแƒ›แƒแƒช แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ”แƒœ แƒ’แƒ แƒแƒ•แƒแƒก. แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒ แƒแƒขแƒแƒ› แƒฎแƒ“แƒ”แƒ‘แƒ แƒ”แƒก? แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ cron jobs-แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒฅแƒ›แƒœแƒ˜แƒก แƒแƒฎแƒแƒš แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ”แƒ‘แƒก แƒ“แƒ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒแƒฎแƒแƒš แƒžแƒแƒ“แƒ”แƒ‘แƒก. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ›แƒแƒ—แƒจแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ cgroups, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒแƒšแƒ” แƒ˜แƒจแƒšแƒ”แƒ‘แƒ.
  • แƒ แƒแƒขแƒแƒ› แƒ™แƒแƒ แƒ’แƒแƒ•แƒก cAdvisor แƒ™แƒฃแƒ‘แƒ”แƒšแƒ”แƒขแƒจแƒ˜ แƒแƒ›แƒ“แƒ”แƒœ แƒ“แƒ แƒแƒก? แƒแƒ›แƒ˜แƒก แƒ“แƒแƒœแƒแƒฎแƒ•แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ— time cat /sys/fs/cgroup/memory/memory.stat. แƒ—แƒฃ แƒฏแƒแƒœแƒกแƒแƒฆ แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ” แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒก 0,01 แƒฌแƒแƒ›แƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ  cron02-แƒ–แƒ” 1,2 แƒฌแƒแƒ›แƒ˜. แƒกแƒแƒฅแƒ›แƒ” แƒ˜แƒ›แƒแƒจแƒ˜แƒ, แƒ แƒแƒ› cAdvisor, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒซแƒแƒšแƒ˜แƒแƒœ แƒœแƒ”แƒšแƒ แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก sysfs-แƒ“แƒแƒœ, แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒก แƒ–แƒแƒ›แƒ‘แƒ˜ cgroups-แƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ.
  • แƒ–แƒแƒ›แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒ— แƒ›แƒแƒกแƒแƒจแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ•แƒชแƒแƒ“แƒ”แƒ— แƒฅแƒ”แƒจแƒ˜แƒก แƒ’แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ LKML-แƒจแƒ˜: sync; echo 3 > /proc/sys/vm/drop_caches, -แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜ แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ แƒ“แƒ แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒก แƒ“แƒแƒ”แƒฏแƒแƒฎแƒ.

แฒ แƒ แƒฃแƒœแƒ“แƒ แƒ•แƒฅแƒœแƒ? แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ (แƒฉแƒแƒ˜แƒ“แƒ˜แƒœแƒแƒกแƒ“แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฎ แƒ’แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ) Linux kernel-แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ 4.16 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ›แƒ“แƒ”.

แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ 3. Systemd แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ—แƒ

แƒ˜แƒกแƒ”แƒ• แƒ“แƒ แƒ˜แƒกแƒ”แƒ•, kubelet แƒ›แƒแƒ˜แƒฎแƒ›แƒแƒ แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ‘แƒ”แƒ•แƒ  แƒ แƒ”แƒกแƒฃแƒ แƒกแƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ แƒ˜แƒก แƒ›แƒแƒ˜แƒฎแƒ›แƒแƒ แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ‘แƒ”แƒ•แƒ  แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒก:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ Ubuntu 16.04-แƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš systemd-แƒจแƒ˜ แƒ“แƒ แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒกแƒแƒ›แƒแƒœแƒขแƒแƒŸแƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒแƒก. subPath ConfigMap-แƒ“แƒแƒœ แƒแƒœ แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ. แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒžแƒแƒ“แƒ˜ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ“ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒ›แƒแƒ’แƒ แƒ˜ แƒ แƒฉแƒ”แƒ‘แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜. แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒ—แƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ. แƒแƒ› แƒ—แƒ”แƒ›แƒแƒ–แƒ”แƒช แƒ™แƒ˜ แƒแƒ แƒ˜แƒก แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜:

  1. #5916;
  2. แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก #57345.

...แƒฃแƒ™แƒแƒœแƒแƒกแƒ™แƒœแƒ”แƒšแƒ˜ แƒ”แƒฎแƒ”แƒ‘แƒ แƒžแƒ˜แƒแƒ  แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜: # 7811 (แƒ’แƒแƒ›แƒแƒชแƒ”แƒ›แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ - # 7798).

แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒแƒฆแƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก Ubuntu 18.04-แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒแƒ— Ubuntu 16.04-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ’แƒแƒ›แƒแƒ’แƒแƒ“แƒ’แƒ”แƒ‘แƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒแƒ› แƒ—แƒ”แƒ›แƒแƒ–แƒ”.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ 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

... แƒ“แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒงแƒแƒ•แƒ”แƒš 5 แƒฌแƒฃแƒ—แƒจแƒ˜ แƒแƒ“แƒ แƒ” แƒแƒฆแƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜ แƒกแƒฃแƒžแƒ”แƒ แƒฅแƒ แƒแƒœแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒ˜แƒกแƒ˜ Dockerfile แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

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. แƒจแƒ”แƒ”แƒชแƒแƒ“แƒ”แƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ Docker Registry แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒแƒœ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ—แƒแƒœ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, GitLab Registry, Nexus แƒ“แƒ แƒ.แƒจ.);
  2. แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ kraken.

แƒแƒ›แƒ‘แƒแƒ•แƒ˜ 5. แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒ™แƒ˜แƒ“แƒ˜แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ

แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ•แƒฎแƒ•แƒ“แƒ˜แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒฌแƒ•แƒ“แƒแƒ›แƒแƒก: SSH แƒแƒ  แƒžแƒแƒกแƒฃแƒฎแƒแƒ‘แƒก, แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒ˜ แƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ”แƒ‘แƒจแƒ˜ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ (แƒแƒœ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒแƒ แƒแƒคแƒ”แƒ แƒ˜) แƒแƒœแƒแƒ›แƒแƒšแƒ˜แƒฃแƒ แƒ˜.

แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ— แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒจแƒ˜ แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒกแƒแƒ“แƒแƒช MongoDB แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ“แƒ.

แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒ–แƒ”แƒ›แƒแƒ“แƒแƒœ แƒ“แƒแƒœ แƒแƒ•แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒ“แƒ แƒแƒกแƒ” - แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒ•แƒแƒ แƒ˜แƒ”แƒ‘แƒ˜:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒจแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒ˜ แƒœแƒแƒฎแƒขแƒแƒ›แƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ“แƒ แƒแƒกแƒแƒช แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ‘แƒแƒก:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒ™แƒแƒ“แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ˜แƒ แƒ™แƒ•แƒ”แƒ•แƒ, แƒ แƒแƒ›:

  1. แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒก แƒฃแƒแƒฎแƒšแƒแƒ•แƒ“แƒ”แƒ‘แƒ;
  2. แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒ˜ แƒœแƒแƒฎแƒขแƒแƒ›แƒ˜แƒ แƒแƒžแƒ”แƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒ›แƒ—แƒ”แƒš แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒแƒ“ แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ;
  3. แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ“แƒ˜แƒก Mongo-แƒ–แƒ”, แƒ แƒแƒช แƒแƒ˜แƒซแƒฃแƒšแƒ”แƒ‘แƒก DBMS แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ›แƒ”แƒขแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒแƒ“ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒก แƒ“แƒ˜แƒกแƒ™แƒ˜แƒ“แƒแƒœ.

แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ› แƒ—แƒฃ Linux-แƒก แƒแƒ›แƒแƒ˜แƒฌแƒฃแƒ แƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ (แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฌแƒœแƒ”แƒ•แƒ แƒ“แƒ’แƒ”แƒ‘แƒ) แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ“แƒแƒœ แƒ แƒแƒ“แƒ”แƒกแƒแƒช OOM แƒ›แƒ™แƒ•แƒšแƒ”แƒšแƒ˜ แƒ›แƒแƒ•แƒ, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒจแƒ•แƒแƒก แƒ“แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒ แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜แƒก แƒฅแƒ”แƒจแƒจแƒ˜ แƒฉแƒแƒ’แƒ“แƒ”แƒ‘แƒแƒกแƒ แƒ“แƒ แƒ“แƒ˜แƒกแƒ™แƒ–แƒ” แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒแƒก แƒจแƒแƒ แƒ˜แƒก. แƒแƒ›แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก kswapd, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ‘แƒ”แƒ“แƒฃแƒšแƒแƒ“ แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒก แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒ”แƒข แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒ“แƒ˜แƒ“แƒ˜ I/O แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ—, แƒ›แƒชแƒ˜แƒ แƒ” แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒ—, kswapd แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ‘แƒแƒกแƒขแƒœแƒ”แƒฃแƒšแƒแƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ›แƒแƒกแƒ–แƒ” แƒแƒ แƒ˜แƒแƒœ แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ (แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒแƒ แƒ—แƒแƒแƒ‘แƒ). แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ”แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ—แƒฃ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒก แƒแƒฆแƒแƒ  แƒกแƒฃแƒ แƒ— แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ OOM-แƒ›แƒ™แƒ•แƒšแƒ”แƒšแƒ˜ แƒฃแƒคแƒกแƒ™แƒ แƒฃแƒšแƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ–แƒ”.

แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒ: แƒ แƒแƒขแƒแƒ› แƒ›แƒแƒ“แƒ˜แƒก OOM แƒ›แƒ™แƒ•แƒšแƒ”แƒšแƒ˜ แƒแƒกแƒ” แƒ’แƒ•แƒ˜แƒแƒœ? แƒ›แƒ˜แƒกแƒ˜ แƒแƒ›แƒŸแƒแƒ›แƒ˜แƒœแƒ“แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—, OOM แƒ›แƒ™แƒ•แƒšแƒ”แƒšแƒ˜ แƒฃแƒ™แƒ˜แƒ“แƒฃแƒ แƒ”แƒกแƒแƒ“ แƒกแƒฃแƒšแƒ”แƒšแƒ˜แƒ: แƒ˜แƒก แƒ›แƒแƒ™แƒšแƒแƒ•แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ แƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ”.แƒ˜. แƒ—แƒฃ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ. แƒ”แƒก แƒแƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ แƒแƒ“แƒ’แƒแƒœ kswapd แƒ’แƒแƒ‘แƒ”แƒ“แƒฃแƒšแƒแƒ“ แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒก, แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒก (แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ˜แƒก I/O) แƒฃแƒ™แƒแƒœ แƒ“แƒ˜แƒกแƒ™แƒ–แƒ”. แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“, แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒ›แƒแƒกแƒแƒคแƒฎแƒ•แƒ แƒ”แƒšแƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒแƒฅ.

แƒ”แƒก แƒฅแƒชแƒ”แƒ•แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ“แƒ”แƒก Linux-แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ— 4.6+.

แƒแƒ›แƒ‘แƒแƒ•แƒ˜ 6. แƒžแƒแƒ“แƒ˜แƒ”แƒ‘แƒ˜ แƒฉแƒ”แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒจแƒ˜

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒจแƒ˜แƒช แƒ›แƒแƒ แƒ—แƒšแƒแƒช แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ แƒ’แƒแƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— แƒจแƒ”แƒ•แƒแƒ›แƒฉแƒœแƒ˜แƒแƒ—, แƒ แƒแƒ› แƒ›แƒแƒ—แƒ˜ แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ "แƒ™แƒ˜แƒ“แƒ˜แƒ" แƒจแƒขแƒแƒขแƒจแƒ˜. Pending, แƒ—แƒฃแƒ›แƒชแƒ แƒ—แƒแƒ•แƒแƒ“ Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ.

แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒ˜แƒœ 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

แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ—แƒฎแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ—แƒฅแƒ•แƒ˜แƒ— แƒ•แƒแƒ แƒแƒฃแƒ“แƒ˜, แƒ แƒแƒ› kubelet-แƒก แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ  แƒแƒฅแƒ•แƒก แƒ“แƒ แƒ, แƒ แƒแƒ› 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

... แƒ“แƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ— kubelets, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒœแƒแƒฎแƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜ API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ–แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒจแƒ˜:

6 แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ Kubernetes-แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒจแƒ˜ [แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ]

... แƒ“แƒ แƒ“แƒ˜แƒแƒฎ, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ›แƒ แƒคแƒ แƒ”แƒœแƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ!

PS

แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒ—แƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ“แƒ˜แƒ“ แƒ›แƒแƒ“แƒšแƒแƒ‘แƒแƒก แƒ•แƒฃแƒฎแƒ“แƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ˜แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ แƒ˜แƒชแƒฎแƒแƒ•แƒแƒœ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ แƒ”แƒ‘แƒก แƒ“แƒ แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒฉแƒ”แƒ›แƒก แƒ™แƒแƒšแƒ”แƒ’แƒแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ R&D แƒ’แƒฃแƒœแƒ“แƒ˜แƒ“แƒแƒœ แƒแƒœแƒ“แƒ แƒ”แƒ˜ แƒ™แƒšแƒ˜แƒ›แƒ”แƒœแƒขแƒ˜แƒ”แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ–แƒฃแƒ–แƒ”แƒ‘แƒ˜).

PPS

แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒšแƒแƒ’แƒ–แƒ”:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ