настройка ресничек в режиме IPv6 - PullRequest
0 голосов
/ 21 января 2019

Я использую ресничку в Kubernetes 1.12 в режиме прямой маршрутизации.Он отлично работает в режиме IPv4.Мы используем cilium / cilium: изображение без маршрутов и cloudnativelabs / kube-router для объявления маршрутов через BGP.

Теперь я хотел бы настроить то же самое в IPv6 только для кластера Kubernetes.Но я обнаружил, что модуль kube-router не работает и не создает записи маршрута для --pod-network-cidr.

Ниже приведены лабораторные данные -

  • главный узел:Частный IPv6 -fd0c: 6493: 12bf: 2942 :: ac18: 1164
  • Рабочий узел: частный IPv6-IPv6 -fd0c: 6493: 12bf: 2942 :: ac18: 1165
  • Public IP дляоба узла являются IPv4, поскольку у меня нет общедоступного IPv6.

Только IPv6 Кластер K8s создается как

master:

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 hereIPv4.

...