无法使用 k3s 和 virtualbox 连接到在不同节点上运行的 pod

问题描述 投票:0回答:1

尝试使用 vagrant 和 virtualbox 创建 k3s 集群。

节点可以相互连接。 DNS 解析在 Pod 上进行,Pod 可以连接互联网,并且只要 Pod 运行在同一主机上,就可以连接到不同的 Pod。主机间 pod 网络无法正常工作。

这是我的 Vagrantfile,用于启动整个过程。

Vagrant.configure("2") do |config|

  config.vm.provider "virtualbox" do |vb|
      vb.memory = "1536"
  end

  config.vm.define "server" do |server|
    server.vm.box = "ubuntu/jammy64"
    server.vm.hostname = "server"
    server.vm.network "forwarded_port", guest: 6443, host: 6443
    server.vm.network :private_network, ip: '172.20.20.10',  virtualbox__intnet: true
    server.vm.provision "shell", 
      inline: "curl -sfL https://get.k3s.io | sh -s - server --write-kubeconfig /vagrant/config  --write-kubeconfig-mode 666 --token=SECRET --tls-san 172.20.20.10 --flannel-iface enp0s8 --flannel-backend=wireguard-native --kube-apiserver-arg advertise-address=172.20.20.10 --node-external-ip=172.20.20.10 --node-ip=172.20.20.10"
  end

  config.vm.define "agent1" do |agent|
    agent.vm.box = "ubuntu/jammy64"
    agent.vm.hostname = "agent1"
    agent.vm.network :private_network, ip: '172.20.20.11',  virtualbox__intnet: true
    agent.vm.provision "shell", 
      inline: "curl -sfL https://get.k3s.io | K3S_URL=https://172.20.20.10:6443 K3S_TOKEN=SECRET sh -s -  --node-ip=172.20.20.11 --node-external-ip=172.20.20.11"
  end

  config.vm.define "agent2" do |agent|
    agent.vm.box = "ubuntu/jammy64"
    agent.vm.hostname = "agent2"
    agent.vm.network :private_network, ip: '172.20.20.12',  virtualbox__intnet: true
    agent.vm.provision "shell", 
      inline: "curl -sfL https://get.k3s.io | K3S_URL=https://172.20.20.10:6443 K3S_TOKEN=SECRET sh -s -  --node-ip=172.20.20.12 --node-external-ip=172.20.20.12"
  end

end


我在这里缺少什么?

最初 DNS 解析不起作用。使用wireguard-native 作为 flannel 后端似乎可以解决这个问题。此外,此处描述的专用网络是仅主机适配器,因此将其更改为内部网络。

vagrant virtualbox k3s
1个回答
0
投票

您的服务器节点缺少

--flannel-external-ip
标志,如果您转到 docs 您会看到

Use node external IP addresses as the destination for Flannel traffic, 
instead of internal IPs. Only applies when --node-external-ip is set on a node.

这正是您的情况,因为您为每个节点指定了

--node-external-ip
,正如我测试的那样

© www.soinside.com 2019 - 2024. All rights reserved.