์ด ์์์ ๋ฒ๊ทธ ์ ๊ณ ๋ฐ ๊ธฐ๋ฅ ์์ฒญ ์ ์ฉ์ ๋๋ค! ๋์์ด ํ์ํ ๊ฒฝ์ฐ [Stack Overflow] (https://stackoverflow.com/questions/tagged/kubernetes) ๋ฐ [๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋] (https://kubernetes.io/docs/tasks/debug-application- ํด๋ฌ์คํฐ / ๋ฌธ์ ํด๊ฒฐ /).
๋ฒ๊ทธ ๋ณด๊ณ ์ ๋๋ ๊ธฐ๋ฅ ์์ฒญ์ ๋๊น? :
/ ์ข ๋ฅ์ ๋ฒ๊ทธ
๋ฌด์จ ์ผ์ด ์ผ์ด ๋ฌ์ต๋๊น?
ํฌ๋๊ฐ ์ค๋ซ๋์ ์ข
๋ฃ๋์ง ์์
์์ ํ ์ผ :
ํฌ๋๊ฐ ์ข
๋ฃ ๋จ
์ฌํ ๋ฐฉ๋ฒ (๊ฐ๋ฅํ ํ ์ต์ํ์ผ๋ก ์ ํํ๊ฒ) :
์ฐ๋ฆฌ๊ฐ ์์์ผ ํ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๊น? :
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"
ํ๊ฒฝ :
kubectl version
) :ํด๋ผ์ฐ๋ ์ ๊ณต ์
์ฒด ๋๋ ํ๋์จ์ด ๊ตฌ์ฑ ** :
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
@ 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 ํด๋ฌ์คํฐ์ ๋ ๋ค ์์ต๋๋ค.
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
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ฌ์ค ๋๋ ํ ๋ฆฌ๊ฐ ๋น์ด ์์ง ์๊ณ ๋ง์ดํธ ํด์ ๋๊ณ "ํ์ ๊ฒฝ๋ก"๋๋ ํ ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค!
์ด๋ฌํ ๋์์ ๋ํ ์ค๋ช
์ค ํ๋ :
๋ ๋ง์ ๋ก๊ทธ :
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์์์ด ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ํด๊ฒฐํ ์์์์ต๋๋ค.
docker ps | grep {pod name}
๋ฅผ ์คํํ์ฌ Docker ์ปจํ
์ด๋ ID ์ป๊ธฐ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
๋ฅผ ์ดํด๋ณด์ญ์์ค. '์ปจํ
์ด๋๋ฅผ ์ฃฝ์ผ ์ ์์ต๋๋ค.
์์ ํ๊ธฐ ์ํด ๊ฐ ๋ฉ๋ชจ์์ ๋์ปค๋ฅผ ๋ค์ ์์ํ์ต๋๋ค. 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"}
์คํ ํ ๋ค์ ์ญ์ ํ์ญ์์ค. ์ญ์ ์ '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 ์ํ์์ ์์ํ ๋ฉ์ถฐ ์์ต๋๋ค.
์ฒจ๋ถ๋ ๋ด๊ฐ ์ฌ์ฉํ 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
๋ ๊ฐ์ง ์ถ๊ฐ ํ :
kubectl delete
๋ช
๋ น์ ๋ค๋ฅธ ์ฐฝ์์ ์ฐจ๋จํ์ฌ ์งํ ์ํฉ์ ๋ชจ๋ํฐ๋ง ํ ์ ์์ต๋๋ค (์ด๋ฏธ ์ฌ๋ฌ ๋ฒ "์ญ์ "ํ ํฌ๋์์๋). kubectl delete
๋ ๋ง์ง๋ง ์ค๋จ ๋ ๋ฆฌ์์ค๊ฐ ํด์ ๋๋ ์ฆ์ ์ข
๋ฃ๋ฉ๋๋ค.์ค๋ ์ด๊ฒ์ ์ง๋ฉดํ์ต๋๋ค.
์ํ ๋ ์์
:
kubectl get pods
์ (๋) ๋ด stucked ์ปจํ
์ด๋ 0/1 terminating
(์ด์ 1/1 terminating
)๋ฅผ ๋ณด์ฌ์ค๋๋ค.finalizers
์น์
์ ์ ๊ฑฐํฉ๋๋ค. ์ foregroundDeletion
($ kubectl edit pod / name)-> ์ปจํ
์ด๋๊ฐ ํฌ๋ ๋ชฉ๋ก์์ ์ ๊ฑฐ๋์์ต๋๋ค.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์ ์คํํฉ๋๋ค.
```
-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 ๋ก๊ทธ๋ฅผ ๊ฒ์ํ์ฌ ํฌ๋๊ฐ ๋ฉ์ท๋์ง ํ์ธํ๋ ๊ฒ์ด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
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
์ (๋ฅผ) ์ฌ์ฉํ์ง ์์์ต๋๋ค.