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
'리눅스' 카테고리의 다른 글
[draft] 쿠버네티스 대시보드에 Kubeconfig 파일을 사용하여 인증하는 방법 (0) | 2024.07.20 |
---|---|
[draft] 쿠버네티스 대시보드를 통해 Nginx를 배포하는 방법 (0) | 2024.07.20 |
[draft] 쿠버네티스에 위브넷 네트워크 플러그인을 설치하는 방법 (0) | 2024.07.19 |
[draft] 쿠버네티스 클러스터를 고가용성 멀티 마스터 구성으로 설정하는 방법 (1) | 2024.07.18 |
[draft] 우분투에서 동일한 물리적 인터페이스에 여러 IP 주소를 설정하는 방법 (0) | 2024.07.18 |