10.254.0.0 is an invalid ip address
Expected Behavior
allocate right ip address to pods.
Current Behavior
allocate invalid ip 10.254.0.0 to a pod
Possible Solution
Steps to Reproduce (for bugs)
- install kubernetes with kubeadm with
kubeadm init --pod-network-cidr=10.128.0.0/9 --service-cidr=10.96.0.0/24 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.18.3
- kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
- join worker nodes with kubeadm join, then label nodes with rack=0/1/2/3 relatively.
- delete the default ipv4 pool
- create new pools:
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: core-ippool
spec:
blockSize: 26
cidr: 10.128.1.0/24
ipipMode: Always
natOutgoing: true
vxlanMode: Never
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: test-ippool
spec:
blockSize: 24
cidr: 10.254.0.0/24
ipipMode: Never
natOutgoing: false
nodeSelector: rack == '0'
---
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: test-ippool2
spec:
blockSize: 24
cidr: 10.254.1.0/24
ipipMode: Never
natOutgoing: false
nodeSelector: rack == '1'
---
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: test-ippool3
spec:
blockSize: 24
cidr: 10.254.2.0/24
ipipMode: Never
natOutgoing: false
nodeSelector: rack == '2'
---
apiVersion: projectcalico.org/v3
kind: IPPool
metadata:
name: test-ippool1
spec:
blockSize: 24
cidr: 10.254.3.0/24
ipipMode: Never
natOutgoing: false
nodeSelector: rack == '3'
- create a deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: busybox-ext
spec:
replicas: 1
selector:
matchLabels:
app: busybox-ext
template:
metadata:
labels:
app: busybox-ext
annotations:
"cni.projectcalico.org/ipv4pools": "[\"test-ippool\"]"
spec:
containers:
- name: test-container
image: registry.cn-hangzhou.aliyuncs.com/google_containers/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 100;
done;
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_POD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app: busybox-ext
- check ip address for the pod
[root@k8s-master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
busybox-ext-6854978799-tjqwn 1/1 Running 0 6s 10.254.0.0 k8s-work1 <none> <none>
Your Environment
[root@k8s-master ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.5", GitCommit:"e6503f8d8f769ace2f338794c914a96fc335df0f", GitTreeState:"clean", BuildDate:"2020-06-26T03:47:41Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40", GitTreeState:"clean", BuildDate:"2020-05-20T12:43:34Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
[root@k8s-master ~]# cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
[root@k8s-master ~]# calicoctl version
Client Version: v3.15.0
Git commit: 7987fc57
Cluster Version: v3.15.1
Cluster Type: k8s,bgp,kubeadm,kdd