å®çšŒåç°å¢ã§ã® Kubernetes ã®é·å¹Žã®äœ¿çšãéããŠãããŸããŸãªã·ã¹ãã ã³ã³ããŒãã³ãã®ãã°ãã©ã®ããã«ã³ã³ããããããã®åäœã«åœ±é¿ãäžããäžå¿«ãªããŸãã¯ç解ã§ããªãçµæã«ã€ãªãã£ããã«ã€ããŠãç§ãã¡ã¯å€ãã®èå³æ·±ã話ãèç©ããŠããŸããã ãã®èšäºã§ã¯ãæãäžè¬çãªãã®ãŸãã¯èå³æ·±ããã®ãããã€ãéžæããŸããã ããšããã®ãããªç¶æ³ã«ééããã»ã©å¹žéã§ã¯ãªãã£ããšããŠãããã®ãããªçãæ¢åµå°èª¬ãèªãããšãç¹ã«ãçŽæ¥ããèªãããšã¯åžžã«èå³æ·±ãã§ãããã
ã¹ããŒãªãŒ 1. Supercronic ãš Docker ãã³ã°
ã¯ã©ã¹ã¿ãŒã® XNUMX ã€ã§ã¯ãå®æçã«ããªãŒãºãã 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
ã ç°¡åãªåŠç¿
ã¢ãã¿ãªã³ã°ã§ã¯ã次ã®å³ãäœãèµ·ãã£ãŠãããã«å¯Ÿå¿ããŸãã
åæ§ã®ç¶æ³ãä»ã®ããŒãã§ã芳å¯ãããŸãã
åãããŒãã§æ¬¡ã®ããšãããããŸãã
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>
âŠ
åé¡ã¯ãã¿ã¹ã¯ã supercronic ã§å®è¡ããããšããã®ã¿ã¹ã¯ã«ãã£ãŠçæãããããã»ã¹ã§ãã æ£ããçµäºã§ããŸããã«å€ãããŸã
泚æ: ããæ£ç¢ºã«èšããšãããã»ã¹ã¯ cron ã¿ã¹ã¯ã«ãã£ãŠçæãããŸãããsupercronic 㯠init ã·ã¹ãã ã§ã¯ãªãããããã®åãçæããããã»ã¹ããæ¡çšãããããšã¯ã§ããŸããã SIGHUP ãŸã㯠SIGTERM ã·ã°ãã«ãçºçããŠãããããã¯åããã»ã¹ã«æž¡ãããªããããåããã»ã¹ã¯çµäºããããŸã³ãç¶æ
ã®ãŸãŸã«ãªããŸãã ããããã¹ãŠã«ã€ããŠè©³ããã¯ãããšãã°ã次ã®èšäºãåç
§ããŠãã ããã
åé¡ã解決ããã«ã¯ãããã€ãã®æ¹æ³ããããŸãã
- äžæçãªåé¿çãšããŠãããæç¹ã§ã·ã¹ãã å
ã® 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
- ãŸãã¯ãçŽæ¥ã§ã¯ãªããåããã®ã䜿çšã㊠supercronic ã§ã¿ã¹ã¯ãèµ·åããŸã
TINI ãããã»ã¹ãæ£ããçµäºã§ãããŸã³ããçæããŸããã
ã¹ããŒãªãŒ 2. cgroup ãåé€ãããšããŸã³ãããçºçãã
Kubelet ã倧éã® CPU ãæ¶è²»ãå§ããŸããã
誰ãããã奜ãŸãªãã ãããã ããç§ãã¡ã¯æŠè£
ãã
- Kubelet ã¯ãCPU æéã® XNUMX åã® XNUMX 以äžããã¹ãŠã® cgroup ããã®ã¡ã¢ãª ããŒã¿ã®ååŸã«è²»ãããŸãã
- ã«ãŒãã«éçºè
ã®ã¡ãŒãªã³ã° ãªã¹ãã«ã¯ã次ã®ãã®ããããŸãã
åé¡ã«ã€ããŠã®è°è« ã èŠããã«ãèŠç¹ã¯æ¬¡ã®ãšããã§ãã ããŸããŸãª tmpfs ãã¡ã€ã«ããã®ä»ã®åæ§ã®ãã®ã¯ã·ã¹ãã ããå®å šã«ã¯åé€ãããŠããŸãã cgroup ãåé€ãããšããããããmemcg ãŸã³ãã é ããæ©ãããããã¯ããŒãž ãã£ãã·ã¥ããåé€ãããŸããããµãŒããŒã«ã¯å€§éã®ã¡ã¢ãªããããã«ãŒãã«ã¯ããããåé€ããããšã«æéãç¡é§ã«ããæå³ãèªèããŸããã ã ããããã©ãã©ãæºãŸã£ãŠããã®ã§ãã ãªããã®ãããªããšãèµ·ãã£ãŠããã®ã§ãããã? ããã¯ãæ°ãããžã§ããšããã«äŒŽãæ°ããããããåžžã«äœæãã cron ãžã§ããåãããµãŒããŒã§ãã ãããã£ãŠããã®äžã®ã³ã³ããã«å¯ŸããŠæ°ãã cgroup ãäœæãããŸããããããã¯ããã«åé€ãããŸãã - kubelet ã® cAdvisor ãããã»ã©æéãç¡é§ã«ããã®ã¯ãªãã§ãã? ããã¯æãåçŽãªå®è¡ã§ç°¡åã«ç¢ºèªã§ããŸã
time cat /sys/fs/cgroup/memory/memory.stat
ã æ£åžžãªãã·ã³ã§ã¯æäœã« 0,01 ç§ããããŸãããåé¡ã®ãã cron02 ã§ã¯ 1,2 ç§ããããŸãã åé¡ã¯ãcAdvisor ã sysfs ããããŒã¿ãèªã¿åãã®ãéåžžã«é ãããããŸã³ã cgroup ã§äœ¿çšãããã¡ã¢ãªãèæ ®ããããšããããšã§ãã - ãŸã³ãã匷å¶çã«åé€ããããã«ãLKML ã§æšå¥šãããŠããããã«ãã£ãã·ã¥ãã¯ãªã¢ããŠã¿ãŸããã
sync; echo 3 > /proc/sys/vm/drop_caches
, - ããããã«ãŒãã«ã¯ããè€éã§ããããšãå€æããè»ãã¯ã©ãã·ã¥ãããŸããã
äœããããïŒ åé¡ã¯ä¿®æ£äžã§ã (
æŽå² 3. Systemd ãšãã®ããŠã³ã
ç¹°ãè¿ããŸãããkubelet ã¯äžéšã®ããŒãã§ãªãœãŒã¹ãéå°ã«æ¶è²»ããŠããŸãããä»åã¯ã¡ã¢ãªã倧éã«æ¶è²»ããŠããŸãã
Ubuntu 16.04ã§äœ¿çšãããsystemdã«åé¡ããããæ¥ç¶çšã«äœæãããããŠã³ãã®ç®¡çæã«çºçããããšãå€æ subPath
ConfigMap ãŸãã¯ã·ãŒã¯ã¬ããããã ããããäœæ¥ãå®äºããåŸ systemd ãµãŒãã¹ãšãã®ãµãŒãã¹ ããŠã³ãã¯æ®ããŸã ã·ã¹ãã å
ã§ã æéãçµã€ã«ã€ããŠããããã¯èšå€§ãªæ°ã«èç©ãããŸãã ãã®ãããã¯ã«é¢ããåé¡ããããŸãã
...æåŸã®éšå㯠systemd ã® PR ãæããŸãã
ãã®åé¡ã¯ 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
...ãããŠãåè¿°ã® supercronic ã䜿çšã㊠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. ããããã¹ã±ãžã¥ãŒã«ããéã®ç«¶äºå
ããããããŒãã«é
眮ãããã®ã€ã¡ãŒãžãéåžžã«é·ãéãã³ãã¢ãŠããããŠããå ŽåãåãããŒãã«ãããããããå¥ã®ãããã¯åã« æ°ãããããã®ã€ã¡ãŒãžã®ãã«ãéå§ãããŸããã 代ããã«ãåã®ãããã®ã€ã¡ãŒãžããã«ããããŸã§åŸ
æ©ããŸãã ãã®çµæããã§ã«ã¹ã±ãžã¥ãŒã«ãããŠãããã€ã¡ãŒãžãããã XNUMX åã§ããŠã³ããŒãã§ããå¯èœæ§ããããããã¯ãæçµçã«æ¬¡ã®ã¹ããŒã¿ã¹ã«ãªããŸãã containerCreating
.
ã€ãã³ãã¯æ¬¡ã®ããã«ãªããŸãã
Normal Pulling 8m kubelet, ip-10-241-44-128.ap-northeast-1.compute.internal pulling image "registry.example.com/infra/openvpn/openvpn:master"
ããã¯ãããšãå€æ é ãã¬ãžã¹ããªããã® XNUMX ã€ã®ã€ã¡ãŒãžãå±éããããã¯ããå¯èœæ§ããããŸã ããŒãããšã«ã
æ®å¿µãªããããã®ç¶æ³ããæãåºãæ¹æ³ã¯ããŸããããŸããã
- Docker ã¬ãžã¹ããªãã¯ã©ã¹ã¿ãŒå ã§çŽæ¥äœ¿çšããããã¯ã©ã¹ã¿ãŒ (GitLab ã¬ãžã¹ããªãŒãNexus ãªã©) ã§çŽæ¥äœ¿çšããŠã¿ãŠãã ããã
- 次ã®ãããªãŠãŒãã£ãªãã£ã䜿çšããŸãã
ã¯ã©ãŒã±ã³ .
ã¹ããŒãªãŒ 5. ã¡ã¢ãªäžè¶³ã«ããããŒãããã³ã°ãã
ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã®åäœäžã«ãããŒããå®å šã«ã¢ã¯ã»ã¹ã§ããªããªãç¶æ³ã«ãééããŸãããSSH ãå¿çããããã¹ãŠã®ç£èŠããŒã¢ã³ãåæ¢ãããã®åŸãã°ã«ã¯ç°åžžãäœã (ãŸãã¯ã»ãšãã©äœã) ãªããªããŸãã
MongoDB ãæ©èœãã XNUMX ã€ã®ããŒããäŸã«ãåçã§èª¬æããŸãã
é äžã¯ãããªæãã§ã ЎП äºæ :
ãããŠãã®ããã« - åŸã® äºæ
:
ã¢ãã¿ãªã³ã°ã§ã¯ãããŒãã䜿çšã§ããªããªãæ¥æ¿ãªãžã£ã³ãããããŸãã
ãããã£ãŠãã¹ã¯ãªãŒã³ã·ã§ãããã次ã®ããšãæããã§ãã
- ãã·ã³äžã® RAM ãçµããã«è¿ã¥ããŠããŸãã
- RAM æ¶è²»éãæ¥æ¿ã«å¢å ãããã®åŸãã·ã³å šäœãžã®ã¢ã¯ã»ã¹ãçªç¶ç¡å¹ã«ãªããŸãã
- 倧ããªã¿ã¹ã¯ã Mongo ã«å°çãããšãDBMS ããã»ã¹ã¯ããå€ãã®ã¡ã¢ãªã䜿çšãããã£ã¹ã¯ããç©æ¥µçã«èªã¿åãããšã匷å¶ãããŸãã
Linux ã®ç©ºãã¡ã¢ãªãäžè¶³ã (ã¡ã¢ãªè² è·ãããããš)ãã¹ã¯ãããååšããªãå Žåã ЎП OOM ãã©ãŒãç»å ŽãããšãããŒãžãããŒãž ãã£ãã·ã¥ã«ã¹ããŒããããšãšãããŒãžããã£ã¹ã¯ã«æžãæ»ãããšã®éã§ãã©ã³ã¹ãåãå¿ èŠãçããå¯èœæ§ããããŸãã ãã㯠kswapd ã«ãã£ãŠè¡ããããã®åŸã®é åžã®ããã«å¯èœãªéãå€ãã®ã¡ã¢ãª ããŒãžã倧èã«è§£æŸããŸãã
æ®å¿µãªãããI/O è² è·ã倧ãã空ãã¡ã¢ãªãå°ãªãããã kswapd ãã·ã¹ãã å šäœã®ããã«ããã¯ã«ãªããããã«çžãããŠããããã§ãã ãã¹ãŠ ã·ã¹ãã å ã®ã¡ã¢ãª ããŒãžã®å²ãåœãŠ (ããŒãž ãã©ãŒã«ã)ã ããã»ã¹ãã¡ã¢ãªããã䜿çšããããªãã«ãããããããOOM ãã©ãŒã®æ·±æ·µã®ç«¯ã§ä¿®æ£ãããŠããå Žåãããã¯éåžžã«é·ãéç¶ãå¯èœæ§ããããŸãã
åœç¶ã®çåã¯ãOOM ãã©ãŒã¯ãªããããªã«é
ãã®ããšããããšã§ãã çŸåšã®å埩ã§ã¯ãOOM ãã©ãŒã¯éåžžã«æãã§ããã¡ã¢ãª ããŒãžã®å²ãåœãŠã倱æããå Žåã«ã®ã¿ããã»ã¹ã匷å¶çµäºããŸãã ããŒãžãã©ã«ãã倱æããå Žåã kswapd ã¯ã¡ã¢ãª ããŒãžã倧èã«è§£æŸããããŒãž ãã£ãã·ã¥ (å®éã«ã¯ã·ã¹ãã å
ã®ãã£ã¹ã¯ I/O å
šäœ) ããã£ã¹ã¯ã«ãã³ãããŠæ»ããããããã¯ããªãé·ãéèµ·ãããŸããã ã«ãŒãã«å
ã§ãã®ãããªåé¡ã解決ããããã«å¿
èŠãªæé ã®è©³çŽ°ã«ã€ããŠã¯ã次ãåç
§ããŠãã ããã
ãã®åäœ
ã¹ããŒãªãŒ 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
...kubelet ãåèµ·åãããšãAPI ãµãŒããŒãžã®åŒã³åºãã®ã°ã©ãã«æ¬¡ã®å³ã衚瀺ãããŸãã
...ãããŠãã¯ãããã¹ãŠãé£ã³å§ããŸãã!
PS
ãã°ã®åéãšãã®èšäºã®äœæã«ãååããã ããåœç€Ÿã®å€æ°ã®ãšã³ãžãã¢ãç¹ã«ç 究éçºããŒã ã®ååã§ãã Andrey Klimentyev ã«æ·±ãæè¬ã®æãè¡šããŸã (
PPS
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes ãããã§ãããã°ããããã® kubectl-debug ãã©ã°ã€ã³ 'ã - Kubernetes ã®ãã³ããšã³ãã®ã«ãŒã:
åºæïŒ habr.com