• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

Replicaset 삭제 시, 연결된 Pod가 남아있는 문제

23.06.14 00:30 작성 23.06.20 10:46 수정 조회수 436

0

안녕하십니까 선생님, 먼저 좋은 강의에 감사드립니다.

강의에서는 Dashboard로 진행했을 때, Replicaset을 삭제하면 연결된 Pod들이 모두 삭제되는 것을 확인할 수 있었습니다. 그런데 제가 구성한 환경에서는 pod가 살아있고, 수동으로 삭제를 해주어야 했습니다. 이것은 버전이 달라서 발생하는 문제는 아닌 것 같은게.... 제가 사용 중인 버전에 대한 레퍼런스 페이지를 확인해보니 강의에서 말씀해주신대로 Replicaset과 함께 Pod가 삭제되어야 하는 것 같거든요. Pod가 삭제되지 않는게 제 환경 문제인지, 쿠버네티스에서 충분히 그럴 수 있는 건지 질문 드립니다.

# pod1.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    type: web
spec:
  containers:
  - name: container
    image: kubetm/app:v2
# replicas.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replica1
spec:
  replicas: 2
  selector:
    matchLabels:
      type: web
  template:
    metadata:
      name: pod1
      labels:
        type: web
    spec:
      containers:
      - name: container
        image: kubetm/app:v2

P.S 아무래도 쿠버네티스 가비지 컬렉터와 연관이 있는 것 같은데, Dashboard에서는 커맨드 라인과 다르게 가비지 컬렉터가 곧바로 동작을 하는 것 같은데 관련된 내용은 찾을 수가 없네용...

 

해결

몇 일간의 삽질 끝에 결론에 도달한 것 같습니다.

아래 명령어를 통해 calico를 설정할 때 ip 주소를 192.168.0.0에서 192.168.0.100으로 변경해주었습니다. 제가 VirtualBox로 클러스터를 구성할 때 master node의 주소를 192.168.0.100으로 설정해주었기 때문입니다. Pod도 정상적으로 생성되고, 다른 기능들에 큰 문제가 없어서 찾는데 너무 오래 걸렸네요

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/custom-resources.yaml

답변 2

·

답변을 작성해보세요.

1

멋지네요!

1

안녕하세요. 자세한 설명 감사합니다

저도 생소한 이슈라 검색을 좀 해봤는데

https://github.com/kubernetes/kubernetes/issues/96362

이와 같이 다른 프로그램을 설치하고 지우는 과정에서 controller-manager가 손상됐다는 얘기도 있네요

이렇게 영향을 줄 프로그램이 해당 클러스터에 설치된 적이 있었을까요?

저는 현재 1.27 버전으로 테스트를 해봐도 해당 문제가 발생하지는 않았습니다

해당 작업 과정에서 kube-controller-manager Pod의 로그를 한번 확인해 보시기 바랍니다

감사합니다, 확실히 말씀해주신 대로 controller-manager에 문제가 있는 것 같네요...

추가로 제가 검색해서 알아보도록 하겠습니다. 확인해주셔서 감사합니다~

$ kubectl logs -f kube-controller-manager-master -n kube-system

Log

..................
..................
..................
E0613 11:27:17.563908       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20335)
I0613 11:27:17.664013       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
E0613 11:27:47.664679       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:27:47.664707       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20336)
I0613 11:27:47.763819       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
W0613 11:27:50.484268       1 reflector.go:424] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:27:50.484304       1 reflector.go:140] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: Failed to watch *v1.PartialObjectMetadata: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:28:17.769297       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:28:17.769356       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20337)
I0613 11:28:17.864448       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
W0613 11:28:46.727572       1 reflector.go:424] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:28:46.727609       1 reflector.go:140] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: Failed to watch *v1.PartialObjectMetadata: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:28:47.865576       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:28:47.865609       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20338)
I0613 11:28:47.963305       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
E0613 11:29:17.964145       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:29:17.964175       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20339)
I0613 11:29:18.068069       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
W0613 11:29:28.736660       1 reflector.go:424] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:29:28.736695       1 reflector.go:140] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: Failed to watch *v1.PartialObjectMetadata: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:29:48.069273       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:29:48.069298       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20340)
I0613 11:29:48.164396       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
W0613 11:30:08.960784       1 reflector.go:424] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:30:08.960821       1 reflector.go:140] vendor/k8s.io/client-go/metadata/metadatainformer/informer.go:90: Failed to watch *v1.PartialObjectMetadata: failed to list *v1.PartialObjectMetadata: connection is unauthorized: bgpfilters.crd.projectcalico.org is forbidden: User "system:serviceaccount:calico-apiserver:calico-apiserver" cannot list resource "bgpfilters" in API group "crd.projectcalico.org" at the cluster scope
E0613 11:30:18.166260       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:30:18.166293       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20341)
I0613 11:30:18.266867       1 shared_informer.go:270] Waiting for caches to sync for garbage collector
E0613 11:30:48.267190       1 shared_informer.go:273] unable to sync caches for garbage collector
E0613 11:30:48.267230       1 garbagecollector.go:250] timed out waiting for dependency graph builder sync during GC sync (attempt 20342)

 

 

 

몇 일간의 삽질 끝에 결론에 도달한 것 같습니다.

아래 명령어를 통해 calico를 설정할 때 ip 주소를 192.168.0.0에서 192.168.0.100으로 변경해주었습니다. 제가 VirtualBox로 클러스터를 구성할 때 master node의 주소를 192.168.0.100으로 설정해주었기 때문입니다. Pod도 정상적으로 생성되고, 다른 기능들에 큰 문제가 없어서 찾는데 너무 오래 걸렸네요

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/custom-resources.yaml