본문 바로가기

리눅스

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

728x90

쿠버네티스에 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

 

kubectl get pods --namespace=kube-system
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
kube-system   coredns-7db6d8ff4d-bhq2b                0/1     Pending   0          30s
kube-system   coredns-7db6d8ff4d-h59hv                0/1     Pending   0          30s
kube-system   etcd-control-plane                      1/1     Running   0          45s
kube-system   kube-apiserver-control-plane            1/1     Running   0          45s
kube-system   kube-controller-manager-control-plane   1/1     Running   0          48s
kube-system   kube-proxy-hd7nx                        1/1     Running   0          30s
kube-system   kube-scheduler-control-plane            1/1     Running   0          45s

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

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

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-system
NAME                                    READY   STATUS    RESTARTS   AGE
coredns-7db6d8ff4d-bhq2b                1/1     Running   0          8m50s
coredns-7db6d8ff4d-h59hv                1/1     Running   0          8m50s
etcd-control-plane                      1/1     Running   0          9m5s
kube-apiserver-control-plane            1/1     Running   0          9m5s
kube-controller-manager-control-plane   1/1     Running   0          9m8s
kube-proxy-hd7nx                        1/1     Running   0          8m50s
kube-scheduler-control-plane            1/1     Running   0          9m5s

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

kubectl get pods -n kube-flannel -l app=flannel
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-hjmb9   1/1     Running   0          7m12s
728x90

3. 네트워크 확인

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

테스트 파드 생성

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

kubectl run test-pod1 --image=busybox --command -- sleep 3600
kubectl run test-pod2 --image=busybox --command -- sleep 3600
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
  name: test-pod2
spec:
  containers:
  - name: busybox
    image: busybox
    command: ["sleep", "3600"]
  nodeName: control-plane
EOF

또는

kubectl run test-pod2 --image=busybox --restart=Never --overrides='
{
  "apiVersion": "v1",
  "kind": "Pod",
  "spec": {
    "nodeName": "control-plane",
    "containers": [{
      "name": "busybox",
      "image": "busybox",
      "command": ["sleep", "3600"]
    }]
  }
}' --command

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

파드 간의 네트워크 연결 테스트

test-pod1에서 test-pod2로 ping 테스트를 수행합니다.

 

파드에서 외부 인터넷에 연결

kubectl exec -it test-pod1 -- nslookup google.com

또는

kubectl exec -it test-pod1 -- curl -I https://www.google.com
  • test-pod1에 접속
kubectl exec -it test-pod1 -- sh
  • test-pod-2의 IP 주소 확인
kubectl get pod test-pod2 -o jsonpath='{.status.podIP}'

또는

kubectl get pod test-pod2 -o wide
  • 위에서 얻은 IP 주소로 ping 테스트
ping <test-pod-2 IP 주소>

파드 로그 확인

kubectl logs <pod-name> -n default

파드 이벤트 확인

kubectl describe pod <pod-name> -n default

파드 삭제

kubectl delete pod <pod-name> -n default

 

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

 

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

 

참고URL

- github : flannel

 

728x90