Настройка ресничек в режиме IPv6
Я использую реснички в Kubernetes 1.12 в режиме прямой маршрутизации. Он отлично работает в режиме IPv4. Мы используем cilium/cilium: изображение без маршрутов и cloudnativelabs/kube-router для объявления маршрутов через BGP.
Теперь я хотел бы настроить то же самое в IPv6 только в кластере Kubernetes. Но я обнаружил, что модуль kube-router не работает и не создает записи маршрута для --pod-network-cidr.
Ниже приведены подробности лаборатории -
- главный узел: частный IP-адрес IPv6 -fd0c:6493:12bf:2942::ac18:1164
- Рабочий узел: частный IPv6 IP -fd0c:6493:12bf:2942::ac18:1165
- Публичный IP для обоих узлов - IPv4, так как у меня нет публичного IPv6.
Только IPv6 кластер K8s создается как
мастер:
sudo kubeadm init --kubernetes-version v1.13.2 --pod-network-cidr=2001:2::/64 --apiserver-advertise-address=fd0c:6493:12bf:2942::ac18:1164 --token-ttl 0
работник:
sudo kubeadm join [fd0c:6493:12bf:2942::ac18:1164]:6443 --token 9k9sdq.el298rka0sjqy0ha --discovery-token-ca-cert-hash sha256:b830c22dc21561c9e9287275ecc675ec6de012662fabde3bd1aba03be66562eb
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP
EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master NotReady master 38h v1.13.2 fd0c:6493:12bf:2942::ac18:1164
<none> Ubuntu 18.10 4.18.0-13-generic docker://18.6.0
worker1 Ready <none> 38h v1.13.2 fd0c:6493:12bf:2942::ac18:1165
<none> Ubuntu 18.10 4.18.0-10-generic docker://18.6.0
мастер-узел не готов, так как cni еще не настроен, а модули codedns еще не подключены.
Теперь установите ресничку в Ipv6.
1. Запустите etcd в главном узле.
sudo docker run -d --network=host \
--name "cilium-etcd" k8s.gcr.io/etcd:3.2.24 \
etcd -name etcd0 \
-advertise-client-urls http://[fd0c:6493:12bf:2942::ac18:1164]:4001 \
-listen-client-urls http://[fd0c:6493:12bf:2942::ac18:1164]:4001 \
-initial-advertise-peer-urls http://[fd0c:6493:12bf:2942::ac18:1164]:2382 \
-listen-peer-urls http://[fd0c:6493:12bf:2942::ac18:1164]:2382 \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster etcd0=http://[fd0c:6493:12bf:2942::ac18:1164]:2382 \
-initial-cluster-state new
Здесь [fd0c:6493:12bf:2942::ac18:1164] является главным узлом ipv6 ip.
2. sudo mount bpffs / sys / fs / bpf -t bpf
3. Запустите кубероутер.
Ожидаемый результат:
Kube-router добавляет запись маршрутизации для POD-CIDR, соответствующую каждому из других узлов в кластере. Узел публичного IP будет установлен как GW. Следующий результат получен для IPv4. Для IPv4 запись маршрутизации создается в узле-1 для узла-2 (общедоступный IP-адрес 10.40.139.196 и POD CIDR 10.244.1.0/24). Устройство - это интерфейс, к которому привязан публичный IP.
$ ip route show
10.244.1.0/24 via 10.40.139.196 dev ens4f0.116 proto 17
Примечание: только для IPv6 Kubernetes, --pod-network-cidr=2001:2::/64
Фактический результат -
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-86c58d9df4-g7nvf 0/1 ContainerCreating 0 22h
coredns-86c58d9df4-rrtgp 0/1 ContainerCreating 0 38h
etcd-master 1/1 Running 0 38h
kube-apiserver-master 1/1 Running 0 38h
kube-controller-manager-master 1/1 Running 0 38h
kube-proxy-9xb2c 1/1 Running 0 38h
kube-proxy-jfv2m 1/1 Running 0 38h
kube-router-5xjv4 0/1 CrashLoopBackOff 15 73m
kube-scheduler-master 1/1 Running 0 38h
Вопрос -
Может ли kuberouter использовать частный IPv6-адрес, который используется кластером Kubernetes, вместо использования публичного IP-адреса, который в нашем случаеenter code here
IPv4.