• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    해결됨

worker node, not ready 시 어떻게 해야 하나요?

21.03.29 01:53 작성 조회수 1.94k

2

컴퓨터를 끄고 다시 켜니 master node만 ready이고 worker node들 전부가 not ready이네요

자동으로 살아나지 않을까 싶어 kubectl delete를 통해 worker node1만 지웠는데 안 살아나네요

이런 경우 어떻게 해야할까요?

밑에는 현재 노드들 정보와 w2 노드의 describe정보 입니다.

[root@m-k8s k8s-min-5GiB]# kubectl describe node w2-k8s

Name:               w2-k8s

Roles:              <none>

Labels:             beta.kubernetes.io/arch=amd64

                    beta.kubernetes.io/os=linux

                    kubernetes.io/arch=amd64

                    kubernetes.io/hostname=w2-k8s

                    kubernetes.io/os=linux

Annotations:        kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock

                    node.alpha.kubernetes.io/ttl: 0

                    projectcalico.org/IPv4Address: 192.168.1.102/24

                    projectcalico.org/IPv4IPIPTunnelAddr: 172.16.103.128

                    volumes.kubernetes.io/controller-managed-attach-detach: true

CreationTimestamp:  Thu, 25 Mar 2021 02:16:10 +0900

Taints:             node.kubernetes.io/unreachable:NoExecute

                    node.kubernetes.io/unreachable:NoSchedule

Unschedulable:      false

Lease:

  HolderIdentity:  w2-k8s

  AcquireTime:     <unset>

  RenewTime:       Thu, 25 Mar 2021 03:10:05 +0900

Conditions:

  Type                 Status    LastHeartbeatTime                 LastTransitionTime                Reason              Message

  ----                 ------    -----------------                 ------------------                ------              -------

  NetworkUnavailable   False     Thu, 25 Mar 2021 02:16:53 +0900   Thu, 25 Mar 2021 02:16:53 +0900   CalicoIsUp          Calico is running on this node

  MemoryPressure       Unknown   Thu, 25 Mar 2021 03:07:19 +0900   Thu, 25 Mar 2021 03:10:48 +0900   NodeStatusUnknown   Kubelet stopped posting node status.

  DiskPressure         Unknown   Thu, 25 Mar 2021 03:07:19 +0900   Thu, 25 Mar 2021 03:10:48 +0900   NodeStatusUnknown   Kubelet stopped posting node status.

  PIDPressure          Unknown   Thu, 25 Mar 2021 03:07:19 +0900   Thu, 25 Mar 2021 03:10:48 +0900   NodeStatusUnknown   Kubelet stopped posting node status.

  Ready                Unknown   Thu, 25 Mar 2021 03:07:19 +0900   Thu, 25 Mar 2021 03:10:48 +0900   NodeStatusUnknown   Kubelet stopped posting node status.

Addresses:

  InternalIP:  192.168.1.102

  Hostname:    w2-k8s

Capacity:

  cpu:                1

  ephemeral-storage:  38770180Ki

  hugepages-2Mi:      0

  memory:             1014764Ki

  pods:               110

Allocatable:

  cpu:                1

  ephemeral-storage:  35730597829

  hugepages-2Mi:      0

  memory:             912364Ki

  pods:               110

System Info:

  Machine ID:                 d0cc7f8f61e348aba24d3920bbe02ce5

  System UUID:                CCD4F52A-56DC-4B85-A80C-89882351D7D9

  Boot ID:                    3f854fbc-589b-4cd5-baad-b31a70ab7c37

  Kernel Version:             3.10.0-1127.19.1.el7.x86_64

  OS Image:                   CentOS Linux 7 (Core)

  Operating System:           linux

  Architecture:               amd64

  Container Runtime Version:  docker://19.3.14

  Kubelet Version:            v1.20.2

  Kube-Proxy Version:         v1.20.2

PodCIDR:                      172.16.2.0/24

PodCIDRs:                     172.16.2.0/24

Non-terminated Pods:          (2 in total)

  Namespace                   Name                 CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE

  ---------                   ----                 ------------  ----------  ---------------  -------------  ---

  kube-system                 calico-node-zqcds    250m (25%)    0 (0%)      0 (0%)           0 (0%)         3d23h

  kube-system                 kube-proxy-wmqs2     0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d23h

Allocated resources:

  (Total limits may be over 100 percent, i.e., overcommitted.)

  Resource           Requests    Limits

  --------           --------    ------

  cpu                250m (25%)  0 (0%)

  memory             0 (0%)      0 (0%)

  ephemeral-storage  0 (0%)      0 (0%)

  hugepages-2Mi      0 (0%)      0 (0%)

Events:              <none>

답변 2

·

답변을 작성해보세요.

1

uytr083님의 프로필

uytr083

질문자

2021.03.31

감사합니다 제시해주신 1번 방법으로 해결하였습니다.

다행이네요 ^^ 즐거운 쿠버네티스 여행 길이 되시길요. 

오늘 저녁에 뭔가 흥미를 유발할 수 있는 것을 하나 더 녹화하려고 해요. 

시간 되시면 봐주세요~!

0

안녕하세요 

일단 워커 노드를 지우는 경우 자동으로 복구되지는 않습니다. 

이것을 이해하려면 다음 강의가 있어야 하는데...ㅠㅠ 간단하게 말씀드리면 워커 노드가 다시 마스터에 조인(join)되어야 합니다. 

해당 명령은 work_nodes.sh에 구현되어 있습니다. 

# config for work_nodes only 

kubeadm join --token 123456.1234567890123456 \

             --discovery-token-unsafe-skip-ca-verification 192.168.1.10:6443

다만 제 예상에는 문제의 원인이 Calico / CNI 일 것으로 보여지는데...

이것을 트러블 슈팅하는 것보다 제일 쉬운건 워커 노드를 다시 생성하는 것이 제일 쉽습니다.

아래의 방법 중에 선택하시면 될 것 같습니다. (1: 제일 쉬움 / 내려갈 수록 어려움)

1. 워커노드 모두 삭제 후, 다시 vagrant up 

2. calico 관련 모두 삭제 후, 워커 노드를 위의 join 명령으로 모두 다시 attach 

     (이미 어느정도 아시는 것 같아서 그냥 이렇게 드립니다. )

3. calico의 로그를 보고 문제의 원인을 트러블슈팅 

위의 내용을 참고하시면 노드 복구는 어렵지 않으실 겁니다. 

Calico가 문제가 생기는 경우는 너무 다양해서 어느 부분이 문제였다를 얘기하지 못하는 점 이해 바랍니다.

Calico 말고는 1년 반 동안 책 쓰면 나오는 진짜 문제들은 모두 잡아서 랩을 만들었기 때문에 

다른 부분은 거의 문제가 생기지 않습니다. 

감사합니다.

 

조훈 드림.