[Kubernetes] Podman CNI network not found 이슈

김동완 (Joseph Kim)·2023년 11월 7일
0

TroubleShooting

목록 보기
2/2
post-thumbnail

포스팅 이유

Podman CNI Network 이슈를 겪고 해당 이슈 해결에 대한 방법을 공유하고자 함



1. 이슈 상황

사전 정보
AWS EC2 위에 Kubernets를 구성.
Private Subnet에 EC2가 위치하여 외부 Image registrty 접근 불가.

EC2를 이용해 폐쇄망 환경을 만들고 Kubernetes를 구축하기 위해 Podman을 이용해 Private Image Registry를 구성하였습니다.

Podman을 이용해 Private Registry 구성 가이드

이후 Kubernetes 설치 중 문제가 생겨 kubespray reset을 돌렸는데 Podman을 통해 구성한 Private Image Registry로 통신이 되지 않는 문제가 발생했습니다.

curl { private registry 주소 }:5000/v2/_catalog

curl 명령어로 registry를 조회했으나 행이 걸렸고

podman ps

podman ps 명령어로 container를 조회했을 땐 정상적으로 떠 있었습니다.


2. 이슈 해결 방법

먼저 container 재기동을 통해 해당 문제 해결을 시도했으나 재기동이 되지 않았고, container를 삭제 후 다시 올려보기로 했습니다.

podman run -it -d --name registry -p 0.0.0.0:5000:5000 --privileged -v /data:/var/lib/registry registry

ERRO[0000] error loading cached network config: network "podman" not found in CNI cache
WARN[0000] falling back to loading from existing plugins on disk
ERRO[0000] Error tearing down partially created network namespace for container f772d72f631dec1c5d58583615d0e0750d8f551e4212d34495355f0d0dd84f3a: CNI network "podman" not found
Error: error configuring network namespace for container f772d72f631dec1c5d58583615d0e0750d8f551e4212d34495355f0d0dd84f3a: CNI network "podman" not found

하지만 다음과 같은 에러와 함께 container는 생성되지 않았고 확인해보니 kubespray를 통해 kubernetes를 reset하는 과정에서 /etc/cni/net.d 디렉토리가 삭제된 것을 확인했습니다.

위 문제를 해결하기 위해 삭제된 podman network config를 복구해줬습니다.

mkdir /etc/cni
mkdir /etc/cni/net.d

vi /etc/cni/net.d/87-podman-bridge.conflist
---
{
  "cniVersion": "0.4.0",
  "name": "podman",
  "plugins": [
    {
      "type": "bridge",
      "bridge": "cni-podman0",
      "isGateway": true,
      "ipMasq": true,
      "hairpinMode": true,
      "ipam": {
        "type": "host-local",
        "routes": [{ "dst": "0.0.0.0/0" }],
        "ranges": [
          [
            {
              "subnet": "10.88.0.0/16",
              "gateway": "10.88.0.1"
            }
          ]
        ]
      }
    },
    {
      "type": "portmap",
      "capabilities": {
        "portMappings": true
      }
    },
    {
      "type": "firewall"
    },
    {
      "type": "tuning"
    }
  ]
}
---

해당 파일을 다시 생성해주고 registry container를 재생성한 결과 정상적으로 다시 container가 생성되는것을 확인했습니다.

profile
Kubernetes / DevOps / Git / Network / AWS / Terraform / Opensource / Java / Springboot

0개의 댓글