Проблема
В настоящее время я пытаюсь туннелировать узлы VPN моей локальной сети с узлом за пределами моей локальной сети (внутри центра обработки данных). Для этого я пытался использовать K3S. К сожалению, я не могу пропинговать рабочего (внутри локальной сети) поверх мастера (вне локальной сети). Пинг между рабочими узлами работает (оба внутри локальной сети).
Воспроизвести
Для установки k3s я использовал команду curl -sfL https://get.k3s.io | sh -s --flannel-backend=none --disable traefik
а также убрать фланель и отключить траефик.
Чтобы установить calico, я скачал манифест через завиток https://docs.projectcalico.org/manifests/calico.yaml -O
и отредактировал список conf, чтобы разрешить ip_forwarding:
{
"имя": "k8s-pod-сеть",
"cniVersion": "0.3.1",
"плагины": [
{
"тип": "бязь",
"log_level": "информация",
"log_file_path": "/var/log/calico/cni/cni.log",
"datastore_type": "кубернетес",
"имя_узла": "ИМЯ_УЗЛА",
"мту": 0,
"айпам": {
"тип": "калико-ипам"
},
"политика": {
"тип": "k8s"
},
"кубернет": {
"kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
},
"container_settings": { "allow_ip_forwarding": правда}
},
{
"тип": "карта порта",
"снат": правда,
"возможности": {"portMappings": правда}
},
{
"тип": "пропускная способность",
"возможности": {"пропускная способность": правда}
}
]
}
И выполнил команду судо sysctl net.ipv4.ip_forward = 1
на каждом узле.
Чтобы включить Wireguard, я следовал инструкциям на https://docs.projectcalico.org/security/encrypt-cluster-pod-traffic и установил wireguard через
apt-get установить wireguard
на каждом узле скачанный calicoctl через
curl -o calicoctl -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.2/calicoctl"
и сделал его исполняемым с помощью
chmod +x calicoctl
.
После этого я включил Wireguard с помощью команды
./calicoctl patch felixconfiguration default --type='merge' -p '{"spec":{"wireguardEnabled":true}}'
.
После этого я установил nginx-ingress с манифестом yaml.
kubectl применить -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.4/deploy/static/provider/cloud/deploy.yaml
.
Я присоединил каждый узел внутри моей локальной сети к мастеру за пределами моей локальной сети с помощью
curl -sfL https://get.k3s.io | K3S_URL=https://IP:6443 K3S_TOKEN=TOKEN sh -
У каждого узла был IP-адрес VPN-туннеля, и модули запускались на адресах VPN. Внутренний IP-адрес каждого узла был его собственным IP-адресом (узлы внутри моей локальной сети получили IP-адрес локальной сети, а узлы вне локальной сети получили общедоступные IP-адреса).