Kubernetes/Flannel
Flannel 배포 오류 : pod cidr not assigned
이쿠우우
2024. 7. 15. 21:01
반응형
환경
kubernetes version : 1.25.4
flannel version : v1.1.0
상황
flannel 배포 시 flannel daemonset pod가 error 상태로 실행이 안됨.
특이 사항으로
cluster pod cider 은 10.110.0.0/16으로 설정되어있음
해당 설정은 kube-controller를 보고 확인함
flannel cfg comfigmap 도 10.110.0.0/16으로 설정함
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-flannel
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"cniVersion": "0.3.1",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",
"capabilities": {
"portMappings": true
}
}
]
}
net-conf.json: |
{
"Network": "10.110.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
---
이와 같이 cluster의 pod cidr과 flannel의 cidr 설정을 동일하게 하면 정상 생성 될 줄 알았는데
배포가 안됨...
Error log
Defaulted container "kube-flannel" out of: kube-flannel, install-cni-plugin (init), install-cni (init)
I1202 06:49:52.276232 1 main.go:204] CLI flags config: {etcdEndpoints:http://127.0.0.1:4001,http://127.0.0.1:2379 etcdPrefix:/coreos.com/network etcdKeyfile: etcdCertfile: etcdCAFile: etcdUsername: etcdPassword: version:false kubeSubnetMgr:true kubeApiUrl: kubeAnnotationPrefix:flannel.alpha.coreos.com kubeConfigFile: iface:[] ifaceRegex:[] ipMasq:true ifaceCanReach: subnetFile:/run/flannel/subnet.env publicIP: publicIPv6: subnetLeaseRenewMargin:60 healthzIP:0.0.0.0 healthzPort:0 iptablesResyncSeconds:5 iptablesForwardRules:true netConfPath:/etc/kube-flannel/net-conf.json setNodeNetworkUnavailable:true}
W1202 06:49:52.276312 1 client_config.go:617] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work.
I1202 06:49:52.376410 1 kube.go:126] Waiting 10m0s for node controller to sync
I1202 06:49:52.376489 1 kube.go:431] Starting kube subnet manager
I1202 06:49:53.377331 1 kube.go:133] Node controller sync successful
I1202 06:49:53.377362 1 main.go:224] Created subnet manager: Kubernetes Subnet Manager - iksoon-worker.novalocal
I1202 06:49:53.377369 1 main.go:227] Installing signal handlers
I1202 06:49:53.377508 1 main.go:467] Found network config - Backend type: vxlan
I1202 06:49:53.377541 1 match.go:206] Determining IP address of default interface
I1202 06:49:53.378390 1 match.go:259] Using interface with name eth0 and address 192.168.0.49
I1202 06:49:53.378430 1 match.go:281] Defaulting external address to interface address (192.168.0.49)
I1202 06:49:53.378535 1 vxlan.go:138] VXLAN config: VNI=1 Port=0 GBP=false Learning=false DirectRouting=false
E1202 06:49:53.378819 1 main.go:327] Error registering network: failed to acquire lease: node "iksoon-worker.novalocal" pod cidr not assigned
I1202 06:49:53.378977 1 main.go:447] Stopping shutdownHandler...
W1202 06:49:53.379009 1 reflector.go:347] github.com/flannel-io/flannel/subnet/kube/kube.go:432: watch of *v1.Node ended with: an error on the server ("unable to decode an event from the watch stream: context canceled") has prevented the request from succeeding
아래 log가 원인임
Error registering network: failed to acquire lease: node "iksoon-worker.novalocal" pod cidr not assigned
원인
controller에 cidr이 설정되어있으면 node에 podCIDR labels가 설정됨
이를 확인해봤는데 조회가 안됨.
확인 명령어
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'
결과
조회되지 않음.
node에 podCIDR 설정이 빠져있음.. 왜빠져있는지는 모르겠음
해당 설정이 빠져있어서 위 증상이 발생하는 것으로 분석됨
해결책
node에 pod cidr 를 수동으로 추가
kubectl patch node "node 이름" -p '{"spec":{"podCIDR":"10.110.0.0/24"}}'
주의 node마다 cidr 설정 ip주소는 다르게 해야함
ex)
master : 10.110.0.0/24
worker 1 : 10.110.1.0/24
worker 2 : 10.110.2.0/24
그리고 podCIDR 필드는 한번 설정하면 변경 불가능함으로 신중히 설정해야함.
위와같이 추가 하면 flannel 정상 배포 됨.
반응형