Kubernetes: ์ข…๋ฃŒ์‹œ ํฌ๋“œ๊ฐ€ ๋ฉˆ์ถค

์— ๋งŒ๋“  2017๋…„ 09์›” 02์ผ  ยท  181์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

์ด ์–‘์‹์€ ๋ฒ„๊ทธ ์‹ ๊ณ  ๋ฐ ๊ธฐ๋Šฅ ์š”์ฒญ ์ „์šฉ์ž…๋‹ˆ๋‹ค! ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ [Stack Overflow] (https://stackoverflow.com/questions/tagged/kubernetes) ๋ฐ [๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ] (https://kubernetes.io/docs/tasks/debug-application- ํด๋Ÿฌ์Šคํ„ฐ / ๋ฌธ์ œ ํ•ด๊ฒฐ /).

๋ฒ„๊ทธ ๋ณด๊ณ ์„œ ๋˜๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๊นŒ? :

/ ์ข…๋ฅ˜์˜ ๋ฒ„๊ทธ

๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ์Šต๋‹ˆ๊นŒ?
ํฌ๋“œ๊ฐ€ ์˜ค๋žซ๋™์•ˆ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Œ

์˜ˆ์ƒ ํ•œ ์ผ :
ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ๋จ

์žฌํ˜„ ๋ฐฉ๋ฒ• (๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ) :

  1. ๋ฐฐํฌ ์‹คํ–‰
  2. ์‚ญ์ œ
  3. ํฌ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์ข…๋ฃŒ ์ค‘์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? :
Kubernetes ํฌ๋“œ๊ฐ€ ์‚ญ์ œ ๋œ ํ›„ ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ Terminating ๋กœ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

๋กœ๊ทธ :
kubectl describe pod my-pod-3854038851-r1hc3

Name:               my-pod-3854038851-r1hc3
Namespace:          container-4-production
Node:               ip-172-16-30-204.ec2.internal/172.16.30.204
Start Time:         Fri, 01 Sep 2017 11:58:24 -0300
Labels:             pod-template-hash=3854038851
                release=stable
                run=my-pod-3
Annotations:            kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"container-4-production","name":"my-pod-3-3854038851","uid":"5816c...
                prometheus.io/scrape=true
Status:             Terminating (expires Fri, 01 Sep 2017 14:17:53 -0300)
Termination Grace Period:   30s
IP:
Created By:         ReplicaSet/my-pod-3-3854038851
Controlled By:          ReplicaSet/my-pod-3-3854038851
Init Containers:
  ensure-network:
    Container ID:   docker://guid-1
    Image:      XXXXX
    Image ID:       docker-pullable://repo/ensure-network<strong i="27">@sha256</strong>:guid-0
    Port:       <none>
    State:      Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:      True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxxx (ro)
Containers:
  container-1:
    Container ID:   docker://container-id-guid-1
    Image:      XXXXX
    Image ID:       docker-pullable://repo/container-1<strong i="28">@sha256</strong>:guid-2
    Port:       <none>
    State:      Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:      False
    Restart Count:  0
    Limits:
      cpu:  100m
      memory:   1G
    Requests:
      cpu:  100m
      memory:   1G
    Environment:
      XXXX
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxxx (ro)
  container-2:
    Container ID:   docker://container-id-guid-2
    Image:      alpine:3.4
    Image ID:       docker-pullable://alpine<strong i="29">@sha256</strong>:alpine-container-id-1
    Port:       <none>
    Command:
      X
    State:      Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:      False
    Restart Count:  0
    Limits:
      cpu:  20m
      memory:   40M
    Requests:
      cpu:      10m
      memory:       20M
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxxx (ro)
  container-3:
    Container ID:   docker://container-id-guid-3
    Image:      XXXXX
    Image ID:       docker-pullable://repo/container-3<strong i="30">@sha256</strong>:guid-3
    Port:       <none>
    State:      Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:      False
    Restart Count:  0
    Limits:
      cpu:  100m
      memory:   200M
    Requests:
      cpu:  100m
      memory:   100M
    Readiness:  exec [nc -zv localhost 80] delay=1s timeout=1s period=5s #success=1 #failure=3
    Environment:
      XXXX
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxxx (ro)
  container-4:
    Container ID:   docker://container-id-guid-4
    Image:      XXXX
    Image ID:       docker-pullable://repo/container-4<strong i="31">@sha256</strong>:guid-4
    Port:       9102/TCP
    State:      Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:      False
    Restart Count:  0
    Limits:
      cpu:  600m
      memory:   1500M
    Requests:
      cpu:  600m
      memory:   1500M
    Readiness:  http-get http://:8080/healthy delay=1s timeout=1s period=10s #success=1 #failure=3
    Environment:
      XXXX
    Mounts:
      /app/config/external from volume-2 (ro)
      /data/volume-1 from volume-1 (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xxxxx (ro)
Conditions:
  Type      Status
  Initialized   True
  Ready     False
  PodScheduled  True
Volumes:
  volume-1:
    Type:   Secret (a volume populated by a Secret)
    SecretName: volume-1
    Optional:   false
  volume-2:
    Type:   ConfigMap (a volume populated by a ConfigMap)
    Name:   external
    Optional:   false
  default-token-xxxxx:
    Type:   Secret (a volume populated by a Secret)
    SecretName: default-token-xxxxx
    Optional:   false
QoS Class:  Burstable
Node-Selectors: <none>

sudo journalctl -u kubelet | grep "๋‚ด ํฌ๋“œ"

[...]
Sep 01 17:17:56 ip-172-16-30-204 kubelet[9619]: time="2017-09-01T17:17:56Z" level=info msg="Releasing address using workloadID" Workload=my-pod-3854038851-r1hc3
Sep 01 17:17:56 ip-172-16-30-204 kubelet[9619]: time="2017-09-01T17:17:56Z" level=info msg="Releasing all IPs with handle 'my-pod-3854038851-r1hc3'"
Sep 01 17:17:56 ip-172-16-30-204 kubelet[9619]: time="2017-09-01T17:17:56Z" level=warning msg="Asked to release address but it doesn't exist. Ignoring" Workload=my-pod-3854038851-r1hc3 workloadId=my-pod-3854038851-r1hc3
Sep 01 17:17:56 ip-172-16-30-204 kubelet[9619]: time="2017-09-01T17:17:56Z" level=info msg="Teardown processing complete." Workload=my-pod-3854038851-r1hc3 endpoint=<nil>
Sep 01 17:19:06 ip-172-16-30-204 kubelet[9619]: I0901 17:19:06.591946    9619 kubelet.go:1824] SyncLoop (DELETE, "api"):my-pod-3854038851(b8cf2ecd-8f25-11e7-ba86-0a27a44c875)"

sudo journalctl -u ๋„์ปค | grep "docker-id-for-my-pod"

Sep 01 17:17:55 ip-172-16-30-204 dockerd[9385]: time="2017-09-01T17:17:55.695834447Z" level=error msg="Handler for POST /v1.24/containers/docker-id-for-my-pod/stop returned error: Container docker-id-for-my-pod is already stopped"
Sep 01 17:17:56 ip-172-16-30-204 dockerd[9385]: time="2017-09-01T17:17:56.698913805Z" level=error msg="Handler for POST /v1.24/containers/docker-id-for-my-pod/stop returned error: Container docker-id-for-my-pod is already stopped"

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „ ( kubectl version ) :
    ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „ : version.Info {Major : "1", Minor : "7", GitVersion : "v1.7.3", GitCommit : "2c2fe6e8278a5db2d15a013987b53968c743f2a1", GitTreeState : "clean", BuildDate : "2017-08-03T15 : 13 : 53Z ", GoVersion :"go1.8.3 ", ์ปดํŒŒ์ผ๋Ÿฌ :"gc ", ํ”Œ๋žซํผ :"darwin / amd64 "}
    ์„œ๋ฒ„ ๋ฒ„์ „ : version.Info {Major : "1", Minor : "6", GitVersion : "v1.6.6", GitCommit : "7fa1c1756d8bc963f1a389f4a6937dc71f08ada2", GitTreeState : "clean", BuildDate : "2017-06-16T18 : 21 : 54Z ", GoVersion :"go1.7.6 ", ์ปดํŒŒ์ผ๋Ÿฌ :"gc ", ํ”Œ๋žซํผ :"linux / amd64 "}
  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต ์—…์ฒด ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ ** :
    AWS

  • OS (์˜ˆ : / etc / os-release) :
    NAME = "CentOS Linux"
    VERSION = "7 (์ฝ”์–ด)"
    ID = "centos"
    ID_LIKE = "rhel ํŽ˜๋„๋ผ"
    VERSION_ID = "7"
    PRETTY_NAME = "CentOS Linux 7 (์ฝ”์–ด)"
    ANSI_COLOR = "0; 31"
    CPE_NAME = "cpe : / o : centos : centos : 7"
    HOME_URL = " https://www.centos.org/ "
    BUG_REPORT_URL = " https://bugs.centos.org/ "

CENTOS_MANTISBT_PROJECT = "CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION = "7"
REDHAT_SUPPORT_PRODUCT = "centos"
REDHAT_SUPPORT_PRODUCT_VERSION = "7"

  • ์ปค๋„ (์˜ˆ : uname -a ) :
    Linux ip-172-16-30-204 3.10.0-327.10.1.el7.x86_64 # 1 SMP 2 ์›” 16 ์ผ ํ™”์š”์ผ 17:03:50 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux

  • ๋„๊ตฌ ์„ค์น˜ :
    Kops

  • ๊ธฐํƒ€ :
    Docker ๋ฒ„์ „ 1.12.6, ๋นŒ๋“œ 78d1802

@ kubernetes / sig-aws @ kubernetes / sig-scheduling

kinbug sinode sistorage

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

IBM Cloud์˜ Kubernetes 1.8.2์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ด์ „ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

kubectl ๋ฒ„์ „
Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.2-1+d150e4525193f1", GitCommit:"d150e4525193f1c79569c04efc14599d7deb5f3e", GitTreeState:"clean", BuildDate:"2017-10-27T08:15:17Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

kubectl delete pod xxx --now ๋ฐ kubectl delete pod foo --grace-period=0 --force ์„ (๋ฅผ) ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  181 ๋Œ“๊ธ€

@ kubernetes / sig-aws @ kubernetes / sig-scheduling

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณผ๋ฅจ ๋ฐ ๋„คํŠธ์›Œํฌ ์ •๋ฆฌ๋Š” ์ข…๋ฃŒ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ์–ด๋Š ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ท„๋Š”์ง€ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณผ๋ฅจ ์ •๋ฆฌ?

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณผ๋ฅจ ๋ฐ ๋„คํŠธ์›Œํฌ ์ •๋ฆฌ๋Š” ์ข…๋ฃŒ์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ฉ๋‹ˆ๋‹ค.

์˜ณ์€. ๊ทธ๋“ค์€ ํ•ญ์ƒ ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค.

@igorleao kubectl delete pod xxx --now ๋„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @resouer ์™€ @dixudx
์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๋‹ค๋ฅธ ํฌ๋“œ์— ๋Œ€ํ•œ kubelet ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: time="2017-09-02T15:31:57Z" level=info msg="Releasing address using workloadID" Workload=my-pod-969733955-rbxhn
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: time="2017-09-02T15:31:57Z" level=info msg="Releasing all IPs with handle 'my-pod-969733955-rbxhn'"
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: time="2017-09-02T15:31:57Z" level=warning msg="Asked to release address but it doesn't exist. Ignoring" Workload=my-pod-969733955-rbxhn workloadId=my-pod-969733955-rbxhn
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: time="2017-09-02T15:31:57Z" level=info msg="Teardown processing complete." Workload=my-pod-969733955-rbxhn endpoint=<nil>
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: I0902 15:31:57.496132    9620 qos_container_manager_linux.go:285] [ContainerManager]: Updated QoS cgroup configuration
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: I0902 15:31:57.968147    9620 reconciler.go:201] UnmountVolume operation started for volume "kubernetes.io/secret/GUID-default-token-wrlv3" (spec.Name: "default-token-wrlv3") from pod "GUID" (UID: "GUID").
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: I0902 15:31:57.968245    9620 reconciler.go:201] UnmountVolume operation started for volume "kubernetes.io/secret/GUID-token-key" (spec.Name: "token-key") from pod "GUID" (UID: "GUID").
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: E0902 15:31:57.968537    9620 nestedpendingoperations.go:262] Operation for "\"kubernetes.io/secret/GUID-token-key\" (\"GUID\")" failed. No retries permitted until 2017-09-02 15:31:59.968508761 +0000 UTC (durationBeforeRetry 2s). Error: UnmountVolume.TearDown failed for volume "kubernetes.io/secret/GUID-token-key" (volume.spec.Name: "token-key") pod "GUID" (UID: "GUID") with: rename /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/token-key /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/wrapped_token-key.deleting~818780979: device or resource busy
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: E0902 15:31:57.968744    9620 nestedpendingoperations.go:262] Operation for "\"kubernetes.io/secret/GUID-default-token-wrlv3\" (\"GUID\")" failed. No retries permitted until 2017-09-02 15:31:59.968719924 +0000 UTC (durationBeforeRetry 2s). Error: UnmountVolume.TearDown failed for volume "kubernetes.io/secret/GUID-default-token-wrlv3" (volume.spec.Name: "default-token-wrlv3") pod "GUID" (UID: "GUID") with: rename /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/default-token-wrlv3 /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/wrapped_default-token-wrlv3.deleting~940140790: device or resource busy
--
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778742    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_default-token-wrlv3.deleting~940140790" (spec.Name: "wrapped_default-token-wrlv3.deleting~940140790") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778753    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_token-key.deleting~850807831" (spec.Name: "wrapped_token-key.deleting~850807831") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778764    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_token-key.deleting~413655961" (spec.Name: "wrapped_token-key.deleting~413655961") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778774    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_token-key.deleting~818780979" (spec.Name: "wrapped_token-key.deleting~818780979") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778784    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_token-key.deleting~348212189" (spec.Name: "wrapped_token-key.deleting~348212189") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778796    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_token-key.deleting~848395852" (spec.Name: "wrapped_token-key.deleting~848395852") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778808    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_default-token-wrlv3.deleting~610264100" (spec.Name: "wrapped_default-token-wrlv3.deleting~610264100") devicePath: ""
Sep 02 15:33:04 ip-172-16-30-208 kubelet[9620]: I0902 15:33:04.778820    9620 reconciler.go:363] Detached volume "kubernetes.io/secret/GUID-wrapped_token-key.deleting~960022821" (spec.Name: "wrapped_token-key.deleting~960022821") devicePath: ""
Sep 02 15:33:05 ip-172-16-30-208 kubelet[9620]: I0902 15:33:05.081380    9620 server.go:778] GET /stats/summary/: (37.027756ms) 200 [[Go-http-client/1.1] 10.0.46.202:54644]
Sep 02 15:33:05 ip-172-16-30-208 kubelet[9620]: I0902 15:33:05.185367    9620 operation_generator.go:597] MountVolume.SetUp succeeded for volume "kubernetes.io/secret/GUID-calico-token-w8tzx" (spec.Name: "calico-token-w8tzx") pod "GUID" (UID: "GUID").
Sep 02 15:33:07 ip-172-16-30-208 kubelet[9620]: I0902 15:33:07.187953    9620 kubelet.go:1824] SyncLoop (DELETE, "api"): "my-pod-969733955-rbxhn_container-4-production(GUID)"
Sep 02 15:33:13 ip-172-16-30-208 kubelet[9620]: I0902 15:33:13.879940    9620 aws.go:937] Could not determine public DNS from AWS metadata.
Sep 02 15:33:20 ip-172-16-30-208 kubelet[9620]: I0902 15:33:20.736601    9620 server.go:778] GET /metrics: (53.063679ms) 200 [[Prometheus/1.7.1] 10.0.46.198:43576]
Sep 02 15:33:23 ip-172-16-30-208 kubelet[9620]: I0902 15:33:23.898078    9620 aws.go:937] Could not determine public DNS from AWS metadata.

๋ณด์‹œ๋‹ค์‹œํ”ผ์ด ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” CNI ์šฉ Calico๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ์ค„์€ ๋‚ด ๊ด€์‹ฌ์„ ๋•๋‹ˆ๋‹ค.

Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: I0902 15:31:57.968245    9620 reconciler.go:201] UnmountVolume operation started for volume "kubernetes.io/secret/GUID-token-key" (spec.Name: "token-key") from pod "GUID" (UID: "GUID").
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: E0902 15:31:57.968537    9620 nestedpendingoperations.go:262] Operation for "\"kubernetes.io/secret/GUID-token-key\" (\"GUID\")" failed. No retries permitted until 2017-09-02 15:31:59.968508761 +0000 UTC (durationBeforeRetry 2s). Error: UnmountVolume.TearDown failed for volume "kubernetes.io/secret/GUID-token-key" (volume.spec.Name: "token-key") pod "GUID" (UID: "GUID") with: rename /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/token-key /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/wrapped_token-key.deleting~818780979: device or resource busy
Sep 02 15:31:57 ip-172-16-30-208 kubelet[9620]: E0902 15:31:57.968744    9620 nestedpendingoperations.go:262] Operation for "\"kubernetes.io/secret/GUID-default-token-wrlv3\" (\"GUID\")" failed. No retries permitted until 2017-09-02 15:31:59.968719924 +0000 UTC (durationBeforeRetry 2s). Error: UnmountVolume.TearDown failed for volume "kubernetes.io/secret/GUID-default-token-wrlv3" (volume.spec.Name: "default-token-wrlv3") pod "GUID" (UID: "GUID") with: rename 

ํฌ๋“œ๊ฐ€ ๋ฉˆ์ถ˜ ๋‹จ๊ณ„๋ฅผ ์ฐพ๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

kubectl delete pod xxx --now ์€ (๋Š”) ๊ฝค ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทผ๋ณธ ์›์ธ์„ ์ฐพ๊ณ  ์‚ฌ๋žŒ๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ”ผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

rename /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/token-key /var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/wrapped_token-key.deleting~818780979: device or resource busy

kubelet/mount ๋Š” ์ด๋Ÿฌํ•œ ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด configmap์„ ๋ณผ๋ฅจ์œผ๋กœ ๋งˆ์šดํŠธํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@igorleao ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”? ๋˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์•ˆ์ •์ ์ด์ง€ ์•Š๊ณ  ๊ฐ€๋” ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ „์— ๊ทธ๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@dixudx ํŠน์ • ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ํ•˜๋ฃจ์— ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์ฃผ์— ๋™์ผํ•œ ๋ฒ„์ „์˜ kops ๋ฐ kubernetes๋กœ ์ƒ์„ฑ ๋œ ๋‹ค๋ฅธ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@igorleao ๋กœ๊ทธ๋Š” ์žฅ์น˜๊ฐ€ ์‚ฌ์šฉ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณผ๋ฅจ ๊ด€๋ฆฌ์ž๊ฐ€ secrete ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ๋ชปํ–ˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
/var/lib/kubelet/pods/GUID/volumes/kubernetes.io~secret/token-key ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„์ง ๋งˆ์šดํŠธ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ!

@igorleao kubelet์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๊นŒ? ์šฉ๊ธฐ์—? ๊ทธ๋ ‡๋‹ค๋ฉด kubelet์— ๋Œ€ํ•œ systemd ๋‹จ์œ„ ๋˜๋Š” ๋„์ปค ๊ตฌ์„ฑ์„ ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋น„์Šทํ•œ ํ–‰๋™์ด ๋ณด์ž…๋‹ˆ๋‹ค. kubelet์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•˜๊ณ  /var/lib/kubelet ์„ ๊ณต์œ ๋กœ ๋งˆ์šดํŠธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ์™„ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค (๊ธฐ๋ณธ์ ์œผ๋กœ docker๋Š” ๋ณผ๋ฅจ์„ rslave๋กœ ๋งˆ์šดํŠธ ํ•จ). ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ๋นˆ๋„๋Š” ๋‚ฎ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‹ค๋ฅธ ๋งˆ์šดํŠธ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : /var/lib/docker ๋˜๋Š” /rootfs )

@stormltf kubelet ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์„ฑ์„ ๊ฒŒ์‹œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@stormltf ์ปจํ…Œ์ด๋„ˆ์—์„œ kubelet์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ --containerized ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค ( ๋งˆ์šดํŠธ๋กœ ๋ช‡ ๊ฐ€์ง€ ํŠธ๋ฆญ์„

๋ง‰ํžŒ ํฌ๋“œ์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

ํฌ๋“œ๊ฐ€ ์‹คํ–‰์ค‘์ธ ๋…ธ๋“œ

  • docker exec -ti /kubelet /bin/bash -c "mount | grep STUCK_POD_UUID"
  • ๋…ธ๋“œ ์ž์ฒด์—์„œ ๋™์ผ mount | grep STUCK_POD_UUID .

์ƒˆ๋กœ ๋งŒ๋“  ํฌ๋“œ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค. /var/lib/kubelet ๋งˆ์šดํŠธ (์˜ˆ : default-secret)๋ฅผ ๋ณผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

@stormltf ์ฒ˜์Œ ๋‘ ๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ์ƒ์„ฑ ๋œ ํ›„ kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@stormltf /var/lib/docker ๋ฐ /rootfs ๋ฅผ ๊ณต์œ  (๋„์ปค ๊ฒ€์‚ฌ์—์„œ๋Š” ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Œ) ๋งˆ์šดํŠธ ์ง€์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/ ์‹œ๊ทธ ์Šคํ† ๋ฆฌ์ง€

์ผ๋ถ€์—๊ฒŒ๋Š” ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --containerized ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ docker ์ปจํ…Œ์ด๋„ˆ์—์„œ kubelet์„ ์‹คํ–‰ ์ค‘์ด๋ฉฐ /rootfs , /var/lib/docker ๋ฐ /var/lib/kubelet ๋ฅผ ๊ณต์œ  ๋งˆ์šดํŠธ๋กœ ๋งˆ์šดํŠธํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๋งˆ์šดํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

      -v /:/rootfs:ro,shared \
      -v /sys:/sys:ro \
      -v /dev:/dev:rw \
      -v /var/log:/var/log:rw \
      -v /run/calico/:/run/calico/:rw \
      -v /run/docker/:/run/docker/:rw \
      -v /run/docker.sock:/run/docker.sock:rw \
      -v /usr/lib/os-release:/etc/os-release \
      -v /usr/share/ca-certificates/:/etc/ssl/certs \
      -v /var/lib/docker/:/var/lib/docker:rw,shared \
      -v /var/lib/kubelet/:/var/lib/kubelet:rw,shared \
      -v /etc/kubernetes/ssl/:/etc/kubernetes/ssl/ \
      -v /etc/kubernetes/config/:/etc/kubernetes/config/ \
      -v /etc/cni/net.d/:/etc/cni/net.d/ \
      -v /opt/cni/bin/:/opt/cni/bin/ \

์ž์„ธํ•œ ๋‚ด์šฉ์€. ์ด๊ฒƒ์€ ๋ชจ๋“  bind ๋งˆ์šดํŠธ์— ๋Œ€ํ•ด kubelet ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— 3 ๊ฐœ์˜ ๋งˆ์šดํŠธ (2 ๊ฐœ์˜ ๊ธฐ์ƒ์ถฉ)๋ฅผ ์–ป๊ฒŒ๋˜๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ ์–ด๋„ ๊ณต์œ  ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•œ ๋ฒˆ์˜ ์ƒท์œผ๋กœ ์‰ฝ๊ฒŒ ๋งˆ์šดํŠธ ํ•ด์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CoreOS์—๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. kubelet ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด๋„ ์ปค๊ฐ€ ์•„๋‹Œ rkt๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ kubelet์ด Docker์—์„œ ์‹คํ–‰๋˜๊ณ  kubelet continer ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๋งˆ์šดํŠธ๊ฐ€ /var/lib/docker/overlay/... ๋ฐ /rootfs ์ œ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ, ์ด๊ฒƒ์ด ๋ชจ๋“  bind ๋งˆ์šดํŠธ ๋ณผ๋ฅจ์— ๋Œ€ํ•ด ๋‘ ๊ฐœ์˜ ๊ธฐ์ƒ์ถฉ ๋งˆ์šดํŠธ๊ฐ€์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

  • /rootfs/var/lib/kubelet/<mount> ์—์„œ /rootfs ์—์„œ /rootfs/var/lib/kubelet/<mount>
  • /var/lib/docker/overlay/.../rootfs/var/lib/kubelet/<mount> ์—์„œ /var/lib/docker ์—์„œ /var/lib/docker/overlay/.../rootfs/var/lib/kubelet/<mount>
-v /dev:/dev:rw 
-v /etc/cni:/etc/cni:ro 
-v /opt/cni:/opt/cni:ro 
-v /etc/ssl:/etc/ssl:ro 
-v /etc/resolv.conf:/etc/resolv.conf 
-v /etc/pki/tls:/etc/pki/tls:ro 
-v /etc/pki/ca-trust:/etc/pki/ca-trust:ro
-v /sys:/sys:ro 
-v /var/lib/docker:/var/lib/docker:rw 
-v /var/log:/var/log:rw
-v /var/lib/kubelet:/var/lib/kubelet:shared 
-v /var/lib/cni:/var/lib/cni:shared 
-v /var/run:/var/run:rw 
-v /www:/www:rw 
-v /etc/kubernetes:/etc/kubernetes:ro 
-v /etc/os-release:/etc/os-release:ro 
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro

Azure์˜ Kubernetes 1.8.1๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ์ƒˆ ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ด์ „ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ์‹œ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

IBM Cloud์˜ Kubernetes 1.8.2์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ด์ „ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

kubectl ๋ฒ„์ „
Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.2-1+d150e4525193f1", GitCommit:"d150e4525193f1c79569c04efc14599d7deb5f3e", GitTreeState:"clean", BuildDate:"2017-10-27T08:15:17Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

kubectl delete pod xxx --now ๋ฐ kubectl delete pod foo --grace-period=0 --force ์„ (๋ฅผ) ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทผ๋ณธ ์›์ธ์ด ์—ฌ์ „ํžˆ ๋™์ผํ•˜๋‹ค๋ฉด (๋ถ€์ ์ ˆํ•˜๊ฒŒ ์ œ์•ˆ ๋œ ๋งˆ์šดํŠธ) ์ด๊ฒƒ์€ ๋ฐฐํฌ ๊ด€๋ จ ๋ฒ„๊ทธ imo์ž…๋‹ˆ๋‹ค.

IBM Cloud์—์„œ kubelet run์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”. ์‹œ์Šคํ…œ ๋‹จ์œ„? --containerized ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

--containerized ํ”Œ๋ž˜๊ทธ๋ฅผ false๋กœ ์„ค์ •ํ•˜์—ฌ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

systemctl status kubelet.service kubelet.service - Kubernetes Kubelet Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2017-11-19 21:48:48 UTC; 4 days ago

--containerized ๊นƒ๋ฐœ : ์•„๋‹ˆ์˜ค

์ข‹์•„, ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๋Œ“๊ธ€์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. https://github.com/kubernetes/kubernetes/issues/51835#issuecomment -333090349

/lib/systemd/system/kubelet.service ์ฝ˜ํ…์ธ ๋„ ๋ณด์—ฌ ์ฃผ์‹œ๊ณ  /etc/systemd/system ์— kubelet์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ๊ณต์œ  ํ•ด์ฃผ์„ธ์š”.

ํŠนํžˆ kubelet์ด ๋„์ปค์—์„œ ์‹คํ–‰๋˜๋ฉด ๋ชจ๋“  ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ -v ๋ฅผ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ €๋Š” ๊ณ ๊ฐ ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜์˜ ํฌ๋“œ๊ฐ€ ๋ฉฐ์น  ๋™์•ˆ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ์žˆ๋Š” ์„ค๋ช…๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ "์˜ค๋ฅ˜ : ๋ณผ๋ฅจ์— ๋Œ€ํ•ด UnmountVolume.TearDown ์‹คํŒจ"์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ, ๋ฉˆ์ถ˜ ๊ฐ ํฌ๋“œ์— ๋Œ€ํ•ด "์žฅ์น˜ ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ค‘"์ด ๋ฐ˜๋ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์ด moby ๋ฌธ์ œ์—์„œ ๋‹ค๋ฃจ๋Š” RHEL / Centos 7.4 ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์˜ docker ๋ฌธ์ œ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค : https://github.com/moby/moby/issues/22260 ๋ฐ์ด moby PR : https : // github .com / moby / moby / pull / 34886 / files

์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๋ช‡ ๋ถ„ ์•ˆ์— sysctl ์˜ต์…˜ fs.may_detach_mounts = 1์„ ์„ค์ •ํ•˜๋ฉด ๋ชจ๋“  Terminating pod๊ฐ€ ์ •๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค : ํฌ๋“œ๊ฐ€ 1.8.3์—์„œ Terminating ์ƒํƒœ๋กœ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ์˜ ๊ด€๋ จ kubelet ๋กœ๊ทธ :

Nov 28 22:48:51 <my-node> kubelet[1010]: I1128 22:48:51.616749    1010 reconciler.go:186] operationExecutor.UnmountVolume started for volume "nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw" (UniqueName: "kubernetes.io/nfs/58dc413c-d4d1-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw") pod "58dc413c-d4d1-11e7-870d-3c970e298d91" (UID: "58dc413c-d4d1-11e7-870d-3c970e298d91")
Nov 28 22:48:51 <my-node> kubelet[1010]: W1128 22:48:51.616762    1010 util.go:112] Warning: "/var/lib/kubelet/pods/58dc413c-d4d1-11e7-870d-3c970e298d91/volumes/kubernetes.io~nfs/nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw" is not a mountpoint, deleting
Nov 28 22:48:51 <my-node> kubelet[1010]: E1128 22:48:51.616828    1010 nestedpendingoperations.go:264] Operation for "\"kubernetes.io/nfs/58dc413c-d4d1-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw\" (\"58dc413c-d4d1-11e7-870d-3c970e298d91\")" failed. No retries permitted until 2017-11-28 22:48:52.616806562 -0800 PST (durationBeforeRetry 1s). Error: UnmountVolume.TearDown failed for volume "nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw" (UniqueName: "kubernetes.io/nfs/58dc413c-d4d1-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw") pod "58dc413c-d4d1-11e7-870d-3c970e298d91" (UID: "58dc413c-d4d1-11e7-870d-3c970e298d91") : remove /var/lib/kubelet/pods/58dc413c-d4d1-11e7-870d-3c970e298d91/volumes/kubernetes.io~nfs/nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw: directory not empty
Nov 28 22:48:51 <my-node> kubelet[1010]: W1128 22:48:51.673774    1010 docker_sandbox.go:343] failed to read pod IP from plugin/docker: NetworkPlugin cni failed on the status hook for pod "<pod>": CNI failed to retrieve network namespace path: Cannot find network namespace for the terminated container "f58ab11527aef5133bdb320349fe14fd94211aa0d35a1da006aa003a78ce0653"

Kubelet์€ Ubuntu 16.04์—์„œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์•„๋‹Œ systemd ๋‹จ์œ„๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๋ณด์‹œ๋‹ค์‹œํ”ผ NFS ์„œ๋ฒ„์— ๋งˆ์šดํŠธ๊ฐ€ ์žˆ์—ˆ๊ณ  kubelet์€์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธ๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ป๊ฒŒ ๋“  ๋งˆ์šดํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ์˜ ๋ณผ๋ฅจ ์‚ฌ์–‘ :

volumes:
  - name: nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw
    nfs:
      path: /<path>
      server: <IP>
  - name: default-token-rzqtt
    secret:
      defaultMode: 420
      secretName: default-token-rzqtt

UPD : 1.6.6์—์„œ ์ด์ „์—๋„์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

Azure์—์„œ ๋™์ผํ•œ ๊ฒฝํ—˜ ..

NAME                        READY     STATUS        RESTARTS   AGE       IP             NODE
busybox2-7db6d5d795-fl6h9   0/1       Terminating   25         1d        10.200.1.136   worker-1
busybox3-69d4f5b66c-2lcs6   0/1       Terminating   26         1d        <none>         worker-2
busybox7-797cc644bc-n5sv2   0/1       Terminating   26         1d        <none>         worker-2
busybox8-c8f95d979-8lk27    0/1       Terminating   25         1d        10.200.1.137   worker-1
nginx-56ccc998dd-hvpng      0/1       Terminating   0          2h        <none>         worker-1
nginx-56ccc998dd-nnsvj      0/1       Terminating   0          2h        <none>         worker-2
nginx-56ccc998dd-rsrvq      0/1       Terminating   0          2h        <none>         worker-1

kubectl ๋ฒ„์ „

Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:57:57Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a306c5d035fe7b0a", GitTreeState:"clean", BuildDate:"2017-09-28T22:46:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

ํฌ๋“œ nginx-56ccc998dd-nnsvj ์„ค๋ช…

Name:                      nginx-56ccc998dd-nnsvj
Namespace:                 default
Node:                      worker-2/10.240.0.22
Start Time:                Wed, 29 Nov 2017 13:33:39 +0400
Labels:                    pod-template-hash=1277755488
                           run=nginx
Annotations:               kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"nginx-56ccc998dd","uid":"614f71db-d4e8-11e7-9c45-000d3a25e3c0","...
Status:                    Terminating (expires Wed, 29 Nov 2017 15:13:44 +0400)
Termination Grace Period:  30s
IP:
Created By:                ReplicaSet/nginx-56ccc998dd
Controlled By:             ReplicaSet/nginx-56ccc998dd
Containers:
  nginx:
    Container ID:   containerd://d00709dfb00ed5ac99dcd092978e44fc018f44cca5229307c37d11c1a4fe3f07
    Image:          nginx:1.12
    Image ID:       docker.io/library/nginx<strong i="12">@sha256</strong>:5269659b61c4f19a3528a9c22f9fa8f4003e186d6cb528d21e411578d1e16bdb
    Port:           <none>
    State:          Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-jm7h5 (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  PodScheduled   True
Volumes:
  default-token-jm7h5:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-jm7h5
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type    Reason   Age   From               Message
  ----    ------   ----  ----               -------
  Normal  Killing  41m   kubelet, worker-2  Killing container with id containerd://nginx:Need to kill Pod

sudo journalctl -u kubelet | grep "nginx-56ccc998dd-nnsvj"

Nov 29 09:33:39 worker-2 kubelet[64794]: I1129 09:33:39.124779   64794 kubelet.go:1837] SyncLoop (ADD, "api"): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)"
Nov 29 09:33:39 worker-2 kubelet[64794]: I1129 09:33:39.160444   64794 reconciler.go:212] operationExecutor.VerifyControllerAttachedVolume started for volume "default-token-jm7h5" (UniqueName: "kubernetes.io/secret/6171e2a7-d4e8-11e7-9c45-000d3a25e3c0-default-token-jm7h5") pod "nginx-56ccc998dd-nnsvj" (UID: "6171e2a7-d4e8-11e7-9c45-000d3a25e3c0")
Nov 29 09:33:39 worker-2 kubelet[64794]: I1129 09:33:39.261128   64794 reconciler.go:257] operationExecutor.MountVolume started for volume "default-token-jm7h5" (UniqueName: "kubernetes.io/secret/6171e2a7-d4e8-11e7-9c45-000d3a25e3c0-default-token-jm7h5") pod "nginx-56ccc998dd-nnsvj" (UID: "6171e2a7-d4e8-11e7-9c45-000d3a25e3c0")
Nov 29 09:33:39 worker-2 kubelet[64794]: I1129 09:33:39.286574   64794 operation_generator.go:484] MountVolume.SetUp succeeded for volume "default-token-jm7h5" (UniqueName: "kubernetes.io/secret/6171e2a7-d4e8-11e7-9c45-000d3a25e3c0-default-token-jm7h5") pod "nginx-56ccc998dd-nnsvj" (UID: "6171e2a7-d4e8-11e7-9c45-000d3a25e3c0")
Nov 29 09:33:39 worker-2 kubelet[64794]: I1129 09:33:39.431485   64794 kuberuntime_manager.go:370] No sandbox for pod "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)" can be found. Need to start a new one
Nov 29 09:33:42 worker-2 kubelet[64794]: I1129 09:33:42.449592   64794 kubelet.go:1871] SyncLoop (PLEG): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)", event: &pleg.PodLifecycleEvent{ID:"6171e2a7-d4e8-11e7-9c45-000d3a25e3c0", Type:"ContainerStarted", Data:"0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af"}
Nov 29 09:33:47 worker-2 kubelet[64794]: I1129 09:33:47.637988   64794 kubelet.go:1871] SyncLoop (PLEG): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)", event: &pleg.PodLifecycleEvent{ID:"6171e2a7-d4e8-11e7-9c45-000d3a25e3c0", Type:"ContainerStarted", Data:"d00709dfb00ed5ac99dcd092978e44fc018f44cca5229307c37d11c1a4fe3f07"}
Nov 29 11:13:14 worker-2 kubelet[64794]: I1129 11:13:14.468137   64794 kubelet.go:1853] SyncLoop (DELETE, "api"): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)"
Nov 29 11:13:14 worker-2 kubelet[64794]: E1129 11:13:14.711891   64794 kuberuntime_manager.go:840] PodSandboxStatus of sandbox "0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af" for pod "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)" error: rpc error: code = Unknown desc = failed to get task status for sandbox container "0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af": process id 0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af not found: not found
Nov 29 11:13:14 worker-2 kubelet[64794]: E1129 11:13:14.711933   64794 generic.go:241] PLEG: Ignoring events for pod nginx-56ccc998dd-nnsvj/default: rpc error: code = Unknown desc = failed to get task status for sandbox container "0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af": process id 0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af not found: not found
Nov 29 11:13:15 worker-2 kubelet[64794]: I1129 11:13:15.788179   64794 kubelet.go:1871] SyncLoop (PLEG): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)", event: &pleg.PodLifecycleEvent{ID:"6171e2a7-d4e8-11e7-9c45-000d3a25e3c0", Type:"ContainerDied", Data:"d00709dfb00ed5ac99dcd092978e44fc018f44cca5229307c37d11c1a4fe3f07"}
Nov 29 11:13:15 worker-2 kubelet[64794]: I1129 11:13:15.788221   64794 kubelet.go:1871] SyncLoop (PLEG): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)", event: &pleg.PodLifecycleEvent{ID:"6171e2a7-d4e8-11e7-9c45-000d3a25e3c0", Type:"ContainerDied", Data:"0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af"}
Nov 29 11:46:45 worker-2 kubelet[42337]: I1129 11:46:45.384411   42337 kubelet.go:1837] SyncLoop (ADD, "api"): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0), kubernetes-dashboard-7486b894c6-2xmd5_kube-system(e55ca22c-d416-11e7-9c45-000d3a25e3c0), busybox3-69d4f5b66c-2lcs6_default(adb05024-d412-11e7-9c45-000d3a25e3c0), kube-dns-7797cb8758-zblzt_kube-system(e925cbec-d40b-11e7-9c45-000d3a25e3c0), busybox7-797cc644bc-n5sv2_default(b7135a8f-d412-11e7-9c45-000d3a25e3c0)"
Nov 29 11:46:45 worker-2 kubelet[42337]: I1129 11:46:45.387169   42337 kubelet.go:1871] SyncLoop (PLEG): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)", event: &pleg.PodLifecycleEvent{ID:"6171e2a7-d4e8-11e7-9c45-000d3a25e3c0", Type:"ContainerDied", Data:"d00709dfb00ed5ac99dcd092978e44fc018f44cca5229307c37d11c1a4fe3f07"}
Nov 29 11:46:45 worker-2 kubelet[42337]: I1129 11:46:45.387245   42337 kubelet.go:1871] SyncLoop (PLEG): "nginx-56ccc998dd-nnsvj_default(6171e2a7-d4e8-11e7-9c45-000d3a25e3c0)", event: &pleg.PodLifecycleEvent{ID:"6171e2a7-d4e8-11e7-9c45-000d3a25e3c0", Type:"ContainerDied", Data:"0f539a84b96814651bb199e91f71157bc90c6e0c26340001c3f1c9f7bd9165af"}

๊ณ ์–‘์ด /etc/systemd/system/kubelet.service

[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=cri-containerd.service
Requires=cri-containerd.service

[Service]
ExecStart=/usr/local/bin/kubelet \
  --allow-privileged=true \
  --anonymous-auth=false \
  --authorization-mode=Webhook \
  --client-ca-file=/var/lib/kubernetes/ca.pem \
  --cluster-dns=10.32.0.10 \
  --cluster-domain=cluster.local \
  --container-runtime=remote \
  --container-runtime-endpoint=unix:///var/run/cri-containerd.sock \
  --image-pull-progress-deadline=2m \
  --kubeconfig=/var/lib/kubelet/kubeconfig \
  --network-plugin=cni \
  --pod-cidr=10.200.2.0/24 \
  --register-node=true \
  --require-kubeconfig \
  --runtime-request-timeout=15m \
  --tls-cert-file=/var/lib/kubelet/worker-2.pem \
  --tls-private-key-file=/var/lib/kubelet/worker-2-key.pem \
  --v=2
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ๋ฒ„๊ทธ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1.8.3 ํด๋Ÿฌ์Šคํ„ฐ์— ๋‘˜ ๋‹ค ์žˆ์Šต๋‹ˆ๋‹ค.

  1. https://github.com/moby/moby/issues/31768 . ๋„์ปค ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. docker-ce = 17.09.0 ~ ce-0 ~ ubuntu์—์„œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‘ ๋ฒˆ์งธ๋Š” ๋” ํฅ๋ฏธ๋กญ๊ณ  kubelet ๋‚ด๋ถ€์˜ ๊ฒฝ์Ÿ ์กฐ๊ฑด๊ณผ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ปจํ…Œ์ด๋„ˆ ๋งˆ์šดํŠธ์— ์ง€์ •๋œ ํ•˜์œ„ ๊ฒฝ๋กœ๊ฐ€์žˆ๋Š” NFS ์ง€์†์„ฑ ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๋Š” ํฌ๋“œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํฌ๋“œ๋Š” ๋ฐฐํฌ๋ฅผ ์‚ญ์ œ ํ•œ ํ›„ ์ข…๋ฃŒ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  syslog์—๋Š” ๋งŽ์€ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
 Error: UnmountVolume.TearDown failed for volume "nfs-test" (UniqueName: "kubernetes.io/nfs/39dada78-d9cc-11e7-870d-3c970e298d91-nfs-test") pod "39dada78-d9cc-11e7-870d-3c970e298d91" (UID: "39dada78-d9cc-11e7-870d-3c970e298d91") : remove /var/lib/kubelet/pods/39dada78-d9cc-11e7-870d-3c970e298d91/volumes/kubernetes.io~nfs/nfs-test: directory not empty

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์‚ฌ์‹ค ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š๊ณ  ๋งˆ์šดํŠธ ํ•ด์ œ๋˜๊ณ  "ํ•˜์œ„ ๊ฒฝ๋กœ"๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!
์ด๋Ÿฌํ•œ ๋™์ž‘์— ๋Œ€ํ•œ ์„ค๋ช… ์ค‘ ํ•˜๋‚˜ :

  1. P1 : ํฌ๋“œ ์ƒ์„ฑ ๋˜๋Š” ํฌ๋“œ ๋™๊ธฐํ™” ์‹œ์ž‘
  2. P1 : ๋ณผ๋ฅจ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด ๋งˆ์šดํŠธ / ์žฌ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.
  3. P1 : ๋งˆ์šดํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  4. P1 : ์„ฑ๊ณต ๋งˆ์šดํŠธ ์‹ ํ˜ธ ์ˆ˜์‹  (์‹ค์ œ๋กœ ๋ชจ๋“  ๋ณผ๋ฅจ์ด ๋งˆ์šดํŠธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ)
  5. ์–ด๋–ป๊ฒŒ ๋“  ๋ณผ๋ฅจ์ด ๋งˆ์šดํŠธ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ญ์ œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งˆ์šดํŠธ ํ•ด์ œ ๋˜๋Š” ์ผ๋ถ€ OS ๋ฒ„๊ทธ ๋˜๋Š” ์ผ๋ถ€ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ ์ž‘์—… ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  6. P1 : ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์„ ๊ณ„์†ํ•˜๊ณ  ๋งˆ์šดํŠธ ์ง€์ ์— ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (์ด๋ฏธ ๋งˆ์šดํŠธ ํ•ด์ œ ๋จ).
  7. ๋งˆ์šดํŠธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋น„์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ด์ „ ๋‹จ๊ณ„ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๋กœ๊ทธ :

Dec  5 15:57:08 ASRock kubelet[2941]: I1205 15:57:08.333877    2941 reconciler.go:212] operationExecutor.VerifyControllerAttachedVolume started for volume "nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw" (UniqueName: "kubernetes.io/nfs/005b4bb9-da18-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw") pod "test-df5d868fc-sclj5" (UID: "005b4bb9-da18-11e7-870d-3c970e298d91")
Dec  5 15:57:08 ASRock systemd[1]: Started Kubernetes transient mount for /var/lib/kubelet/pods/005b4bb9-da18-11e7-870d-3c970e298d91/volumes/kubernetes.io~nfs/nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw.
Dec  5 15:57:12 ASRock kubelet[2941]: I1205 15:57:12.266404    2941 reconciler.go:186] operationExecutor.UnmountVolume started for volume "nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw" (UniqueName: "kubernetes.io/nfs/005b4bb9-da18-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw") pod "005b4bb9-da18-11e7-870d-3c970e298d91" (UID: "005b4bb9-da18-11e7-870d-3c970e298d91")
Dec  5 15:57:12 ASRock kubelet[2941]: E1205 15:57:12.387179    2941 nestedpendingoperations.go:264] Operation for "\"kubernetes.io/nfs/005b4bb9-da18-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw\" (\"005b4bb9-da18-11e7-870d-3c970e298d91\")" failed. No retries permitted until 2017-12-05 15:57:12.887062059 -0800 PST (durationBeforeRetry 500ms). Error: UnmountVolume.TearDown failed for volume "nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw" (UniqueName: "kubernetes.io/nfs/005b4bb9-da18-11e7-870d-3c970e298d91-nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw") pod "005b4bb9-da18-11e7-870d-3c970e298d91" (UID: "005b4bb9-da18-11e7-870d-3c970e298d91") : remove /var/lib/kubelet/pods/005b4bb9-da18-11e7-870d-3c970e298d91/volumes/kubernetes.io~nfs/nfs-mtkylje2oc4xlju1ls9rdwjlcmxhyi1ydw: directory not empty

์–ด๋–ป๊ฒŒ ๋“  ์ผ๋ถ€ ์ •๋ฆฌ ํ”„๋กœ์„ธ์Šค ((dswp * desiredStateOfWorldPopulator) findAndRemoveDeletedPods ())๋Š” ํฌ๋“œ๊ฐ€ ์ดˆ๊ธฐํ™” ์ƒํƒœ์—์žˆ๋Š” ๋™์•ˆ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ํ•ด์ œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

Dec  6 14:40:20 ASRock kubelet[15875]: I1206 14:40:20.620655   15875 kubelet_pods.go:886] Pod "test-84cd5ff8dc-kpv7b_4281-kuberlab-test(6e99a8df-dad6-11e7-b35c-3c970e298d91)" is terminated, but some volumes have not been cleaned up
Dec  6 14:40:20 ASRock kubelet[15875]: I1206 14:40:20.686449   15875 kubelet_pods.go:1730] Orphaned pod "6e99a8df-dad6-11e7-b35c-3c970e298d91" found, but volumes not yet removed
Dec  6 14:40:20 ASRock kubelet[15875]: I1206 14:40:20.790719   15875 kuberuntime_container.go:100] Generating ref for container test: &v1.ObjectReference{Kind:"Pod", Namespace:"4281-kuberlab-test", Name:"test-84cd5ff8dc-kpv7b", UID:"6e99a8df-dad6-11e7-b35c-3c970e298d91", APIVersion:"v1", ResourceVersion:"2639758", FieldPath:"spec.containers{test}"}
Dec  6 14:40:20 ASRock kubelet[15875]: I1206 14:40:20.796643   15875 docker_service.go:407] Setting cgroup parent to: "/kubepods/burstable/pod6e99a8df-dad6-11e7-b35c-3c970e298d91"

ํฌ๋“œ ์ดˆ๊ธฐํ™” ๋ฐ ์‚ญ์ œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
๋ฒ„๊ทธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ ค๋ฉด ์•ฝ 10 ๊ฐœ์˜ ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ฆ‰์‹œ ์‚ญ์ œ / ์—…๋ฐ์ดํŠธํ•ด์•ผํ•˜๋ฉฐ (๋‹จ์ผ ๋ฏธ๋‹ˆ์–ธ์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ ๋จ) ์•„๋งˆ๋„ ๋งˆ์šดํŠธ ์ž‘์—…์ด ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅด์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

GKE์—์„œ ๋™์ผํ•œ ๋ฒ„๊ทธ์˜ ์˜ํ–ฅ์„๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์•Œ๋ ค์ง„ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? --now ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ kubernetes ํŒ€์— ์˜ํ•ด ๋ณ‘ํ•ฉ ๋ ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@dreyk ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•ด ๋ฐœ๊ฒฌ ํ•œ ์‚ฌํ•ญ๊ณผ ์Šคํ† ๋ฆฌ์ง€ ํŒ€์ด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ!

@ gm42 ๋‹ค์Œ๊ณผ ๊ฐ™์ด GKE์—์„œ์ด ๋ฌธ์ œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ณ ์ • ๋œ ํฌ๋“œ๊ฐ€ ์˜ˆ์•ฝ ๋œ ๋…ธ๋“œ์— SSH
  2. docker ps | grep {pod name} ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ ID ์–ป๊ธฐ
  3. docker rm -f {container id}

GKE์—์„œ๋Š” ๋…ธ๋“œ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์ฆ‰์‹œ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

kubeadm ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๋™์ผํ•œ ๋ฒ„๊ทธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ์˜ docker ps | grep {pod name} ์— ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ณ  ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. ํ˜„์žฌ์ด ์ƒํƒœ์— ๋‘ ๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ํฌ๋“œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋‹ค๋ฅธ ํฌ๋“œ๋ฅผ ํšŒ์ „ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

1.7.2 ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๊ทธ ์ด์œ ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ๋ชจ๋‹ˆํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฃจํŠธ ๊ฒฝ๋กœ /
๋ฃจํŠธ ๊ฒฝ๋กœ์— /var/lib/kubelet/pods/ddc66e10-0711-11e8-b905-6c92bf70b164/volumes/kubernetes.io~secret/default-token-bnttf
๋”ฐ๋ผ์„œ kubelet delete pod์ด์ง€๋งŒ ๋ณผ๋ฅจ์„ ํ•ด์ œ ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์žฅ์น˜ ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ค‘

๋‹จ๊ณ„ :
1) sudo journalctl -u kubelet
์ด ์‰˜์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.
2) sudo ๋„์ปค ๊ฒ€์‚ฌ
io.kubernetes.pod.uid ":"ddc66e10-0711-11e8-b905-6c92bf70b164 "๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
๊ณผ
HostConfig-> ๋ฐ”์ธ๋“œ-> "/var/lib/kubelet/pods/ddc66e10-0711-11e8-b905-6c92bf70b164/volumes/kubernetes.io~secret/default-token-bnttf:/var/run/secrets/kubernetes .io / servi ceaccount : ro "

3) grep -l ddc66e10-0711-11e8-b905-6c92bf70b164 / proc / * / mountinfo

/ proc / 90225 / mountinfo
5) ps aux | ๊ทธ๋ ™ 90225
๋ฃจํŠธ 90225 1.3 0.0 2837164 42580? SSL Feb01 72:40 ./monitor_program

๋‚ด 1.7.2์— ๋™์ผํ•œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

"default-token-bnttf"๋ณผ๋ฅจ์— ๋Œ€ํ•ด operationExecutor.UnmountVolume ์‹œ์ž‘๋จ (UniqueName : "kubernetes.io/secret/ddc66e10-0711-11e8-b905-6c92bf70b164-default-token-bnttf") ํฌ๋“œ "ddc66e10-0711-11e8-b905- 6c92bf70b164 "kubelet [94382] : E0205 11 : 35 : 50.509169 94382 nestedpendingoperations.go : 262]" "kubernetes.io/secret/ddc66e10-0711-11e8-b905-6c92bf70b164-default-token-bnttf"("ddc66e10- 0711-11e8-b905-6c92bf70b164 ")"๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. 2018-02-05 11 : 37 : 52.509148953 +0800 CST (durationBeforeRetry 2m2s)๊นŒ์ง€๋Š” ์žฌ ์‹œ๋„๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ : "default-token-bnttf"๋ณผ๋ฅจ์— ๋Œ€ํ•ด UnmountVolume.TearDown์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค (UniqueName : "kubernetes.io/secret/ddc66e10-0711-11e8-b905-6c92bf70b164-default-token-bnttf") ํฌ๋“œ "ddc66e10-0711-11e8- b905-6c92bf70b164 "(UID :"ddc66e10-0711-11e8-b905-6c92bf70b164 ") : /var/lib/kubelet/pods/ddc66e10-0711-11e8-b905-6c92bf70b164/volumes/kubernetes.io~secret/default- ์ œ๊ฑฐ token-bnttf : ์žฅ์น˜ ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ์ค‘

Docker ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ์ž ๊ธˆ์ด ํ•ด์ œ๋˜๊ณ  ๋ช‡ ๋ถ„ ๋‚ด์— ํฌ๋“œ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. Docker 17.03 ์‚ฌ์šฉ

Azure, Kube 1.8.7์˜ ๋™์ผํ•œ ๋ฌธ์ œ

1.8.9์—์„œ๋„ ๋ช‡ ๋ถ„ ์ „์— ์šฐ๋ฆฌ์—๊ฒŒ ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋„์›€์ด๋˜์ง€๋งŒ ์•ฝ๊ฐ„ ์šฐ์Šค๊ฝ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ GKE์˜ ์ตœ์‹  1.9.4 ๋ฆด๋ฆฌ์Šค์—์„œ ๋งŽ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl delete pod NAME --grace-period=0 --force

GKE 1.9.4-gke.1์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ
๋ณผ๋ฅจ ๋งˆ์šดํŠธ์™€ ๊ด€๋ จ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ๋Œ€๋กœ filebeats๋ฅผ ์„ค์ •ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
https://github.com/elastic/beats/tree/master/deploy/kubernetes/filebeat

Kubelet ๋กœ๊ทธ์— ๋‹ค์Œ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Mar 23 19:44:16 gke-testing-c2m4-1-97b57429-40jp kubelet[1361]: I0323 19:44:16.380949    1361 reconciler.go:191] operationExecutor.UnmountVolume started for volume "config" (UniqueName: "kubernetes.io/configmap/9a5f1519-2d39-11e8-bec8-42010a8400f3-config") pod "9a5f1519-2d39-11e8-bec8-42010a8400f3" (UID: "9a5f1519-2d39-11e8-bec8-42010a8400f3")
Mar 23 19:44:16 gke-testing-c2m4-1-97b57429-40jp kubelet[1361]: E0323 19:44:16.382032    1361 nestedpendingoperations.go:263] Operation for "\"kubernetes.io/configmap/9a5f1519-2d39-11e8-bec8-42010a8400f3-config\" (\"9a5f1519-2d39-11e8-bec8-42010a8400f3\")" failed. No retries permitted until 2018-03-23 19:44:32.381982706 +0000 UTC m=+176292.263058344 (durationBeforeRetry 16s). Error: "error cleaning subPath mounts for volume \"config\" (UniqueName: \"kubernetes.io/configmap/9a5f1519-2d39-11e8-bec8-42010a8400f3-config\") pod \"9a5f1519-2d39-11e8-bec8-42010a8400f3\" (UID: \"9a5f1519-2d39-11e8-bec8-42010a8400f3\") : error checking /var/lib/kubelet/pods/9a5f1519-2d39-11e8-bec8-42010a8400f3/volume-subpaths/config/filebeat/0 for mount: lstat /var/lib/kubelet/pods/9a5f1519-2d39-11e8-bec8-42010a8400f3/volume-ubpaths/config/filebeat/0/..: not a directory"

kubectl delete pod NAME --grace-period=0 --force
์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

GKE 1.9.4-gke.1์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ
ํŠน์ • ํŒŒ์ผ ๋น„ํŠธ ๋ฐ๋ชฌ ์…‹์—์„œ๋งŒ ๋ฐœ์ƒํ•˜์ง€๋งŒ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๋„์›€์ด๋˜์ง€ ์•Š๊ณ  ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ GKE์— @Tapppi ๊ฐ™์€ 1.9.4-gke.1์ด ๋ฌธ์ œ๋ฅผ ํƒ€๊ฒฉ - ํฌ๋“œ๊ฐ€ ํ˜ธ์ŠคํŠธ ๋…ธ๋“œ์—์„œ ๊ณ ์ • ํ‘œ์‹œ๊ธฐ ๋ฐ๋ชฌ์—์„œ ์ œ๊ฑฐํ•˜์ง€๋งŒ๋Š” Kubernetes ๊ทธ๊ฒƒ์ด ๋ถ™์–ด ์žˆ์—ˆ๋‹ค ๋œ TERMINATING

Events:
  Type    Reason                 Age        From                                                      Message
  ----    ------                 ----       ----                                                      -------
  Normal  SuccessfulMountVolume  43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  MountVolume.SetUp succeeded for volume "data"
  Normal  SuccessfulMountVolume  43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  MountVolume.SetUp succeeded for volume "varlibdockercontainers"
  Normal  SuccessfulMountVolume  43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  MountVolume.SetUp succeeded for volume "prospectors"
  Normal  SuccessfulMountVolume  43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  MountVolume.SetUp succeeded for volume "config"
  Normal  SuccessfulMountVolume  43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  MountVolume.SetUp succeeded for volume "filebeat-token-v74k6"
  Normal  Pulled                 43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  Container image "docker.elastic.co/beats/filebeat:6.1.2" already present on machine
  Normal  Created                43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  Created container
  Normal  Started                43m        kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  Started container
  Normal  Killing                <invalid>  kubelet, gke-delivery-platform-custom-pool-c9b9fe86-fgvh  Killing container with id docker://filebeat:Need to kill Pod
/Users/karl.stoney/git/autotrader/terraform-gcp git/master

๋ฐฉ๊ธˆ ์ „์— kubectl delete pod NAME --grace-period=0 --force ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์ • ๋œ ํฌ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ์ด ํฌ๋“œ๊ฐ€์žˆ๋Š” ๋…ธ๋“œ๊ฐ€ ๋น„์ •์ƒ ์ƒํƒœ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” docker 17-12CE๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ƒ์ž์—์„œ docker deamon์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋…ธ๋“œ๋ฅผ ๋„์™”๊ณ  ์ฝ”๋ฅดํฌ๋ฅผ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.

1.9.4-gke.1์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๋ณธ ์‚ฌ๋žŒ๋“ค์€ https://github.com/kubernetes/kubernetes/issues/61178 ๋•Œ๋ฌธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋Š” 1.9.5์—์„œ ์ˆ˜์ •๋˜๊ณ  GKE์—์„œ ์ถœ์‹œ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ. ์ด ๋ฌธ์ œ๋Š” ํŒŒ์ผ (๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹˜)์˜ ํ•˜์œ„ ๊ฒฝ๋กœ ๋งˆ์šดํŠธ ์ •๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. @zackify @ nodefactory-bk @Tapppi @Stono

IIUC,์ด ๋ฒ„๊ทธ์˜ ์›๋ž˜ ๋ฌธ์ œ๋Š” ์ปจํ…Œ์ด๋„ˆํ™” ๋œ kubelet์˜ ๊ตฌ์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

BTW, v1.9.3-gke.0 ๋ฒ„์ „์œผ๋กœ ์ƒˆ ๋…ธ๋“œ ํ’€์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ v1.9.5 ์ด ์—ฌ์ „ํžˆ gke์—์„œ ์ถœ์‹œ๋˜์ง€ ์•Š๊ณ  ์ด๋ฏธ ๋ถ€ํ™œ์ ˆ์ด๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€์ด ๋ฌธ์ œ๊ฐ€ ๋ฒ„์ „ 1.9.3 ์ด์ƒ์—์„œ ์ˆ˜์ •๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋™์ž‘์œผ๋กœ ์ธํ•ด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค docker๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ soo st00pid์ž…๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด 1.9.6์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

2018 ๋…„ 4 ์›” 4 ์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 11:43 sokoow, [email protected] ์ž‘์„ฑ :

๋ˆ„๊ตฐ๊ฐ€์ด ๋ฌธ์ œ๊ฐ€ ๋ฒ„์ „ 1.9.3 ์ด์ƒ์—์„œ ์ˆ˜์ •๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š”
์ด ๋™์ž‘์œผ๋กœ ์ธํ•ด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ๊ฐ๊ฐ ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š” ์‹œ๊ฐ„์€ soo st00pid์ž…๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/51835#issuecomment-378557636 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ABaviW5yfj64zVjBYFGUToe2MH3dKwpTks5tlKPNgaJpZM4PKs9r
.

์ข‹์•„์š”, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @Stono . ์—ฌ๊ธฐ์„œ ํ™•์ธํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ํ•˜๋‚˜ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ปจํ…Œ์ด๋„ˆํ™” ๋œ kubelet ์šฉ kubespray ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค.

#!/bin/bash /usr/bin/docker run \ --net=host \ --pid=host \ --privileged \ --name=kubelet \ --restart=on-failure:5 \ --memory={{ kubelet_memory_limit|regex_replace('Mi', 'M') }} \ --cpu-shares={{ kubelet_cpu_limit|regex_replace('m', '') }} \ -v /dev:/dev:rw \ -v /etc/cni:/etc/cni:ro \ -v /opt/cni:/opt/cni:ro \ -v /etc/ssl:/etc/ssl:ro \ -v /etc/resolv.conf:/etc/resolv.conf \ {% for dir in ssl_ca_dirs -%} -v {{ dir }}:{{ dir }}:ro \ {% endfor -%} -v /:/rootfs:ro,shared \ -v /sys:/sys:ro \ -v /var/lib/docker:/var/lib/docker:rw,shared \ -v /var/log:/var/log:rw,shared \ -v /var/lib/kubelet:/var/lib/kubelet:rw,shared \ -v /var/lib/cni:/var/lib/cni:rw,shared \ -v /var/run:/var/run:rw,shared \ -v /etc/kubernetes:/etc/kubernetes:ro \ -v /etc/os-release:/etc/os-release:ro \ {{ hyperkube_image_repo }}:{{ hyperkube_image_tag}} \ ./hyperkube kubelet --containerized \ "$@"

๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋น„์Šทํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋ง ํ–ˆ์–ด์š”.

  Type    Reason   Age   From                                                      Message                                                                                                             [53/7752]
  ----    ------   ----  ----                                                      -------
  Normal  Killing  4m    kubelet, gke-delivery-platform-custom-pool-560b2b96-gcmb  Killing container with id docker://filebeat:Need to kill Pod

์ž”์ธํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ทธ๊ฒƒ์„ ํŒŒ๊ดดํ•ด์•ผํ–ˆ๋‹ค.

โฏ kks delete pod filebeat-x56v8 --force --grace-period 0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "filebeat-x56v8" deleted

@Stono ์–ด๋–ค ๋„์ปค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? docker 17.12CE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ --force --grace-period 0์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๊ณผ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ์˜ ํ•ญ์ƒ docker hang์œผ๋กœ ์ธํ•ด ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ๋ฉ๋‹ˆ๋‹ค.

Azure AKS ๊ด€๋ฆฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ 1.9.6์—์„œ ์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉˆ์ถฐ์žˆ๋Š” ๋ชจ๋“  ํฌ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค (๊ฐœ๋ฐœ / ์Šคํฌ๋ž˜์น˜ ํด๋Ÿฌ์Šคํ„ฐ์— ์ข…๋ฃŒ ํฌ๋“œ๊ฐ€ ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ).

kubectl get pods | awk '$3=="Terminating" {print "kubectl delete pod " $1 " --grace-period=0 --force"}' | xargs -0 bash -c

May Azure ๋ฐ AWS ํด๋Ÿฌ์Šคํ„ฐ ๋ชจ๋‘์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ Mike Elliot์—์„œ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

https://jira.onap.org/browse/OOM-946

ubuntu @ ip-10-0-0-22 : ~ $ kubectl get pods --all-namespaces
๋„ค์ž„ ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ค€๋น„ ์ƒํƒœ ๋‹ค์‹œ ์‹œ์ž‘ ๋‚˜์ด
kube-system heapster-76b8cd7b5-4r88h 1/1 ์‹คํ–‰ ์ค‘ 0 25d
kube-system kube-dns-5d7b4487c9-s4rsg 3/3 ์‹คํ–‰ ์ค‘ 0 25d
kube-system kubernetes-dashboard-f9577fffd-298r6 1/1 Running 0 25d
kube-system monitoring-grafana-997796fcf-wtz7n 1/1 Running 0 25d
kube-system monitoring-influxdb-56fdcd96b-2phd2 1/1 Running 0 25d
kube-system tiller-deploy-cc96d4f6b-jzqmz 1/1 Running 0 25d
onap dev-sms-857f6dbd87-pds58 0/1 ์ข…๋ฃŒ 0 3h
onap dev-vfc-zte-sdnc-driver-5b6c7cbd6b-5vdvp 0/1 ์ข…๋ฃŒ 0 3h
ubuntu @ ip-10-0-0-22 : ~ $ kubectl delete pod dev-vfc-zte-sdnc-driver-5b6c7cbd6b-5vdvp -n onap --grace-period = 0 --force
๊ฒฝ๊ณ  : ์ฆ‰์‹œ ์‚ญ์ œ๋Š” ์‹คํ–‰์ค‘์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฌด๊ธฐํ•œ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํฌ๋“œ "dev-vfc-zte-sdnc-driver-5b6c7cbd6b-5vdvp"์‚ญ์ œ๋จ
ubuntu @ ip-10-0-0-22 : ~ $ kubectl get pods --all-namespaces
๋„ค์ž„ ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ค€๋น„ ์ƒํƒœ ๋‹ค์‹œ ์‹œ์ž‘ ๋‚˜์ด
kube-system heapster-76b8cd7b5-4r88h 1/1 ์‹คํ–‰ ์ค‘ 0 25d
kube-system kube-dns-5d7b4487c9-s4rsg 3/3 ์‹คํ–‰ ์ค‘ 0 25d
kube-system kubernetes-dashboard-f9577fffd-298r6 1/1 Running 0 25d
kube-system monitoring-grafana-997796fcf-wtz7n 1/1 Running 0 25d
kube-system monitoring-influxdb-56fdcd96b-2phd2 1/1 Running 0 25d
kube-system tiller-deploy-cc96d4f6b-jzqmz 1/1 Running 0 25d
onap dev-sms-857f6dbd87-pds58 0/1 ์ข…๋ฃŒ 0 3h
ubuntu @ ip-10-0-0-22 : ~ $ kubectl delete pod dev-sms-857f6dbd87-pds58 -n onap --grace-period = 0 --force
๊ฒฝ๊ณ  : ์ฆ‰์‹œ ์‚ญ์ œ๋Š” ์‹คํ–‰์ค‘์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฌด๊ธฐํ•œ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํฌ๋“œ "dev-sms-857f6dbd87-pds58"์‚ญ์ œ๋จ
ubuntu @ ip-10-0-0-22 : ~ $ kubectl get pods --all-namespaces
๋„ค์ž„ ์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ค€๋น„ ์ƒํƒœ ๋‹ค์‹œ ์‹œ์ž‘ ๋‚˜์ด
kube-system heapster-76b8cd7b5-4r88h 1/1 ์‹คํ–‰ ์ค‘ 0 25d
kube-system kube-dns-5d7b4487c9-s4rsg 3/3 ์‹คํ–‰ ์ค‘ 0 25d
kube-system kubernetes-dashboard-f9577fffd-298r6 1/1 ์‹คํ–‰ ์ค‘ 0 25d
kube-system monitoring-grafana-997796fcf-wtz7n 1/1 Running 0 25d
kube-system monitoring-influxdb-56fdcd96b-2phd2 1/1 ์‹คํ–‰ ์ค‘ 0 25d
kube-system tiller-deploy-cc96d4f6b-jzqmz 1/1 Running 0 25d

์ด๊ฒƒ์ด ๋™์ผํ•œ ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ 1.9.3์—์„œ 10.10.1๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ์ดํ›„๋กœ์ด ๋™์ž‘์„ ์ธ์‹ ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค . ๊ทธ ์ „์—๋Š” ๊ทธ๋Ÿฐ ์ผ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. SubPath์™€ ํ•จ๊ป˜ glusterfs ๋ณผ๋ฅจ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Kubelet์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ง€์†์ ์œผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

Apr 23 08:21:11 int-kube-01 kubelet[13018]: I0423 08:21:11.106779   13018 reconciler.go:181] operationExecutor.UnmountVolume started for volume "dev-static" (UniqueName: "kubernetes.io/glusterfs/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f-dev-static") pod "ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f" (UID: "ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f")
Apr 23 08:21:11 int-kube-01 kubelet[13018]: E0423 08:21:11.122027   13018 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/glusterfs/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f-dev-static\" (\"ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f\")" failed. No retries permitted until 2018-04-23 08:23:13.121821027 +1000 AEST m=+408681.605939042 (durationBeforeRetry 2m2s). Error: "UnmountVolume.TearDown failed for volume \"dev-static\" (UniqueName: \"kubernetes.io/glusterfs/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f-dev-static\") pod \"ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f\" (UID: \"ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f\") : Unmount failed: exit status 32\nUnmounting arguments: /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static\nOutput: umount: /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static: target is busy.\n        (In some cases useful info about processes that use\n         the device is found by lsof(8) or fuser(1))\n\n"

lsof๋Š” ์‹ค์ œ๋กœ glusterfs ๋ณผ๋ฅจ ์•„๋ž˜์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ์ค‘์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

glusterfs  71570                     root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterti  71570  71571              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glustersi  71570  71572              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterme  71570  71573              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glustersp  71570  71574              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glustersp  71570  71575              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71579              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterio  71570  71580              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71581              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71582              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71583              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71584              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71585              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71586              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterep  71570  71587              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterfu  71570  71592              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere
glusterfu  71570  71593              root   10u      DIR              0,264      4096  9380607748984626555 /var/lib/kubelet/pods/ad8fabbe-4449-11e8-b21a-a2bfb3c62d0f/volumes/kubernetes.io~glusterfs/dev-static/subpathhere

์ด๊ฒƒ์€ 1.9.3์—์„œ ๋ชจ๋‘ ๊ดœ์ฐฎ ์•˜์œผ๋ฏ€๋กœ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ง์นœ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@ ross-w์ด ์„œ๋ช…์€ ๋‹ค๋ฅธ ์„œ๋ช…๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  ํฌ๋“œ ์‚ฌ์–‘๋„ ํฌํ•จ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ (Kubernetes 1.9.7, docker 17.03), ๋…ธ๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฒ—์–ด๋‚˜๊ณ  ํฌ๋“œ๊ฐ€ ๋‹ค์‹œ ์˜ˆ์•ฝ ๋œ ํ›„ ํฌ๋“œ๋Š” Terminating ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ kubernetes ๋Œ€์‹œ ๋ณด๋“œ์— ๋งŽ์€ ๊ณ ์ŠคํŠธ ํฌ๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ฐฐํฌ ํƒญ์—์„œ 4/1 ํฌ๋“œ๊ฐ€์žˆ๋Š” ๋ฐฐํฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  pod๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ๋„์›€์ด๋˜์ง€๋งŒ ๋งค์šฐ ์—ด์•…ํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

@Adiqq Docker ์ž์ฒด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜์—์„œ journalctl -u kubelet -f ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. '์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฃฝ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.gRpc ์˜ค๋ฅ˜ "(์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ ์ดํ›„ ์‹ค์ œ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค).

์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ๋ฉ”๋ชจ์—์„œ ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. Docker๋ฅผ ๋ถ€ํŒ…ํ•˜๋Š” ๋™์•ˆ ์†์ƒ๋œ ์ƒํƒœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •๋ฆฌํ•˜๊ณ ์ด ๋ถ€์‹คํ•œ ํฌ๋“œ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์–ด์ œ 1.9.7์—์„œ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋ฉˆ ์ท„๊ณ  ๋กœ๊ทธ์— "ํฌ๋“œ๋ฅผ ์ฃฝ์ผ ํ•„์š”๊ฐ€ ์žˆ์Œ"์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ•˜๋ ค๋ฉด --force --grace-period=0 ํ–ˆ์Šต๋‹ˆ๋‹ค.

1.9.7-gke.0์œผ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
1.9.6-gke.1์— ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ 1.9.4์™€ 1.9.5์—์„œ๋Š”

๊ณ ์ • ๋œ ํฌ๋“œ์— PV๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ๋ฅผ ์žฌ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•ด๋„ ๋™์ผํ•œ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๊ฐ€๋˜๋Š” ๋…ธ๋“œ์—์„œ kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. kubelet์ด ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์•˜๊ณ  ์ „์ฒด ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋™์•ˆ pod๋Š” PV๊ฐ€ ์ด๋ฏธ ๋‹ค๋ฅธ ๊ณณ์— ๋งˆ์šดํŠธ๋˜์—ˆ๋‹ค๊ณ  ๋งํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ์˜ˆ์•ฝ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@Stono @ nodefactory-bk ๋ฌธ์ œ๋ฅผ ์ง€์  ํ•  ์ˆ˜์žˆ๋Š” ์ž์„ธํ•œ ๋กœ๊ทธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ๊ฐ€๋˜๋Š” ๋…ธ๋“œ์˜ kubelet ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

cc @dashpole

ํ•˜๋‚˜์˜ ์•ฑ์ด ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ 1.9.7-gke.1์— ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ๋น„๋ฐ€์ด ์ˆ˜์ • ๋œ kubectl describe pod์ž…๋‹ˆ๋‹ค.

Name:                      sharespine-cloud-6b78cbfb8d-xcbh5
Namespace:                 shsp-cloud-dev
Node:                      gke-testing-std4-1-0f83e7c0-qrxg/10.132.0.4
Start Time:                Tue, 22 May 2018 11:14:22 +0200
Labels:                    app=sharespine-cloud
                           pod-template-hash=2634769648
Annotations:               <none>
Status:                    Terminating (expires Wed, 23 May 2018 10:02:01 +0200)
Termination Grace Period:  60s
IP:                        10.40.7.29
Controlled By:             ReplicaSet/sharespine-cloud-6b78cbfb8d
Containers:
  sharespine-cloud:
    Container ID:   docker://4cf402b5dc3ea728fcbff87b57e0ec504093ea3cf7277f6ca83fde726a4bba48
    Image:          ...
    Image ID:       ...
    Ports:          9000/TCP, 9500/TCP
    State:          Running
      Started:      Tue, 22 May 2018 11:16:36 +0200
    Ready:          False
    Restart Count:  0
    Limits:
      memory:  1500M
    Requests:
      cpu:      500m
      memory:   1024M
    Liveness:   http-get http://:9000/ delay=240s timeout=1s period=30s #success=1 #failure=3
    Readiness:  http-get http://:9000/ delay=30s timeout=1s period=10s #success=1 #failure=3
    Environment Variables from:
      sharespine-cloud-secrets  Secret  Optional: false
    Environment:
      APP_NAME:  sharespine-cloud
      APP_ENV:   shsp-cloud-dev (v1:metadata.namespace)
      JAVA_XMS:  128M
      JAVA_XMX:  1024M
    Mounts:
      /home/app/sharespine-cloud-home/ from sharespine-cloud-home (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-x7vzr (ro)
  sharespine-cloud-elker:
    Container ID:   docker://88a5a2bfd6804b5f40534ecdb6953771ac3181cf12df407baa81a34a7215d142
    Image:          ...
    Image ID:       ...
    Port:           <none>
    State:          Running
      Started:      Tue, 22 May 2018 11:16:36 +0200
    Ready:          True
    Restart Count:  0
    Limits:
      memory:  200Mi
    Requests:
      cpu:     10m
      memory:  100Mi
    Environment Variables from:
      sharespine-cloud-secrets  Secret  Optional: false
    Environment:
      APP_NAME:                     sharespine-cloud
      APP_ENV:                      shsp-cloud-dev (v1:metadata.namespace)
      ELASTICSEARCH_LOGBACK_PATH:   /home/app/sharespine-cloud-home/logs/stash/stash.json
      ELASTICSEARCH_LOGBACK_INDEX:  cloud-dev
    Mounts:
      /home/app/sharespine-cloud-home/ from sharespine-cloud-home (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-x7vzr (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  PodScheduled   True
Volumes:
  sharespine-cloud-home:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  sharespine-cloud-home
    ReadOnly:   false
  default-token-x7vzr:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-x7vzr
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason         Age                From                                       Message
  ----     ------         ----               ----                                       -------
  Normal   Killing        20m                kubelet, gke-testing-std4-1-0f83e7c0-qrxg  Killing container with id docker://sharespine-cloud-elker:Need to kill Pod
  Normal   Killing        20m                kubelet, gke-testing-std4-1-0f83e7c0-qrxg  Killing container with id docker://sharespine-cloud:Need to kill Pod
  Warning  FailedKillPod  18m                kubelet, gke-testing-std4-1-0f83e7c0-qrxg  error killing pod: failed to "KillPodSandbox" for "83d05e96-5da0-11e8-ba51-42010a840176" with KillPodSandboxError: "rpc error: code = DeadlineExceeded desc = context deadline exceeded"
  Warning  FailedSync     1m (x53 over 16m)  kubelet, gke-testing-std4-1-0f83e7c0-qrxg  error determining status: rpc error: code = DeadlineExceeded desc = context deadline exceeded

Google ์ด๋ฏธ์ง€์˜ gke์—์„œ kubelet.log๋ฅผ ์–ด๋””์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ฒจ๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.
kube.log

kubectl -n shsp-cloud-dev delete pod sharespine-cloud-6b78cbfb8d-xcbh5 --force --grace-period 0
์ฃฝ์ด๊ณ  ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ดํ›„ ์ž˜ ์‹œ์ž‘๋˜์—ˆ์ง€๋งŒ ํ‰์†Œ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์˜ค๋ž˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด ์•ฑ์— ๋Œ€ํ•ด ๋งค๋ฒˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
์•„๋งˆ ๋Œ€๋žต 1/4 ๋ฐฐ ์ •๋„๋ผ๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

k8s 1.9.6์œผ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด kubelet์ด Cephfs ๋งˆ์šดํŠธ๋ฅผ ํ•ด์ œ ํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋…ธ๋“œ์˜ ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ์˜์›ํžˆ ์ข…๋ฃŒ ๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋ณต๊ตฌ๋ฅผ ์œ„ํ•ด ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ–ˆ๋Š”๋ฐ kubelet ๋˜๋Š” docker restart๊ฐ€ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@tuminoid ceph ๋ฌธ์ œ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  ํ•ด๋‹น ํฌ๋“œ์— ๋Œ€ํ•œ ํฌ๋“œ ์ด๋ฒคํŠธ ๋ฐ kubelet ๋กœ๊ทธ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฐธ๊ณ ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ k8s v1.10.2๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฒจ๋ถ€ ํŒŒ์ผ์€ gke์—์„œ ๋‚˜๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:17:39Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.2-gke.1", GitCommit:"75d2af854b1df023c7ce10a8795b85d3dd1f8d37", GitTreeState:"clean", BuildDate:"2018-05-10T17:23:18Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/amd64"}

k8s-nfs-test.yaml.txt

์‹คํ–‰ ํ•œ ๋‹ค์Œ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค. ์‚ญ์ œ์‹œ 'nfs-client'๊ฐ€ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋…ธ๋“œ์˜ ํ•˜๋“œ ๋งˆ์šดํŠธ์ด๋ฉฐ '์„œ๋ฒ„'๊ฐ€ ๋จผ์ € ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

nfs ์„œ๋ฒ„๋ฅผ ๋จผ์ € ์‚ญ์ œํ•  ๋•Œ nfs ๋งˆ์šดํŠธ ํ•ด์ œ ๋ฌธ์ œ์— ๋Œ€ํ•œ @donbowman , StorageClass ๋˜๋Š” PV์—์„œ "์†Œํ”„ํŠธ"๋งˆ์šดํŠธ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ๋ชจ๋ฅด๊ฒ ์–ด์š”? PersistentVolumeClaim์—์„œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์— StorageClass๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (NFS ์„œ๋ฒ„ ์•„๋ž˜์˜ ๋””์Šคํฌ ์•„๋ž˜).

์ด ๋ฌธ์ œ๋Š” nfs-client์— ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋ญ˜ ๋†“์น˜๊ณ  ์žˆ๋‹ˆ?

nfs PV์˜ ๊ฒฝ์šฐ 1.8์—์„œ ์‹œ์ž‘ํ•˜๋Š” mountOptions ํ•„๋“œ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์†Œํ”„ํŠธ ๋งˆ์šดํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. nfs ๋ณผ๋ฅจ์„ ๋™์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋Š” ๊ฒฝ์šฐ StorageClass.mountOptions์—์„œ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๊ทธ๋Ÿฌ๋‚˜ NFS๋กœ ๋งˆ์šดํŠธ๋˜๋Š” PV๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
๋‚ด NFS ์„œ๋ฒ„ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋™์  ํ”„๋กœ๋น„์ €๋‹์ด ์—†์Šต๋‹ˆ๋‹ค.

Google GCP + GKE๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. PVC๋Š” NFS๋กœ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด๋Š” ์ปจํ…Œ์ด๋„ˆ์— ext4๋กœ ๋งˆ์šดํŠธ ๋œ ๋ธ”๋ก IO ์ธ PV๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

nfs-server (์ž์ฒด ํฌ๋“œ)์—์„œ ๋งˆ์šดํŠธ๋˜๋Š” ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ ์„ธํŠธ๋Š” PV๋กœ ์ธ์‹ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ณผ๋ฅจ์œผ๋กœ ๋ด…๋‹ˆ๋‹ค.

์ด nfs-client๊ฐ€ ๋งˆ์šดํŠธ์— ๋Œ€ํ•ด 'pvc'๋ฅผ ํ‘œ์‹œํ•˜๋„๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ ๋งˆ์šดํŠธ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ StorageClass๋กœ ๋ณผ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ๋น ์กŒ๋‚˜์š”?

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: nfs-client
  labels:
    app: nfs-client
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-client
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client
    spec:
      containers:
        - name: nfs-client
          image: busybox:latest
          imagePullPolicy: IfNotPresent
          command: ["sleep", "3600"]
          volumeMounts:
            - name: nfs
              mountPath: /registry
      volumes:
        - name: nfs
          nfs:
            server: nfs-server.default.svc.cluster.local
            path: /

nfs ๋งˆ์šดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์ปจํ…Œ์ด๋„ˆ ์„ธํŠธ์˜ @donbowman ์„ ์‚ฌ์šฉํ•˜๋ฉด mountOptions ์„ธํŠธ๋กœ ํ•ด๋‹น nfs ๋ณผ๋ฅจ์— ๋Œ€ํ•œ PV๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ๋ชจ๋“  ํฌ๋“œ์—์„œ ํ•ด๋‹น nfs PV์— ๋Œ€ํ•œ PVC๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์  ํ”„๋กœ๋น„์ €๋‹์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ™์€:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  storageClassName: ""
  capacity:
    # Capacity doesn't actually matter for nfs
    storage: 500G 
  accessModes:
    - ReadWriteMany
  mountOptions:
    - soft
  nfs:
    server: nfs-server.default.svc.cluster.local
    path: /
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-claim
spec:
  # It's necessary to specify "" as the storageClassName
  # so that the default storage class won't be used
  storageClassName: ""
  volumeName: nfs-pv
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 500G

๊ฐ์‚ฌ! ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ–ˆ์ง€๋งŒ (์ง€๊ธˆ์€ ์†Œํ”„ํŠธ ๋งˆ์šดํŠธ๋ผ๋Š” ์˜๋ฏธ์—์„œ) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์šดํŠธ (๋…ธ๋“œ์—์„œ ๊ด€์ฐฐ ๋จ)๊ฐ€ ์ด์ œ ๋ถ€๋“œ๋Ÿฝ์Šต๋‹ˆ๋‹ค.

nfs-server.default.svc.cluster.local:/ on /home/kubernetes/containerized_mounter/rootfs/var/lib/kubelet/pods/cbeda204-638d-11e8-9758-42010aa200b4/volumes/kubernetes.io~nfs/nfs-pv type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.162.0.2,local_lock=none,addr=10.19.241.155)

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์„ ์‚ญ์ œํ•ด๋„ nfs-client๊ฐ€ Terminating ์ƒํƒœ์—์„œ ์˜์›ํžˆ ๋ฉˆ์ถฐ ์žˆ์Šต๋‹ˆ๋‹ค.

k8s-nfs-test.yaml.txt

์ฒจ๋ถ€๋Š” ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ yaml์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” '๋งŒ๋“ค๊ธฐ'๋ฅผํ–ˆ๊ณ , ๊ทธ๊ฒƒ์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งˆ์šดํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๊ด€์ฐฐํ•˜๊ณ , ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ด€์ฐฐ ํ•œ ๋‹ค์Œ, '์‚ญ์ œ'๋ฅผํ–ˆ์Šต๋‹ˆ๋‹ค.

nfs-server ํฌ๋“œ๋Š” ์‚ญ์ œ๋˜์ง€๋งŒ nfs-client๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ๋ฅผ ๋ณด๋ฉด ๋งˆ์šดํŠธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

# umount -f /home/kubernetes/containerized_mounter/rootfs/var/lib/kubelet/pods/cbeda204-638d-11e8-9758-42010aa200b4/volumes/kubernetes.io~nfs/nfs-pv
umount: /home/kubernetes/containerized_mounter/rootfs/var/lib/kubelet/pods/cbeda204-638d-11e8-9758-42010aa200b4/volumes/kubernetes.io~nfs/nfs-pv: target is busy
        (In some cases useful info about processes that
         use the device is found by lsof(8) or fuser(1).)

@donbowman ์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ ์˜ต์…˜์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ ์˜ต์…˜์€ ์„œ๋ฒ„์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†์„ ๋•Œ๋งŒ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ nfs ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•ด์ œํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ•์ œ ๋งˆ์šดํŠธ ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š”๋ฐ, ํ˜„์žฌ๋Š” ํ†ต๊ณผ ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ํ•ด๋‹น ๋งˆ์šดํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (๋จผ์ € nfs ํด๋ผ์ด์–ธํŠธ, ๊ทธ ๋‹ค์Œ nfs ์„œ๋ฒ„).

๋‚˜๋Š” timeo = 30 ๋ฐ intr์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์„ ์ž ๊ทธ๊ณ , ๋…ธ๋“œ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ๊ธฐ๋ณธ ๋งˆ์šดํŠธ์—์„œ umount -f -l์„ ์ˆ˜ํ–‰ ํ•œ ๋‹ค์Œ ํฌ๋“œ์—์„œ kubectl delete --force --grace-period 0์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํฌ๋“œ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋งˆ์šดํŠธ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์‚ญ์ œ์‹œ ๋งˆ์šดํŠธ ํ•ด์ œ (๋˜๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ ํ›„ ๊ฐ•์ œ ๋งˆ์šดํŠธ ํ•ด์ œ) ๋  ์ˆ˜์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๋Ÿฐ ํŒŸ์„ ๊ฐ€์ง€๊ณ ์žˆ์–ด์„œ ๋ชจ๋“  ์ข…๋ฃŒ ํŒŸ์„ ์ •๋ฆฌํ•˜๋Š” ๋ช…๋ น์„ ๋‚ด ๋†“์•„์•ผํ–ˆ๋‹ค.

kubectl get pods -o json | jq -c '.items[] | select(.metadata.deletionTimestamp) | .metadata.name' | xargs -I '{}' kubectl delete pod --force --grace-period 0 '{}'

Google์˜ ์ƒˆ๋กœ์šด ํŒŒ์ผ ์ €์žฅ์†Œ ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด umount์—†์ด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€

@donbowman iirc, ๋ฌธ์ œ๋Š” nfs ํด๋ผ์ด์–ธํŠธ ํฌ๋“œ๋ณด๋‹ค ๋จผ์ € nfs ์„œ๋ฒ„ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ nfs ์„œ๋ฒ„๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ๋” ์ด์ƒ ํฌ๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ „์ฒด Firestore isntance๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ํ•œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ €์žฅ์†Œ๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • kubernetes ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ๋งˆ์ง€๋ง‰์— ๋‹ค์šดํ•˜๋ฉด ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋˜ํ•œ ๋ฌธ์ œ๋Š” ์ˆœ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ nfs ํด๋ผ์ด์–ธํŠธ ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์ „ํ˜€ ๋งˆ์šดํŠธ ํ•ด์ œ๋˜์ง€ ์•Š๊ณ  ๋งˆ์šดํŠธ๊ฐ€ ๋…ธ๋“œ์— ๋งค๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŒŒ์ผ ์ €์žฅ์†Œ / ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋งค๋‹ฌ๋ฆฐ ๋งˆ์šดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค (์„œ๋ฒ„๊ฐ€ ์•„์ง ์žˆ๋‹ค๊ณ  ๊ฐ€์ •). ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•˜๋”๋ผ๋„ ๋งค๋‹ฌ๋ฆฐ ๋งˆ์šดํŠธ๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค.

PVC ๋ฐ PV์™€ ํ•จ๊ป˜ ๋™์  ํ”„๋กœ๋น„์ €๋‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  Pod๊ฐ€์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์™„๋ฃŒ ๋  ๋•Œ๊นŒ์ง€ PVC (๋ฐ ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€)๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋น„์ €๋‹์„ ์ง์ ‘ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋ชจ๋“  ํฌ๋“œ์—์„œ ์„œ๋ฒ„ ์‚ฌ์šฉ์„ ์™„๋ฃŒ ํ•  ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„๋ฅผ ์‚ญ์ œํ•˜์ง€ ์•Š๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. # 65936

๊ฐ•์ œ ์‚ญ์ œ๋Š” kubectl delete po $pod --grace-period=0 --force . --now ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. # 65936์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ Unknown ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ๋…ธ๋“œ๋ฅผ ์ฃฝ์ด์ง€ ์•Š๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

1.10.5์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (์žฅ์น˜๊ฐ€ '์‚ฌ์šฉ ์ค‘'์ด๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋“œ ๋‚ด์˜ ํŒŒ์ผ์„ ๋งˆ์šดํŠธ ํ•ด์ œ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Œ). ๋‚˜๋ฅผ ์œ„ํ•ด --grace-period=0 --force ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์šดํŠธ ์ง€์ ์ด ๊ณ„์† ์กด์žฌํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋‚˜๋Š” 90000 ๊ฐœ๊ฐ€ ๋„˜๋Š” ๋งˆ์šดํŠธ ํฌ์ธํŠธ๋กœ ๋๋‚ฌ๊ณ , ์ด๋กœ ์ธํ•ด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋Š๋ ค์กŒ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ pod์˜ ํด๋”์—์„œ ์ฐพ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ•ด๋‹น ํŒŒ์ผ์„ ์žฌ๊ท€ ์ ์œผ๋กœ ๋งˆ์šดํŠธ ํ•ด์ œ ํ•œ ๋‹ค์Œ pod ํด๋”๋ฅผ ์žฌ๊ท€ ์ ์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ œ ๊ฒฝ์šฐ์—๋Š” ํ•˜์œ„ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ํŒŒ์ผ์ด์žˆ๋Š” ๊ธฐ์กด ํด๋”์— configmap์„ ๋งˆ์šดํŠธํ•˜๊ณ  ๊ธฐ์กด ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฎ์–ด ์”๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 1.8.6์—์„œ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
์›๋ž˜ ํฌ์Šคํ„ฐ์—๋Š” ํฌ๋“œ๊ฐ€ ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ '์ข…๋ฃŒ'์ƒํƒœ์— ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ๋ฉฐ์น ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋™ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ฒฐ๊ตญ ์ •๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ log aggregator (fluentd์™€ ์œ ์‚ฌ)๋กœ ์ธํ•ด /var/lib/docker/containers ํด๋”๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  ํฌ๋“œ์—๋Š” ๋งŽ์€ ๋งˆ์šดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/6691cb9460df75579915fd881342931b98b4bfb7a6fbb0733cc6132d7c17710c/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/4cbbdf53ee5122565c6e118a049c93543dcc93bfd586a3456ff4ca98d59810a3/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/b2968b63a7a1f673577e5ada5f2cda50e1203934467b7c6573e21b341d80810a/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/4d54a4eabed68b136b0aa3d385093e4a32424d18a08c7f39f5179440166de95f/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/0e5487465abc2857446940902d9b9754b3447e587eefc2436b2bb78fd4d5ce4d/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/c73ed0942d77bf43f9ba016728834c47339793f9f1f31c4e566d73be492cf859/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/f9ab13f7f145b44beccc40c158287c4cfcc9dc465850f30d691961a2cabcfc14/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/aa449af555702d04f95fed04d09a3f1d5ae38d677484fc6cc9fc6d4b42182820/shm
shm                      64.0M         0     64.0M   0% /var/lib/docker/containers/f6608e507348b43ade3faa05d0a11b674c29f2038308f138174e8b7b8233633f/shm

ํ•„์ž์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ํฌ๋“œ๋Š” kubernetes์— ์˜ํ•ด ์ž˜ ์ œ๊ฑฐ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ํฌ๋“œ๋Š” "์ข…๋ฃŒ ์ค‘"์ƒํƒœ๋กœ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค.

https://github.com/kubernetes/kubernetes/issues/45688 ๊ณผ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋„์ปค 17๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).

๋น„๋ฐ€์ด ์—†์–ด์„œ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์— ๊ทธ ๋น„๋ฐ€์„ ๋งŒ๋“  ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์œผ๋กœ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ™์–ด์žˆ๋Š” ํฌ๋“œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

user<strong i="6">@laptop</strong>:~$ kubectl -n storage get pod
NAME                     READY     STATUS        RESTARTS   AGE
minio-65b869c776-47hql   0/1       Terminating   5          1d
minio-65b869c776-bppl6   0/1       Terminating   33         1d
minio-778f4665cd-btnf5   1/1       Running       0          1h
sftp-775b578d9b-pqk5x    1/1       Running       0          28m
user<strong i="7">@laptop</strong>:~$ kubectl -n storage delete pod minio-65b869c776-47hql --grace-period 0 --force
pod "minio-65b869c776-47hql" deleted
user<strong i="8">@laptop</strong>:~$ kubectl -n storage delete pod minio-65b869c776-bppl6 --grace-period 0 --force
pod "minio-65b869c776-bppl6" deleted
user<strong i="9">@laptop</strong>:~$ kubectl -n storage get pod
NAME                     READY     STATUS    RESTARTS   AGE
minio-778f4665cd-btnf5   1/1       Running   0          2h
sftp-775b578d9b-pqk5x    1/1       Running   0          30m
user<strong i="10">@laptop</strong>:~$

Azure ACS์—์„œ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

10:12 $ kubectl describe pod -n xxx triggerpipeline-3737304981-nx85k 
Name:                      triggerpipeline-3737304981-nx85k
Namespace:                 xxx
Node:                      k8s-agent-d7584a3a-2/10.240.0.6
Start Time:                Wed, 27 Jun 2018 15:33:48 +0200
Labels:                    app=triggerpipeline
                           pod-template-hash=3737304981
Annotations:               kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"xxx","name":"triggerpipeline-3737304981","uid":"b91320ff-7a0e-11e8-9e7...
Status:                    Terminating (expires Fri, 27 Jul 2018 09:00:35 +0200)
Termination Grace Period:  0s
IP:                        
Controlled By:             ReplicaSet/triggerpipeline-3737304981
Containers:
  alpine:
    Container ID:  docker://8443c7478dfe1a57a891b455366ca007fe00415178191a54b0199d246ccbd566
    Image:         alpine
    Image ID:      docker-pullable://alpine<strong i="6">@sha256</strong>:e1871801d30885a610511c867de0d6baca7ed4e6a2573d506bbec7fd3b03873f
    Port:          <none>
    Command:
      sh
    Args:
      -c
      apk add --no-cache curl && echo "0 */4 * * * curl -v --trace-time http://myapi:80/api/v1/pipeline/start " | crontab - && crond -f
    State:          Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-p9qtw (ro)
Conditions:
  Type           Status
  Initialized    True 
  Ready          False 
  PodScheduled   True 
Volumes:
  default-token-p9qtw:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-p9qtw
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:          <none>

--now ํ•˜๊ฑฐ๋‚˜ ์œ ์˜ˆ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

09:00 $  kubectl delete pod -n xxx triggerpipeline-3737304981-nx85k --force --grace-period=0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "triggerpipeline-3737304981-nx85k" deleted

์—ฌ์ „ํžˆ ํฌ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜์–ด ํ•ด๋‹น ๋ฐฐํฌ๋„ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ํฌ๋“œ ์ด๋ฒคํŠธ์—์„œ ์ด๋Ÿฌํ•œ "ํฌ๋“œ๋ฅผ ์ฃฝ์ผ ํ•„์š”๊ฐ€์žˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€์— ์‹œ๋‹ฌ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? _Kubernetes_๊ฐ€ ํฌ๋“œ๋ฅผ ์ฃฝ์ผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ๋Š๋ผ๋Š”๊ฐ€, ์•„๋‹ˆ๋ฉด ํฌ๋“œ๋ฅผ ์ฃฝ์—ฌ์•ผํ•œ๋‹ค๊ณ ?

์ด๊ฒƒ์€ ๋ฉฐ์น  ์ „์— ๋‚˜์—๊ฒŒ ์ผ์–ด ๋‚ฌ๊ณ  ์‚ญ์ œ๋ฅผ ํฌ๊ธฐํ•˜๊ณ  ํฌ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์€ ์‚ฌ๋ผ์ ธ ๊ฒฐ๊ตญ ์‚ญ์ œ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ๋‚˜์—๊ฒŒ ์ผ์–ด๋‚ฌ๋‹ค. --force --now ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. kubelet ๋กœ๊ทธ์—์„œ ์˜์‹ฌ์Šค๋Ÿฌ์šด ๋‹ค์Œ ์ค„์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

8 ์›” 6 ์ผ 15:25:37 kube-minion-1 kubelet [2778] : W0806 15 : 25 : 37.986549 2778 docker_sandbox.go : 263] NetworkPlugin cni๊ฐ€ "backend-foos-227474871-gzhw0_default"ํฌ๋“œ์˜ ์ƒํƒœ ํ›„ํฌ์—์„œ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค : ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ช…๋ น ์ถœ๋ ฅ nsenter : ์—ด ์ˆ˜ ์—†์Œ : ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์—†์Œ

์ด๋กœ ์ธํ•ด ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/openshift/origin/issues/15802

๋‚˜๋Š” openshift๊ฐ€ ์•„๋‹ˆ๋ผ Openstack์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋„์ปค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ผ๋Š” ์กฐ์–ธ์„ ์ฃผ์—ˆ๋‹ค.
Docker๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด "์ข…๋ฃŒ ์ค‘"์— ๊ฐ‡ํžŒ ํฌ๋“œ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ผ ๋ฟ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๋” ์ด์ƒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋ฒฝ 3์‹œ์— ๊นจ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๋ง์€ ์•„๋‹ˆ์ง€๋งŒ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋ฉด์€ ๋‚ด ํฌ๋“œ ์ข…๋ฃŒ GracePeriodSeconds๊ฐ€ (30 ์ดˆ)๋กœ ์„ค์ •๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ณด๋‹ค ์˜ค๋ž˜ ์‚ด์•„๋‚จ ์œผ๋ฉด์ด cronjob์€ --force --grace-period = 0์ด๊ณ  ์™„์ „ํžˆ ์ฃฝ์ž…๋‹ˆ๋‹ค.

apiVersion: batch/v1beta1 kind: CronJob metadata: name: stuckpod-restart spec: concurrencyPolicy: Forbid successfulJobsHistoryLimit: 1 failedJobsHistoryLimit: 5 schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: stuckpod-restart image: devth/helm:v2.9.1 args: - /bin/sh - -c - echo "$(date) Job stuckpod-restart Starting"; kubectl get pods --all-namespaces=true | awk '$3=="Terminating" {print "sleep 30; echo "$(date) Killing pod $1"; kubectl delete pod " $1 " --grace-period=0 --force"}'; echo "$(date) Job stuckpod-restart Complete"; restartPolicy: OnFailure

Kubernetes v1.10.2์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ๋ฌด๊ธฐํ•œ ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฉˆ์ถ”๊ณ  ํ•ด๋‹น ๋…ธ๋“œ์˜ kubelet์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

Aug 21 13:25:55 node-09 kubelet[164855]: E0821 13:25:55.149132  
164855 nestedpendingoperations.go:267] 
Operation for "\"kubernetes.io/configmap/b838409a-a49e-11e8-bdf7-000f533063c0-configmap\" 
(\"b838409a-a49e-11e8-bdf7-000f533063c0\")" failed. No retries permitted until 2018-08-21 
13:27:57.149071465 +0000 UTC m=+1276998.311766147 (durationBeforeRetry 2m2s). Error: "error 
cleaning subPath mounts for volume \"configmap\" (UniqueName: 
\"kubernetes.io/configmap/b838409a-a49e-11e8-bdf7-000f533063c0-configmap\") pod 
\"b838409a-a49e-11e8-bdf7-000f533063c0\" (UID: \"b838409a-a49e-11e8-bdf7-000f533063c0\") 
: error deleting /var/lib/kubelet/pods/b838409a-a49e-11e8-bdf7-000f533063c0/volume-
subpaths/configmap/pod-master/2: remove /var/lib/kubelet/pods/b838409a-a49e-11e8-bdf7-
000f533063c0/volume-subpaths/configmap/pod-master/2: device or resource busy"

๋ถˆ๋งŒ์—†์ด ๋ฌธ์ œ์˜ ํ•˜์œ„ ๊ฒฝ๋กœ ๋ณผ๋ฅจ์„ ์ˆ˜๋™์œผ๋กœ ๋งˆ์šดํŠธ ํ•ด์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋ฆฌ๋ˆ…์Šค๋Š” ์‚ฌ์šฉ ์ค‘์ด๋ผ๊ณ  ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์ด๋ ‡๊ฒŒํ•˜๋ฉด kubelet์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํฌ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ํ‘œ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— Kubernetes๊ฐ€ ์ •๋ฆฌ๋ฅผ ๊ณ„์†ํ•˜๋„๋ก ์œ ๋„ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Docker๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์ค‘๋‹จ์œผ๋กœ ์ธํ•ด ์‹ค์ œ๋กœ ํ—ˆ์šฉ๋˜๋Š” ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฐธ๊ณ  : ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด๊ฐ€ docker ps -a ์—์„œ ์‚ฌ๋ผ ์กŒ๋‹ค๋Š” ์ฆ๊ฑฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ Docker ๋ฌธ์ œ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Docker ๋ฒ„์ „ 17.03.2-ce๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ : ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ kubelet ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ OS๊ฐ€ ์•„๋‹Œ ๋ณผ๋ฅจ์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋„๋ก ๋…ธ๋“œ๋ฅผ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค ( /var/lib/kubelet ๋Š” ๋‹ค๋ฅธ ๋ณผ๋ฅจ์˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์ž„). --root-dir ๋ฅผ kubelet์— ์ „๋‹ฌํ•˜๋„๋ก ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ†ตํ•˜์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ง์ ‘ ์ด๋™ํ•˜๊ณ  kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ๋ฉˆ์ถฐ์žˆ๋Š” ํฌ๋“œ๋ฅผ ์ง€ ์› ์Šต๋‹ˆ๋‹ค. Docker๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š”์—†์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ minikube์—์„œ ์ผ๋ถ€ ํฌ๋“œ๋ฅผ ๋กœ์ปฌ๋กœ ์‹คํ–‰ํ•˜๋ฉด์„œ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ์œผ๋กœ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๋ฝ ๋œ ๋ณผ๋ฅจ์œผ๋กœ ๋งˆ์šดํŠธ ๋œ configmap / secret์œผ๋กœ ์ธํ•ด Terminating ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํฌ๋“œ๊ฐ€ ๋ถ™์–ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ / ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• / ์†”๋ฃจ์…˜ ์—†์Œ ์œ„๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ผํ•˜์ง€ ๊ฒŒ์‹œ ๋œ ์ด ํ•˜๋‚˜ .

์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • kubectl get pods ์‹คํ–‰ํ–ˆ์„ ๋•Œ Terminating ์ƒํƒœ์˜ ํฌ๋“œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ๋‚ด๊ฐ€ ๋‹ฌ๋ฆด ๋•Œ docker ps | grep -i {{pod_name}} ๋ถˆ๊ตฌ์„์—์„œ ํฌ๋“œ์˜ ์–ด๋Š Terminating ์˜ํ•ด ๋ณธ ์ƒํƒœ kubectl get pods minikube VM์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์•˜๋‹ค.

docker ps ์ƒํƒœ์—์„œ Terminating ์ƒํƒœ์— ๊ฐ‡ํžŒ ํฌ๋“œ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์‹คํ–‰ ์ค‘์ด ์•„๋‹Œ๋ฐ kubectl get pods ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ ์ด์œ ๋ฅผ ์„ค๋ช… ํ•  ์ˆ˜์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

4 ๊ฐœ์˜ ๋ฐฐํฌ์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ชจ๋“  ๋งˆ์šดํŠธ์— ๋Œ€ํ•ด "๋กœ์ปฌ ๋ณผ๋ฅจ"์—์„œ "ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ"๋กœ ์ „ํ™˜ํ–ˆ๋Š”๋ฐ, ์ด์ œ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

๋น„๋ฐ€์ด ์—†์–ด์„œ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์— ๊ทธ ๋น„๋ฐ€์„ ๋งŒ๋“  ํ›„ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์œผ๋กœ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค.

๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๊ฐ€ "์ข…๋ฃŒ ์ค‘"์ƒํƒœ ์ธ ๊ฒฝ์šฐ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์— ๋น„๋ฐ€์„ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๊นŒ?

kubectl delete --all pods --namespace = xxxxx --force --grace-period = 0

๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

"--grace-period = 0"์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ์ค‘์š”

kubectl์€ "๊ฒฝ๊ณ  : ์ฆ‰์‹œ ์‚ญ์ œ๋Š” ์‹คํ–‰์ค‘์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฌด๊ธฐํ•œ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."๋ผ๊ณ  ๊ฒฝ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. --force --grace-period=0 ์‚ฌ์šฉํ•  ๋•Œ.
์ •๋ง๋กœ ์ผ์–ด๋‚  ์ง€ ์•„๋ฌด๋„ ๋งํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์‹ค์ œ๋กœ ์ผ๋ถ€ ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋กœ ์‚ญ์ œ๊ฐ€ ์ง€์—ฐ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
"--force --grace-period = 0"ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ "kubectl delete"๋ฅผ ์‹คํ–‰ํ•˜๋ฉด
์ž์› ๊ฐ์ฒด๋Š” ์ฆ‰์‹œ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

ํฌ๋“œ๊ฐ€ ์ฆ‰์‹œ ์‚ญ์ œ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ค์ œ๋กœ ๋ถ€์ •ํ™•ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

@windoze , --force --grace-period = 0 ์˜ต์…˜์ด๋ฉด pod API ๊ฐ์ฒด๊ฐ€ API ์„œ๋ฒ„์—์„œ ์ฆ‰์‹œ ์‚ญ์ œ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ kubelet์€ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. kubelet์ด ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ ํฌ๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณ„์† ์‹คํ–‰ ์ค‘์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Kubelet์€ ๊ฐ€๋Šฅํ•  ๋•Œ๋งˆ๋‹ค ๊ณ„์†ํ•ด์„œ ํฌ๋“œ๋ฅผ ์ •๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ kubelet์ด ์˜ค์ž‘๋™ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ญ์ œ๊ฐ€ ์˜์›ํžˆ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?
ํฌ๋“œ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ช‡ ๊ฐœ์˜ ๊ฑฐ๋Œ€ํ•œ ํฌ๋“œ๊ฐ€ ์‹คํ–‰ ์ค‘์ด๊ณ  ๋ชจ๋“  ๋…ธ๋“œ์— 2 ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์งˆ๋ฌธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‚ญ์ œ์— ์‹คํŒจํ•˜๋ฉด ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ๋˜๊ณ ์ด ๋ฌธ์ œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ•˜๋ฉด ๊ฒฐ๊ตญ์ด ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜์žˆ๋Š” ๋…ธ๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์„œ๋น„์Šค๊ฐ€ ์™„์ „ํžˆ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

ํ‰๋ฒ”ํ•œ ๋„์ปค ํ™˜๊ฒฝ์—์„œ kill -9 ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ํฌ๋“œ๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ k8s์—๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@windoze ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์ž์ฃผ ์‹คํŒจํ•œ ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ kubelet์ด ์‹คํ–‰ ์ค‘์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ kubelet์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฃฝ์ด๋ ค๊ณ ํ–ˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์€ ๋ช‡ ๋‹ฌ ์ „์— ๋‚ด ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ kubelet์ด ์‹คํ–‰ ์ค‘์ด์—ˆ์ง€๋งŒ docker ๋ฐ๋ชฌ์€ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์˜ค๋ฅ˜ ๋กœ๊ทธ์—†์ด ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.
๋‚ด ํ•ด๊ฒฐ์ฑ…์€ ๋…ธ๋“œ์— ๋กœ๊ทธ์ธํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ ์ข…๋ฃŒํ•˜๊ณ  ๋„์ปค ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ผ๋ถ€ ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ๋‹ค์‹œ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

kubectl delete pods <podname> --force --grace-period=0 ๊ฐ€) ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค!

@ shinebayar-g, --force ์˜ ๋ฌธ์ œ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณ„์† ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Kubernetes์—๊ฒŒ์ด ํฌ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žŠ์–ด ๋ฒ„๋ฆฌ๋ผ๊ณ  ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์€ ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” VM์— SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Docker์—์„œ ์ง„ํ–‰๋˜๋Š” ์ž‘์—…์„ ์กฐ์‚ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. docker kill ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋ฉด ํฌ๋“œ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ๋‹ค์‹œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

@agolomoodysaada ์•„, ๋ง์ด ๋˜๋„ค์š”. ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •๋ง๋กœ ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ์ •๋ง ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ, 2018 ๋…„ ๋ง์— kube 1.12๊ฐ€ ๋‚˜์™”๊ณ  ... ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘ ์—ฌ์ „ํžˆ ๋ฉˆ์ถค ํฌ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

--force --grace-period = 0 ๋˜๋Š” --force --now ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

root @ r15-c70-b03-master01 : ~ # kubectl -n infra-lmat get pod node-exporter-zbfpx
์ด๋ฆ„ ์ค€๋น„ ์ƒํƒœ ๋‹ค์‹œ ์‹œ์ž‘ ๋‚˜์ด
node-exporter-zbfpx 0/1 ์ข…๋ฃŒ 0 4d

root @ r15-c70-b03-master01 : ~ # kubectl -n infra-lmat delete pod node-exporter-zbfpx --grace-period = 0 --force
๊ฒฝ๊ณ  : ์ฆ‰์‹œ ์‚ญ์ œ๋Š” ์‹คํ–‰์ค‘์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฌด๊ธฐํ•œ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
"node-exporter-zbfpx"ํฌ๋“œ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

root @ r15-c70-b03-master01 : ~ # kubectl -n infra-lmat get pod node-exporter-zbfpx
์ด๋ฆ„ ์ค€๋น„ ์ƒํƒœ ๋‹ค์‹œ ์‹œ์ž‘ ๋‚˜์ด
node-exporter-zbfpx 0/1 ์ข…๋ฃŒ 0 4d

root @ r15-c70-b03-master01 : ~ # kubectl -n infra-lmat delete pod node-exporter-zbfpx --now --force
"node-exporter-zbfpx"ํฌ๋“œ๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

root @ r15-c70-b03-master01 : ~ # kubectl -n infra-lmat get pod node-exporter-zbfpx
์ด๋ฆ„ ์ค€๋น„ ์ƒํƒœ ๋‹ค์‹œ ์‹œ์ž‘ ๋‚˜์ด
node-exporter-zbfpx 0/1 ์ข…๋ฃŒ 0 4d

root @ r15-c70-b03-master01 : ~ #

ํฌ๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์—์„œ ์ข…๋ฃŒ ์ž ์„น์…˜์„ ์‚ญ์ œํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

macOS์—์„œ kubectl 1.13 alpha ๋ฐ Docker for Desktop์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ์ „ํžˆ 100 % ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹ (๋™์ผํ•œ ๋ฆฌ์†Œ์Šค ์ •์˜)์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์žฌํ˜„์„ฑ์ด๋ž€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ Mac ์šฉ Docker๋ฅผ ๊ณต์žฅ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๋™์ผํ•œ ๋ฆฌ์†Œ์Šค (๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋‹ค์‹œ ์„ค์ •ํ•˜๋ฉด ๋™์ผํ•œ ์ •๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์™œ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋‚ด ์ •๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

#!/usr/bin/env bash
set -e

function usage() {
    echo "Usage: $0 <containers|envs|volumes|all>"
}

if [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ "$1" = "help" ]; then
    echo "$(usage)"
    exit 0
fi

if [ $# -lt 1 ] || [ $# -gt 1 ]; then
    >&2 echo "$(usage)"
    exit 1
fi

MODE=$1

function join_with {
    local IFS="$1"
    shift
    echo "$*"
}

resources=()

if [ "$MODE" = "containers" ] || [ "$MODE" = "all" ]; then
    resources+=(daemonsets replicasets statefulsets services deployments pods rc)
fi

if [ "$MODE" = "envs" ] || [ "$MODE" = "all" ]; then
    resources+=(configmaps secrets)
fi

if [ "$MODE" = "volumes" ] || [ "$MODE" = "all" ]; then
    resources+=(persistentvolumeclaims persistentvolumes)
fi

kubectl delete $(join_with , "${resources[@]}") --all

ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— Docker์—์„œ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋“œ ์ข…๋ฃŒ์‹œ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์€ kubectl๋ฟ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ describe ๋•Œ ์ƒํƒœ๋Š” Status: Terminating (lasts <invalid>) ๋กœ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ๋‚˜์—๊ฒŒ ์ผ์–ด๋‚ฌ๋‹ค. NFS ๊ณต์œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ percona pmm-server๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ ํ–ˆ๋Š”๋ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. (์ด ์†Œํ”„ํŠธ์›จ์–ด์—๋Š” ์˜๊ตฌ์  ์ธ ์ฃผ์žฅ์ด ์ ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). ๋‹ค์‹œ ํ•œ๋ฒˆ ์ข‹์€ ์˜ค๋ž˜๋œ kubectl delete pods <podname> --force --grace-period=0 ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๊ทธ๋Ÿฌ๋‚˜ ์งˆ๋ฌธ์€์ด ํฌ๋“œ๊ฐ€ ์–ด๋””์— ์‚ด๊ณ  ์žˆ๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ shinebayar-g, SSH๊ฐ€์žˆ๋Š” VM์— SSH๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  docker ps ํ•ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„์š” .. ์ €๋Š” VM์ด โ€‹โ€‹๊ฑฐ์˜ ์—†์–ด์„œ ์–ด๋–ค VM์ด ์ ํ•ฉํ•œ ์ง€ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. :)

@ shinebayar-g ์ด๊ฒƒ์€ ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
kubectl describe pod/some-pod-name | grep '^Node:'

๊ฐ™์€ ๋ฌธ์ œ.

docker ps ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์€ "Dead"์ƒํƒœ์— ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค (0).

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ Docker ๋กœ๊ทธ ํ•ญ๋ชฉ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

level=warning msg="container kill failed because of 'container not found' or 'no such process': Cannot kill container 

์•ˆํƒ€๊น๊ฒŒ๋„ ์„ ์ด ์ž˜ ๋ ธ์ง€๋งŒ, ๋ฌธ์ œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” k8s v1.11.0์—์„œ ์—ฌ์ „ํžˆ์ด ๋ฌธ์ œ๋กœ ๊ณ ์ฐฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํฌ๋“œ๋ฅผ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

  • ํฌ๋“œ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ํšŒ์ˆ˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ kubectl get ํ‘œ์‹œ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘ ์ผ๋ถ€๋Š” ํฌ๋“œ๊ฐ€ ์‹คํ–‰์ค‘์ธ Kubelet์—๋งŒ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฏ€๋กœ ๋กœ์ปฌ์—์„œ ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ์„ ๋”ฐ๋ผ์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•˜๋ฉด kubectl edit ์‹คํŒจํ•œ ํฌ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  finalizers: โ†’ - foregroundDeletion

๋‘ ๊ฐ€์ง€ ์ถ”๊ฐ€ ํŒ :

  • ์ •์ƒ ์ƒํƒœ์—์„œ ํ˜ผ๋ž€์Šค๋Ÿฝ์ง€ ์•Š์€ Kubelet์€์ฃผ๊ธฐ์ ์ธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋†“์ง€ ์•Š๋Š” ๊ฒƒ์€ ๊ผฌํˆฌ๋ฆฌ๊ฐ€ ๊ณ ์ฐฉ ๋œ ์ฆ์ƒ์ž…๋‹ˆ๋‹ค.
  • kubectl delete ๋ช…๋ น์„ ๋‹ค๋ฅธ ์ฐฝ์—์„œ ์ฐจ๋‹จํ•˜์—ฌ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ด๋ฏธ ์—ฌ๋Ÿฌ ๋ฒˆ "์‚ญ์ œ"ํ•œ ํฌ๋“œ์—์„œ๋„). kubectl delete ๋Š” ๋งˆ์ง€๋ง‰ ์ค‘๋‹จ ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•ด์ œ๋˜๋Š” ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ด๊ฒƒ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.
์ˆ˜ํ–‰ ๋œ ์ž‘์—… :

  1. ssh๋ฅผ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ œ๊ฑฐ
  2. ๊ทธ ํ›„ kubectl get pods ์€ (๋Š”) ๋‚ด stucked ์ปจํ…Œ์ด๋„ˆ 0/1 terminating (์ด์ „ 1/1 terminating )๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  3. ํฌ๋“œ์—์„œ finalizers ์„น์…˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ œ foregroundDeletion ($ kubectl edit pod / name)-> ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํฌ๋“œ ๋ชฉ๋ก์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ฐฐํฌ ์‚ญ์ œ-> ๋ชจ๋“  ๋ฐฐํฌ ๊ด€๋ จ ํ•ญ๋ชฉ์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.0", GitCommit:"91e7b4fd31fcd3d5f436da26c980becec37ceefe", GitTreeState:"clean", BuildDate:"2018-06-27T20:17:28Z", GoVersion:"go1.10.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-21T09:05:37Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

์šฐ๋ฆฌ๋Š” ๋น„๋ฐ€์„ ๋งˆ์šดํŠธํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (๋งŽ์€ ํฌ๋“œ์™€ ๊ณต์œ  ๋จ). ํฌ๋“œ๋Š” terminating ์ƒํƒœ๊ฐ€๋˜์–ด ์˜์›ํžˆ ๋จธ๋ฌผ๋Ÿฌ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ฒ„์ „์€ v1.10.0์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ฌ๋ผ์ง€์ง€๋งŒ --grace-period=0 --force ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š” ํ•œ API ์„œ๋ฒ„์˜ ์ฐธ์กฐ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜๊ตฌ์  ์ธ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์Œ, ์ตœ๊ทผ์— ์Šคํ…Œ์ด์ง• ํด๋Ÿฌ์Šคํ„ฐ์—์„œ runc exploit CVE-2019-5736์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋“ฏ์ด ์ต์Šคํ”Œ๋กœ์ž‡์€ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์—์„œ runc ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๊ดด์ ์ธ ์•…์šฉ. ๊ทธ ํ›„ ๋‚˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ด์ƒํ•œ ํ–‰๋™์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์˜ํ–ฅ์„๋ฐ›๋Š” ๋…ธ๋“œ ์ œ๊ฑฐ ๋„์ปค๋ฅผ ๋น„์šฐ๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ ํ›„ ๋ชจ๋“  ํฌ๋“œ์™€ k8s ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ด์ „๊ณผ ๊ฐ™์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋„์ปค ๋ฌธ์ œ์ด๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค!. ๊ฐ์‚ฌ

์—ฌ๊ธฐ์— ์ƒˆ๋กœ์šด v1.13.3์„ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ๋„ ์ผ์–ด๋‚œ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ๊ณผ ๊ด€๋ จ์ด์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๋ช‡ ๊ฐœ์˜ ํฌ๋“œ์— ๋™์ผํ•œ NFS ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์กด์žฌํ•˜์ง€ ์•Š๋Š” ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๋ ค๋Š” ๋ฐฐํฌ๋ฅผ ์ƒ์„ฑ ํ•  ๋•Œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฐฐํฌ / ์„œ๋น„์Šค๋ฅผ ์‚ญ์ œํ•˜๋ฉด Terminating ํฌ๋“œ๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค.

v.1.12.3๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  --grace-period = 0 --force ๋˜๋Š” --now ๋‘˜ ๋‹ค ์œ ํšจํ•˜์ง€ ์•Š์Œ, ๋˜ํ•œ ์œ ํšจํ•˜์ง€ ์•Š์€ statefulset์„ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค.

SMB (๋‚ด ์ƒ๊ฐ์—?) ๋งˆ์šดํŠธ (https://docs.microsoft.com/en-us/azure/aks/azure-files-volume์— ๋”ฐ๋ผ Azure Files ๊ณต์œ )์™€ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

13.3๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ

ํฌ๋“œ๊ฐ€ ๊ฑฐ์˜ 2 ์ผ ๋™์•ˆ "์ข…๋ฃŒ ์ค‘"์ƒํƒœ๋ผ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Linux ์ปดํ“จํ„ฐ (Debian)์—์„œ Minikube๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Kubectl ๋ฒ„์ „ :
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:00:57Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Minikube ๋ฒ„์ „ :
minikube version: v0.34.1

@ardalanrazavi ์™œ ์ดํ‹€ ๋™์•ˆ ์ข…๋ฃŒ๋ฉ๋‹ˆ๊นŒ? 5 ๋ถ„ ํ›„์—๋„ ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฐ•์ œ ์‚ญ์ œ

@nmors

์™œ ์ดํ‹€ ๋™์•ˆ ์ข…๋ฃŒ๋ฉ๋‹ˆ๊นŒ?

๊ทธ๊ฑด ์ข‹์€ ์งˆ๋ฌธ์ด์•ผ. ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๊ทธ๊ฒƒ์„ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

5 ๋ถ„ ํ›„์—๋„ ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฐ•์ œ ์‚ญ์ œ

๊ฐ•์ œ๋กœ ์‚ญ์ œํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ผ๊ด€์„ฑ์—†๋Š” ์ƒํƒœ๊ฐ€๋ฉ๋‹ˆ๋‹ค. (minikube๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.)

๋ฟก ๋นต๋€จ

์†”์งํžˆ ์—ฌ๊ธฐ์— ๋‹ค๋ฅธ ํ•ด๊ฒฐ์ฑ…์ด ์—†์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ํด๋Ÿฌ์Šคํ„ฐ๋Š” "์ผ๊ด€๋˜์ง€ ์•Š์€ ์ƒํƒœ"๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ์ •ํ™•ํžˆ ๋ฌด์Šจ ๋œป์ธ์ง€ ์ดํ•ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ•์ œ ์ข…๋ฃŒ๊ฐ€ ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์ง€๋งŒ, ์ œ ๊ฒฝ์šฐ์—๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์ž์›์„ ํŒŒ๊ดดํ•˜๊ณ  ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” NFS ๋งˆ์šดํŠธ๊ฐ€์žˆ๋Š” ํฌ๋“œ์—์„œ๋งŒ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์šด์„ ์‹œ๋„ํ•˜๊ธฐ ์ „์— NFS ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ข…๋ฃŒ๋˜๋Š” ๋ชจ๋“  ํฌ๋“œ๊ฐ€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ์žˆ๊ณ  ๋…ธ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๊ฒฉ๋ฆฌ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@nmors @AndrewSav ๋‚˜๋„ ๊ฐ•์ œ ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— nfs ์„œ๋ฒ„๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋งˆ์šดํŠธ ํ•ด์ œ๊ฐ€ ์˜์›ํžˆ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ nfs ์„œ๋ฒ„๊ฐ€ ํ•ญ์ƒ ๋งˆ์ง€๋ง‰์— ์‚ญ์ œ๋˜๋„๋ก ์‚ญ์ œ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

@ msau42 ๋‚ด NFS ์„œ๋ฒ„๋Š” k8s ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋ชจ๋‘ ํ•จ๊ป˜ ๋ถ„๋ฆฌ ๋œ ์–ดํ”Œ๋ผ์ด์–ธ์Šค ๋ฐ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

k8s ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ผ๋ถ€์ธ์ง€ ์—ฌ๋ถ€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. nfs ์„œ๋ฒ„์— ์•ก์„ธ์Šค ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์‹œ ์•ก์„ธ์Šค ํ•  ์ˆ˜์žˆ์„ ๋•Œ๊นŒ์ง€ ๋งˆ์šดํŠธ ํ•ด์ œ๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

@ msau42 ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜จ๋ผ์ธ์œผ๋กœ ๋Œ์•„ ์™”์„ ๋•Œ๋„ ํฌ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์ข…๋ฃŒ ์ƒํƒœ์— ์žˆ์—ˆ์Œ์„ ํ™•์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ƒˆ ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋˜๊ณ  ์ž˜ ๋งˆ์šดํŠธ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ฟ  ๋ฒ„๋„ค ํ…Œ์Šค์—์„œ NFS ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉ ํ•˜๊ณ ์ด ์˜ˆ์ œ๊ฐ€ ๋’ค ๋”ฐ๋ฅด๋Š”๋ฐ

@ shinebayar-g ๋‚˜๋Š” ๊ทธ ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ž์ง€๋งŒ ์ด์ œ๋Š” PV์™€ PVC๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฐํฌ์—์„œ ์ง์ ‘ ๋ณผ๋ฅจ์„ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

        volumeMounts:
        - mountPath: /my-pod-mountpoint
          name: my-vol
      volumes:
        - name: my-vol
          nfs:
            server: "10.x.x.x"
            path: "/path/on/server"
            readOnly: false

๊ทธ ์ดํ›„๋กœ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๊ตฌ์„ฑ์ด ๋” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์•ฝ 1 ์ฃผ์ผ ์ •๋„๋งŒ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋ ๊นŒ์š”?

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ /var/log/syslog ์—์„œ ๋งˆ์ง€๋ง‰ ์ค„์„ ๊ฐ€์ ธ์™€ "Operation for ... remove / var / lib / kubelet / pods ... directory not empty"๋˜๋Š” "nfs. ..device is busy ... unmount.nfs "๋˜๋Š”"stale NFS file handle ".
๊ทธ๋Ÿฐ ๋‹ค์Œ pod_id ๋˜๋Š” pod ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋งˆ์šดํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€ (์˜ˆ mount | grep $pod_id ) ํ™•์ธํ•œ ๋‹ค์Œ ๋ชจ๋“  ๋งˆ์šดํŠธ๋ฅผ ํ•ด์ œํ•˜๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ kubelet์ด ๋‚˜๋จธ์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  pod๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. Terminating ์ƒํƒœ์˜ ํฌ๋“œ๊ฐ€ ๋” ์ด์ƒ ์—†์Šต๋‹ˆ๋‹ค.

์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ cron์— ๋„ฃ์–ด ๋งค๋ถ„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ 3-4 ๊ฐœ์›”์ด ์ง€๋‚œ ์ง€๊ธˆ์€ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ  :์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ™•์ธํ•ด์•ผํ•˜์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ๋ฒ„์ „ 1.10์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋Š˜์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๋‚ด ๋ฌธ์ œ๋Š” ์ผ๋ถ€ ์ž‘์—…์„ ๋ณด๋ฅ˜ํ•˜๊ณ  ํฌ๋“œ๋ฅผ ์˜์›ํžˆ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋‘์—ˆ์„ ์ˆ˜์žˆ๋Š” ๋น„๋ฐ€ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

--grace-period = 0 --force ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.

root@ip-10-31-16-222:/var/log# journalctl -u kubelet | grep dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds Mar 20 15:50:31 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: I0320 15:50:31.179901 528 reconciler.go:207] operationExecutor.VerifyControllerAttachedVolume started for volume "config-volume" (UniqueName: "kubernetes.io/configmap/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-config-volume") pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds" (UID: "e3d7c57a-4b27-11e9-9aaa-0203c98ff31e") Mar 20 15:50:31 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: I0320 15:50:31.179935 528 reconciler.go:207] operationExecutor.VerifyControllerAttachedVolume started for volume "default-token-xjlgc" (UniqueName: "kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-default-token-xjlgc") pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds" (UID: "e3d7c57a-4b27-11e9-9aaa-0203c98ff31e") Mar 20 15:50:31 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: I0320 15:50:31.179953 528 reconciler.go:207] operationExecutor.VerifyControllerAttachedVolume started for volume "secret-volume" (UniqueName: "kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume") pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds" (UID: "e3d7c57a-4b27-11e9-9aaa-0203c98ff31e") Mar 20 15:50:31 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:50:31.310200 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:50:31.810156118 +0000 UTC m=+966792.065305175 (durationBeforeRetry 500ms). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxx-com\" not found" Mar 20 15:50:31 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:50:31.885807 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:50:32.885784622 +0000 UTC m=+966793.140933656 (durationBeforeRetry 1s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxxxx-com\" not found" Mar 20 15:50:32 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:50:32.987385 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:50:34.987362044 +0000 UTC m=+966795.242511077 (durationBeforeRetry 2s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxx-com\" not found" Mar 20 15:50:35 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:50:35.090836 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:50:39.090813114 +0000 UTC m=+966799.345962147 (durationBeforeRetry 4s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxx-com\" not found" Mar 20 15:50:39 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:50:39.096621 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:50:47.096593013 +0000 UTC m=+966807.351742557 (durationBeforeRetry 8s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxx-com\" not found" Mar 20 15:50:47 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:50:47.108644 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:51:03.10862005 +0000 UTC m=+966823.363769094 (durationBeforeRetry 16s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxx-com\" not found" Mar 20 15:51:03 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:51:03.133029 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:51:35.133006645 +0000 UTC m=+966855.388155677 (durationBeforeRetry 32s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxxx-com\" not found" Mar 20 15:51:35 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:51:35.184310 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:52:39.184281161 +0000 UTC m=+966919.439430217 (durationBeforeRetry 1m4s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxx-com\" not found" Mar 20 15:52:34 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:52:34.005027 528 kubelet.go:1640] Unable to mount volumes for pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)": timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc]; skipping pod Mar 20 15:52:34 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:52:34.005085 528 pod_workers.go:186] Error syncing pod e3d7c57a-4b27-11e9-9aaa-0203c98ff31e ("dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)"), skipping: timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc] Mar 20 15:52:39 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:52:39.196332 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:54:41.196308703 +0000 UTC m=+967041.451457738 (durationBeforeRetry 2m2s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxxx-com\" not found" Mar 20 15:54:41 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:54:41.296252 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:56:43.296229192 +0000 UTC m=+967163.551378231 (durationBeforeRetry 2m2s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxxx-com\" not found" Mar 20 15:54:48 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:54:48.118620 528 kubelet.go:1640] Unable to mount volumes for pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)": timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc]; skipping pod Mar 20 15:54:48 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:54:48.118681 528 pod_workers.go:186] Error syncing pod e3d7c57a-4b27-11e9-9aaa-0203c98ff31e ("dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)"), skipping: timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc] Mar 20 15:56:43 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:56:43.398396 528 nestedpendingoperations.go:267] Operation for "\"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\" (\"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\")" failed. No retries permitted until 2019-03-20 15:58:45.398368668 +0000 UTC m=+967285.653517703 (durationBeforeRetry 2m2s). Error: "MountVolume.SetUp failed for volume \"secret-volume\" (UniqueName: \"kubernetes.io/secret/e3d7c57a-4b27-11e9-9aaa-0203c98ff31e-secret-volume\") pod \"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds\" (UID: \"e3d7c57a-4b27-11e9-9aaa-0203c98ff31e\") : secrets \"data-platform.xxxx-com\" not found" Mar 20 15:57:05 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:57:05.118566 528 kubelet.go:1640] Unable to mount volumes for pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)": timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc]; skipping pod Mar 20 15:57:05 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:57:05.118937 528 pod_workers.go:186] Error syncing pod e3d7c57a-4b27-11e9-9aaa-0203c98ff31e ("dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)"), skipping: timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc] Mar 20 15:59:22 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:59:22.118593 528 kubelet.go:1640] Unable to mount volumes for pod "dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)": timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume config-volume default-token-xjlgc]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc]; skipping pod Mar 20 15:59:22 ip-10-31-16-222.eu-west-2.compute.internal kubelet[528]: E0320 15:59:22.118624 528 pod_workers.go:186] Error syncing pod e3d7c57a-4b27-11e9-9aaa-0203c98ff31e ("dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds_default(e3d7c57a-4b27-11e9-9aaa-0203c98ff31e)"), skipping: timeout expired waiting for volumes to attach or mount for pod "default"/"dp-tag-change-ingestion-com-depl-5bd59f74c4-589ds". list of unmounted volumes=[secret-volume config-volume default-token-xjlgc]. list of unattached volumes=[secret-volume config-volume default-token-xjlgc]

--force --grace-period=0 ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ๋…ธ๋“œ์— ssh๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์—ฌ์ „ํžˆ ์‹คํ–‰์ค‘์ธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ๋…ธ๋“œ์— ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ปค๋„์€ ์„ฌ๋ชจ-์ž‘์šฉ์ œ๋ฅผ ์ฃฝ ์˜€๋Š”๋ฐ, ๊ทธ๊ฒƒ์€ ํฌ๋“œ ์ข…๋ฃŒ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
๋ฐฉ๊ธˆ ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์ง€ ์› ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝํ—˜์ƒ ๋…ธ๋“œ์˜ sudo systemctl restart docker ๊ฐ€ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค (ํ•˜์ง€๋งŒ ๋ถ„๋ช…ํžˆ ๋‹ค์šด ํƒ€์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค).

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ A) ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์— ๊ฐ€๊น๊ฑฐ๋‚˜ B) CPU๊ฐ€ ๋ถ€์กฑํ•œ ์ž„์˜ ๋…ธ๋“œ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (์•„์ง ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜์žˆ๋Š” ์ผ๋ถ€ kswapd0 ๋ฌธ์ œ์˜ bc ๋˜๋Š” ์‹ค์ œ๋กœ๋“œ).

90 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ถ€์‹คํ•ด์ง‘๋‹ˆ๋‹ค.
/remove-lifecycle stale ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ฉ๊ณ  ๊ฒฐ๊ตญ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle stale

๋น„ํ™œ์„ฑ ๋ฌธ์ œ๋Š” 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ถ€ํŒจํ•ฉ๋‹ˆ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์ฉ์€ ๋ฌธ์ œ๋Š” ์ถ”๊ฐ€๋กœ 30 ์ผ ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค๋ฉด /close ํ•˜์—ฌ ์ข…๋ฃŒํ•˜์„ธ์š”.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/ lifecycle rotten

์ฉ์€ ๋ฌธ์ œ๋Š” 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/๋‹ซ๊ธฐ

@ fejta-bot :์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ฉ์€ ๋ฌธ์ œ๋Š” 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋‹ซํž™๋‹ˆ๋‹ค.
/reopen ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ ๋‹ค.
/remove-lifecycle rotten ํ•˜์—ฌ ์ตœ์‹  ๋ฌธ์ œ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

sig-testing, kubernetes / test-infra ๋ฐ / ๋˜๋Š” fejta์— ํ”ผ๋“œ๋ฐฑ์„
/๋‹ซ๊ธฐ

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes / test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์ด๊ฒƒ์€ k8s 1.15.4 ๋ฐ RHEL Docker 1.13.1๊ณผ ๊ฐ™์€ ๋งค์šฐ ํ™œ๋ฐœํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํฌ๋“œ๋Š” ํ•ญ์ƒ Terminating ์žˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ ์‚ฌ๋ผ์กŒ๊ณ  k8s๋Š” ์Šค์Šค๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์‚ฌ๋žŒ์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŒ…์„ ์‹ค์ œ PITA๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

/๋‹ค์‹œ ์—ด๋‹ค
/ remove-lifecycle rotten

@tuminoid : ๋ณธ์ธ์ด ์ €์ž‘ํ•˜๊ฑฐ๋‚˜ ๊ณต๋™ ์ž‘์—…์ž๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ด์Šˆ / PR์„ ๋‹ค์‹œ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

์ด๊ฒƒ์€ k8s 1.15.4 ๋ฐ RHEL Docker 1.13.1๊ณผ ๊ฐ™์€ ๋งค์šฐ ํ™œ๋ฐœํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํฌ๋“œ๋Š” ํ•ญ์ƒ Terminating ์žˆ์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ ์‚ฌ๋ผ์กŒ๊ณ  k8s๋Š” ์Šค์Šค๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์‚ฌ๋žŒ์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŒ…์„ ์‹ค์ œ PITA๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

/๋‹ค์‹œ ์—ด๋‹ค
/ remove-lifecycle rotten

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes / test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

/๋‹ค์‹œ ์—ด๋‹ค
/ remove-lifecycle rotten

@mikesplain :์ด ๋ฌธ์ œ๋ฅผ

์— ๋Œ€ํ•œ ์‘๋‹ต ์ด :

/๋‹ค์‹œ ์—ด๋‹ค
/ remove-lifecycle rotten

PR ๋Œ“๊ธ€์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ kubernetes / test-infra ์ €์žฅ์†Œ์— ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ 19 ๋ถ„ ์ด์ƒ ์ข…๋ฃŒ ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์—ˆ์ง€๋งŒ Kubernetes๋Š” ์—ฌ์ „ํžˆ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Name:                      worker-anton-nginx-695d8bd9c6-7q4l9
Namespace:                 anton
Priority:                  0
Status:                    Terminating (lasts 19m)
Termination Grace Period:  30s
IP:                        10.220.3.36
IPs:                       <none>
Controlled By:             ReplicaSet/worker-anton-nginx-695d8bd9c6
Containers:
  worker:
    Container ID:   docker://12c169c8ed915bc290c14c854a6ab678fcacea9bb7b1aab5512b533df4683dd6
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Terminated
      Exit Code:    0
      Started:      Mon, 01 Jan 0001 00:00:00 +0000
      Finished:     Mon, 01 Jan 0001 00:00:00 +0000
    Ready:          False
    Restart Count:  0
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Events:          <none>

๋กœ๊ทธ๊ฐ€ ์•„๋‹Œ ์ด๋ฒคํŠธ ์—†์Œ ...

Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-17T17:16:09Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.8-gke.2", GitCommit:"188432a69210ca32cafded81b4dd1c063720cac0", GitTreeState:"clean", BuildDate:"2019-10-21T20:01:24Z", GoVersion:"go1.12.11b4", Compiler:"gc", Platform:"linux/amd64"}
a

kubelet ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ณผ๋ฅจ ๋งˆ์šดํŠธ ํ•ด์ œ ์‹คํŒจ ๋˜๋Š” ๊ณ ์•„ ํฌ๋“œ์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋„ ๋ดค์–ด
E1206 03 : 05 : 40.247161 25653 kubelet_volumes.go : 154] ๊ณ ์•„ ํฌ๋“œ "0406c4bf-17e3-4613-a526-34e8a6cee208"์ด ๋ฐœ๊ฒฌ๋˜์—ˆ์ง€๋งŒ ๋ณผ๋ฅจ ๊ฒฝ๋กœ๊ฐ€ ์—ฌ์ „ํžˆ ๋””์Šคํฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ์œ ์‚ฌํ•œ ์ด 8 ๊ฐœ์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋ ค๋ฉด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜์„ธ์š”.

๋‚˜๋„ ๋ดค์–ด. kubectl์ด Docker ์ปจํ…Œ์ด๋„ˆ์— ์—ฐ๊ฒฐํ•  ์ˆ˜์—†๊ณ  ํ˜„์žฌ ์ข…๋ฃŒ ํฌ๋“œ๊ฐ€ ์กด์žฌํ•˜์—ฌ ์ƒˆ ํฌ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ์งœ์ฆ๋‚˜.

์ด๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  Kubernetes๊ฐ€ ์ด์ „ ํฌ๋“œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์„ฑ๊ฐ€์‹  ์ผ์ž…๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๊ฐ€ ๊ณง ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋™์ผํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ฆ‰์‹œ ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ ๋…ธ๋“œ๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์–ผ๋งˆ ๋™์•ˆ ๋…ธ๋“œ๋ฅผ ์žฌ์„ค์ •ํ•˜๋ฉด ์–ผ๋งˆ ๋™์•ˆ ๋ชจ๋“  ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค

ํŒŸ (Pod)์— ํŒŒ์ด๋„ ๋ผ์ด์ € (Finalizers)๊ฐ€ ์‚ญ์ œ๋˜์ง€ ์•Š๋„๋กํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฐœ๊ธ‰ ๋œ ํฌ๋“œ์— ์ข…๋ฃŒ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ ์‚ญ์ œ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl delete pods <pod> --grace-period=0 --force

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ณธ ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฏ€๋กœ 100 %๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํฌ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋‹ค์‹œ ์ค„์–ด๋“ค ๋•Œ๊นŒ์ง€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ ์‚ญ์ œ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl delete pods <pod> --grace-period=0 --force

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ณธ ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฏ€๋กœ 100 %๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค

kubectl delete pods <pod> --grace-period=0 --force ์€ (๋Š”) ์ผ์‹œ์ ์ธ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค. ์˜ํ–ฅ์„๋ฐ›๋Š” ํฌ๋“œ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ ์žฅ์•  ์กฐ์น˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ˆ˜๋™ ์ˆ˜์ •์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์œก์‚ฌ ํฌ๋“œ๊ฐ€ minikube ๋ฐ Azure AKS์—์„œ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2020 ๋…„ 3 ์›” 9 ์ผ ์—…๋ฐ์ดํŠธ
preStop ์ˆ˜๋ช…์ฃผ๊ธฐ ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ข…๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์œก์‚ฌ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ์— ๊ฐ‡ํ˜€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๊ธฐ๊ฐ„ ์‹ ํ˜ธ์— ์‘๋‹ตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋™์ผํ•œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ข…๋ฃŒ๋˜๋ฉฐ ๊ทผ๋ณธ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ, ๋งค์šฐ ์งœ์ฆ๋‚˜

๊ฐ™์€ ๋ฌธ์ œ :( 3 ์ผ ์ดํ›„๋กœ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์ค‘ ๋ฉˆ์ถค

์ฐธ๊ณ ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ ์‚ญ์ œ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl delete pods <pod> --grace-period=0 --force

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ณธ ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฏ€๋กœ 100 %๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋˜ํ•œ --force ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํฌ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. The resource may continue to run on the cluster indefinetely ๊ฒฝ๊ณ ์— ๋ช…์‹œ๋œ๋Œ€๋กœ.

ํŽธ์ง‘ : ๋‚˜๋Š” ์ •๋ณด๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๋™๊ธฐ ๋ถ€์—ฌ๋Š” ์•„๋ž˜ elrok123s ์ฃผ์„์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ ์‚ญ์ œ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl delete pods <pod> --grace-period=0 --force

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๊ฒฝํ—˜ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ฒ„์ „ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ๋ณธ ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์—ˆ์œผ๋ฏ€๋กœ 100 %๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋˜ํ•œ --force ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํฌ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. The resource may continue to run on the cluster indefinetely ๊ฒฝ๊ณ ์— ๋ช…์‹œ๋œ๋Œ€๋กœ.

๋งž์ง€๋งŒ ์š”์ ์€ --grace-period=0 ๊ฐ•์ œ๋กœ ์‚ญ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :) ๊ท€ํ•˜์˜ ๋Œ“๊ธ€์ด ์™œ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ์˜ ์˜๊ฒฌ์€ ๊ด€๋ จ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
(๋„์ปค ๋˜๋Š” ๊ธฐํƒ€) ์•„์ง ์‹คํ–‰ ์ค‘์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์™„์ „ํžˆ ์‚ญ์ œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ..,
"์ œ๊ฑฐ ๋œ"ํ™˜์ƒ์€ ๋•Œ๋•Œ๋กœ ์•ฝ๊ฐ„ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

2020 ๋…„ 6 ์›” 4 ์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 9:16, Conner Stephen McCabe <
[email protected]> ์ž‘์„ฑ :

์ฐธ๊ณ ๋กœ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ ์‚ญ์ œ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl delete pods--grace-period = 0 --force

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ํฌ๋“œ๋ฅผ ์ข…๋ฃŒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ
๋‹ค์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฒ„์ „ ๋ฌธ์ œ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ 100 %๋Š” ์•„๋‹™๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ณด์•˜๋‹ค.

๋˜ํ•œ --force ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํฌ๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
ํ™•์ธ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฐธ์กฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
์ดํ•ด). ๊ฒฝ๊ณ ์— ๋ช…์‹œ๋œ๋Œ€๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฌด๊ธฐํ•œ.

๋งž์ง€๋งŒ ์š”์ ์€ --grace-period = 0์ด ๊ฐ•์ œ๋กœ ์‚ญ์ œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฐœ์ƒ :) ๊ท€ํ•˜์˜ ์˜๊ฒฌ์ด ์™œ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค : /

โ€”
๋Œ“๊ธ€์„ ๋‹ฌ์•˜ ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubernetes/issues/51835#issuecomment-638840136 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AAH34CDZF7EJRLAQD7OSH2DRU6NCRANCNFSM4DZKZ5VQ
.

๊ทธ๊ฒƒ์€ ์ฐธ์œผ๋กœ ๋‚˜์˜ ์š”์ ์ž…๋‹ˆ๋‹ค. ์ด --force ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ๋ถ€ํ•˜๊ฐ€ ๋…ธ๋“œ์— ๋ถ€๋‹ด์„ ์ค„ ์œ„ํ—˜์ด ์žˆ์œผ๋ฉฐ ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ "๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋‹ค๋ฉด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค"๋Š” ์ˆ˜์ •์œผ๋กœ ๊ฐ์ง€ํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด --grace-period=0 ๊ฐ€ ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ @ elrok123์„ ๊ฐ•์ œ๋กœ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
์ด ๊ฒฝ์šฐ ๋‚ด ์˜๊ฒฌ์€ ์ž˜๋ชป๋œ ์ง€์‹์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ๊ด€๋ จ์ด ์—†์ง€๋งŒ --grace-period=0 ์‚ฌ์šฉํ•  ๋•Œ ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋– ๋‚  ์œ„ํ—˜์ด ๋‚จ์•„ ์žˆ์œผ๋ฉด ๋‚ด ์š”์ ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

@oscarlofwenhamn ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, ์ด๊ฒƒ์€ ํ•ด๋‹น ํฌ๋“œ์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—์„œ sigkill์„ ํšจ๊ณผ์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์ข€๋น„ ํ”„๋กœ์„ธ์Šค ์‚ญ์ œ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค (์ถœ์ฒ˜ : 'ํฌ๋“œ ์ข…๋ฃŒ'์˜ ํฌ์ธํŠธ 6- https: //kubernetes.io/docs/concepts

๊ฐ€์ด๋“œ๋Š” ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ ํฌ๋“œ ์ž์ฒด๋Š” ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค (์ถœ์ฒ˜ : '๊ฐ•์ œ ์‚ญ์ œ'-https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/ ) ๊ทธ๋Ÿฌ๋‚˜ grace-period = 0์€ ์ฆ‰์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ ํšจ๊ณผ์ ์œผ๋กœ ํฌ๋“œ๋ฅผ ์‹œ๊ทธ ํ‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์„œ์™€ ๋‚ด๊ฐ€ ๋งŒ๋‚œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์„ ์ฝ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํŠน๋ณ„ํžˆ ๋งŒ๋‚œ ๋ฌธ์ œ๋Š” ๋˜ํ’€์ด๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ํ•œ ๋ฒˆ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ REAL ์ˆ˜์ •์€ ๋ฐฐํฌ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์— ๋„๋‹ฌ ํ•  ๋•Œ๊นŒ์ง€์ด ๋ฐฉ๋ฒ•์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ elrok123 Brilliant-๋‚˜๋Š” ์‹ค์ œ๋กœ ์ •๋ณด๊ฐ€ ์ข‹์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ์„ค๋ช…์„ ์ฐธ์กฐํ•˜์—ฌ ์œ„์˜ ์‘๋‹ต์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์‘๋‹ต๊ณผ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ํฌ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™๊ธฐ ๋ถ€์—ฌ ๋ฐฉ๋ฒ•์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฑด๋ฐฐ!

ํ˜„์žฌ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ ์ƒํƒœ์—์„œ 2 ์ผ ์ด์ƒ ๋ฉˆ์ถฐ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋Š” Terminating ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ํฌ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์—†์Œ ... ์•„๋ฌด๊ฒƒ๋„. ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ... ์ข…๋ฃŒ ์ค‘์ž…๋‹ˆ๋‹ค.

@JoseFMP ๋Š” kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์—์„œ yaml์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ข…๋ฃŒ์ž๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@JordyBottelier ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ข…๋ฃŒ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ Terminating

@JoseFMP๋Š” ์—ฌ๊ธฐ์—์„œ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ  (ํšจ๊ณผ์ ์œผ๋กœ ํ•ต์„ ์ œ๊ฑฐํ•˜๋Š”) ์Šคํฌ๋ฆฝํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ./script_name์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.:
```

! / bin / bash

-eo pipefail ์„ค์ •

die () {echo "$ *"1> & 2; ์ถœ๊ตฌ 1; }

need () {
์–ด๋Š "$ 1"&> / dev / null || die "๋ฐ”์ด๋„ˆ๋ฆฌ '$ 1'์ด ๋ˆ„๋ฝ๋˜์—ˆ์ง€๋งŒ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค."
}

์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ ํ™•์ธ

"jq"ํ•„์š”
"์ปฌ"ํ•„์š”
"kubectl"ํ•„์š”

PROJECT = "$ 1"
์‹œํ”„ํŠธ

ํ…Œ์ŠคํŠธ -n "$ PROJECT"|| die "๋ˆ„๋ฝ ๋œ ์ธ์ˆ˜ : kill-ns"

kubectl ํ”„๋ก์‹œ &> / dev / null &
PROXY_PID = $!
killproxy () {
$ PROXY_PID ์ฃฝ์ด๊ธฐ
}
killproxy EXIT ํŠธ๋žฉ

sleep 1 # ํ”„๋ก์‹œ์— 1 ์ดˆ์ฃผ๊ธฐ

kubectl get namespace "$ PROJECT"-o json | jq 'del (.spec.finalizers [] | select ( "kubernetes"))'| curl -s -k -H "Content-Type : application / json"-X PUT -o / dev / null --data-binary @ -http : // localhost : 8001 / api / v1 / namespaces / $ PROJECT / finalize && echo "์‚ฌ๋ฉธ ๋œ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค : $ PROJECT"```

๋˜ํ•œ ์ธํ”„๋ผ์—์„œ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ณ ์ŠคํŠธ๋กœ ์‹คํ–‰๋˜๋Š” ํ•˜๋‚˜์˜ ํฌ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฉˆ์ถฐ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค (์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐฐํฌ ๊ทœ๋ชจ์—์„œ๋„ ์š”์ฒญ์ด ์ œ๊ณต๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 0์˜).

์ด ํฌ๋“œ์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ ๋˜๋Š” ์ œ์–ด ๊ถŒํ•œ์ด ์—†์œผ๋ฉฐ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌป์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ธํ”„๋ผ์—์„œ ๋” ์ด์ƒ ํ‘œ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ณ ์ŠคํŠธ๋กœ ์‹คํ–‰๋˜๋Š” ํ•˜๋‚˜์˜ ํฌ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฉˆ์ถฐ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค (์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐฐํฌ ๊ทœ๋ชจ์—์„œ๋„ ์š”์ฒญ์ด ์ œ๊ณต๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 0์˜).

์ด ํฌ๋“œ์— ๋Œ€ํ•œ ๊ฐ€์‹œ์„ฑ ๋˜๋Š” ์ œ์–ด ๊ถŒํ•œ์ด ์—†์œผ๋ฉฐ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌป์Šต๋‹ˆ๋‹ค.

๋…ธ๋“œ์˜ ๋„์ปค์— ์•ก์„ธ์Šคํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‚ด dink (https://github.com/Agilicus/dink)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Docker ์•ก์„ธ์Šค๊ฐ€์žˆ๋Š” ์…ธ์ด์žˆ๋Š” ํฌ๋“œ๋ฅผ ๊ฐ€์ ธ ์˜ค๊ฑฐ๋‚˜ ํฌ๋“œ์— ๋Œ€ํ•œ ssh๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
docker ps -a
docker stop ####

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

๋ฐฉํ–ฅ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฒฐ๊ตญ ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ์–ด๋–ป๊ฒŒ ๊ทธ๊ฒƒ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š”์ง€ ์•ฝ๊ฐ„ ์˜์•„ํ•ดํ–ˆ๋‹ค (๋‚˜์—๊ฒŒ ํฌ๋“œ๋Š” ์™„์ „ํžˆ ๋ณด์ด์ง€ ์•Š์•˜๋‹ค). ์ƒ์‚ฐ ๊ณผ์ •์—์„œ ์ผ์ด ์กฐ๊ธˆ ๋ฐ”๋นด๊ณ  ์ง„๋‹จ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†์—ˆ์ง€๋งŒ ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๋ฉด ๋” ๋‚˜์€ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ์ฆ์ƒ์ด ๋ณด์ด๋ฉด ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋™์•ˆ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค (ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๋ชจ๋‘ ์ค€๋น„ / ํ™œ๋ ฅ์— ๋Œ€ํ•œ exec ์œ ํ˜• ํ”„๋กœ๋ธŒ๊ฐ€ ์žˆ์Œ). ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. kubelet [1445] : I1022 10 : 26 : 32.203865 1445 prober.go : 124] "test-service-74c4664d8d-58c96_default (822c3c3d-082a-4dc9-943c-19f04544713e) : test์— ๋Œ€ํ•œ ์ค€๋น„ ํ”„๋กœ๋ธŒ -service "์‹คํŒจ (์‹คํŒจ) : OCI ๋Ÿฐํƒ€์ž„ exec ์‹คํŒจ : exec ์‹คํŒจ : ์ค‘์ง€ ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Œ : ์•Œ ์ˆ˜ ์—†์Œ. ์ด ๋ฉ”์‹œ์ง€๋Š” ์˜์›ํžˆ ๋ฐ˜๋ณต๋˜๋ฉฐ exec ํ”„๋กœ๋ธŒ๋ฅผ tcpSocket์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด pod๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค (ํ…Œ์ŠคํŠธ์— ๋”ฐ๋ผ ํ›„์† ์กฐ์น˜๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค). ํฌ๋“œ์— "์‹คํ–‰ ์ค‘"์ปจํ…Œ์ด๋„ˆ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์ง€๋งŒ "์ค€๋น„"๊ฐ€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. "์‹คํ–‰ ์ค‘"์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋กœ๊ทธ๋Š” ์„œ๋น„์Šค๊ฐ€ ์ค‘์ง€ ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” node๋กœ๋“œ๊ฐ€ ๋†’๊ณ  vm.max_map_count๊ฐ€ ๊ธฐ๋ณธ๊ฐ’๋ณด๋‹ค ๋†’์€ ๊ฐ’์œผ๋กœ ์„ค์ •๋œ containerd 1.4.0์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. containerd-shim์€ stdout fifo๋ฅผ ๋“œ๋ ˆ ์ด๋‹ํ•˜์ง€ ์•Š๊ณ  ๋“œ๋ ˆ ์ด๋‹๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ธ”๋ก์„ ์ฐจ๋‹จํ•˜์ง€๋งŒ dockerd๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ๋ผ ์กŒ๋‹ค๋Š” containerd์˜ ์ด๋ฒคํŠธ / ์Šน์ธ.

@discanto ์ด ์ •๋ณด๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ์ถ”์ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@ Random-Liu

๋ฒ„๊ทธ๊ฐ€ 3 ๋…„ ์ด์ƒ ์—ด๋ ธ์Šต๋‹ˆ๋‹ค. ์ข…๋ฃŒ์‹œ ํฌ๋“œ๊ฐ€ ๋ฉˆ์ถ˜ ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋ก€๋ฅผ๋ณด๊ณ  ํ•  ๋•Œ ์ผ๋ถ€ kubelet ๋กœ๊ทธ๋ฅผ ๊ฒŒ์‹œํ•˜์—ฌ ํฌ๋“œ๊ฐ€ ๋ฉˆ์ท„๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
5 / 5 - 2 ๋“ฑ๊ธ‰