Vấn đề
Tôi hiện đang cố gắng kết nối các nút đường hầm VPN trong mạng LAN của mình với một nút bên ngoài mạng LAN của mình (Bên trong trung tâm dữ liệu). Vì vậy, tôi đã cố gắng sử dụng K3S. Đáng buồn thay, tôi không thể ping worker (lan trong) qua master (lan ngoài). Ping giữa các nút công nhân hoạt động (cả bên trong lan).
Tái sản xuất
Để cài đặt k3s tôi đã sử dụng lệnh cuộn tròn -sfL https://get.k3s.io | sh -s - --flannel-backend=none --disable traefik
đồng thời loại bỏ flannel và vô hiệu hóa traefik.
Để cài đặt calico, tôi đã tải xuống tệp kê khai qua cuộn tròn https://docs.projectcalico.org/manifests/calico.yaml -O
và chỉnh sửa danh sách conf để cho phép ip_forwarding:
{
"tên": "k8s-pod-mạng",
"cniVersion": "0.3.1",
"bổ sung": [
{
"loại": "calico",
"log_level": "thông tin",
"log_file_path": "/var/log/calico/cni/cni.log",
"datastore_type": "kubernetes",
"tên nút": "NODE_NAME",
"mtu": 0,
"ipam": {
"loại": "calico-ipam"
},
"chính sách": {
"loại": "k8s"
},
"kubernetes": {
"kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
},
"container_settings": { "allow_ip_forwarding": true }
},
{
"type": "sơ đồ cổng",
"snat": đúng,
"khả năng": {"portMappings": true}
},
{
"loại": "băng thông",
"khả năng": {"băng thông": đúng}
}
]
}
Và thực hiện lệnh sudo sysctl net.ipv4.ip_forward=1
trên mỗi nút.
Để kích hoạt Wireguard, tôi đã làm theo hướng dẫn trên https://docs.projectcalico.org/security/encrypt-cluster-pod-traffic và cài đặt wireguard thông qua
apt-get cài đặt wireguard
trên mọi nút, đã tải xuống calicoctl qua
curl -o calicoctl -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.2/calicoctl"
và làm cho nó có thể thực thi được với
chmod +x calicoctl
.
Sau đó, tôi kích hoạt Wireguard bằng lệnh
./calicoctl vá felixconfiguration mặc định --type='merge' -p '{"spec":{"wireguardEnabled":true}}'
.
Sau đó, tôi đã cài đặt nginx-ingress với tệp kê khai yaml
áp dụng kubectl -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.4/deploy/static/provider/cloud/deploy.yaml
.
Tôi đã tham gia mọi nút bên trong lan của mình với chủ bên ngoài lan của tôi với
cuộn tròn -sfL https://get.k3s.io | K3S_URL=https://IP:6443 K3S_TOKEN=TOKEN sh -
Mỗi nút có một địa chỉ ip đường hầm VPN và các nhóm được chạy trên các địa chỉ VPN. IP bên trong của mỗi nút là địa chỉ ip của chính nó (các nút bên trong lan của tôi có địa chỉ ip của lan và các nút bên ngoài lan có địa chỉ ip công khai).