전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]

티스토리 뷰

 

 centos에 flannel을 CNI(Container Network Interface)로 사용하는 경우 발생 할 수 있습니다.

 잘 수행되다가 갑자기 아래와 같은 현상이 발생할 수 있습니다.

- kube-system 네임스페이스의 coredns Pod가 모두 Complete상태가 되면서 중지됨

- kube-system 네임스페이스의 flannel Pod중 하나가 CrashLoopBackOff상태가 됨

- Flannel Pod의 log를 보면 아래와 같이 IPv4 주소를 못찾는다는 에러가 발생함

$ kubectl -n kube-system logs kube-flannel-ds-2vnhjI0601 19:31:31.628591       1 main.go:475] Determining IP address of default interfaceE0601 19:31:31.630621       1 main.go:193] Failed to find any valid interface to use: failed to find IPv4 address for interface eth0.100

 

원인

flannel 기본적으로 eth0 인터페이스에서 아이피를 찾게 되는데, Container의 옵션에 IP를 찾을 Network interface device가 정확하게 정의되어 있지 않은 경우 발생합니다.

$ ip a 명령으로 IP가 어디에 할당 되었는지 확인합니다.

Container 실행 플래그에 --iface=<Network interface device> 추가해 주면 됩니다.

해결책

iface=eth0를 추가합니다.

$ kubectl -n kube-system edit daemonset kube-flannel-ds
 
...
    spec:
      containers:
      - args:
        - --ip-masq
        - --kube-subnet-mgr
        - --iface=eth0
        command:
        - /opt/bin/flanneld
        env:
        - name: POD_NAME
...

 

댓글

전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]