본문 바로가기

리눅스

쿠버네티스에 Flannel 네트워크 플러그인을 설치하는 방법

반응형

쿠버네티스에 Flannel 네트워크 플러그인을 설치하는 방법

Flannel은 쿠버네티스 클러스터에서 파드 간 통신을 가능하게 하는 네트워크 플러그인입니다.

 

kubernetes coredns 에러(ContainerCreating)

$ kubectl get pods --namespace=kube-system
NAME                             READY   STATUS              RESTARTS   AGE
coredns-f9fd979d6-z6dtd          0/1     ContainerCreating   0          45m
coredns-f9fd979d6-z7j97          0/1     ContainerCreating   0          45m

1. Flannel 설치 매니페스트 다운로드 및 적용

쿠버네티스 클러스터에 Flannel을 설치하려면 공식 매니페스트 파일을 사용합니다. 이를 통해 모든 필요한 리소스를 자동으로 생성하고 설정할 수 있습니다.

  • master
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • latest
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
namespace/kube-flannel created
serviceaccount/flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

2. 설치 상태 확인

Flannel 설치가 완료되면 관련 파드가 정상적으로 실행되고 있는지 확인해야 합니다.

kubectl get pods --namespace=kube-flannel
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-5xdnd   1/1     Running   0          52s
kube-flannel-ds-fvwgg   1/1     Running   0          52s
kube-flannel-ds-nrmtk   1/1     Running   0          52s
kube-flannel-ds-wxz6v   1/1     Running   0          52s

kube-system 네임스페이스에서 app=flannel 레이블이 있는 파드 목록을 출력합니다.

kubectl get pods -l app=flannel -n kube-flannel
728x90

3. 네트워크 확인

Flannel이 올바르게 작동하는지 확인하기 위해 클러스터 내의 파드가 서로 통신할 수 있는지 확인해야 합니다. 테스트를 위해 간단한 파드를 생성하고 네트워크 연결을 테스트할 수 있습니다.

테스트 파드 생성

두 개의 테스트 파드를 생성합니다.

kubectl run test-pod-1 --image=busybox --restart=Never -- sleep 3600
$ kubectl run test-pod-1 --image=busybox --restart=Never -- sleep 3600
pod/test-pod-1 created
kubectl run test-pod-2 --image=busybox --restart=Never -- sleep 3600
$ kubectl run test-pod-2 --image=busybox --restart=Never -- sleep 3600
pod/test-pod-2 created

busybox 이미지를 사용하여 두 개의 파드를 생성하고 이들이 3600초 동안 실행되도록 합니다.

파드 간 통신 테스트

test-pod-1에서 test-pod-2로 ping 테스트를 수행합니다.

  • test-pod-1에 접속
kubectl exec -it test-pod-1 -- /bin/sh

또는

kubectl run test-pod-1 --image=busybox --restart=Never -- ping -c 4 <target-pod-ip>
  • test-pod-2의 IP 주소 확인
kubectl get pod test-pod-2 -o jsonpath='{.status.podIP}'
  • 위에서 얻은 IP 주소로 ping 테스트
ping <test-pod-2 IP 주소>

정상적으로 Flannel이 작동하면 test-pod-1에서 test-pod-2로 ping이 성공해야 합니다.

 

파드 삭제

kubectl delete pod test-pod-1

파드 강제 삭제

  • --grace-period=0 : 즉시 종료(grace period 없이)합니다.
  • --force : Kubernetes API 서버에 강제로 요청을 보내 리소스를 삭제합니다.
kubectl delete pod test-pod-1 --grace-period=0 --force

파드 재배포

kubectl run test-pod-1 --image=busybox --restart=Never -- sleep 3600

파드 상세 정보 확인

kubectl describe pod test-pod-1

모든 태인트 확인

kubectl describe nodes | grep -i taints

 

쿠버네티스 클러스터에 Flannel 네트워크 플러그인을 성공적으로 설치하고 네트워크 통신이 올바르게 이루어지는지 확인할 수 있습니다.

 

참고URL

- github : flannel

 

728x90
반응형