Como juntar o nó de trabalho do Kubernetes ao nó do plano de controle usando máquinas virtuais Vagrant

Como juntar o nó de trabalho do Kubernetes ao nó do plano de controle usando máquinas virtuais Vagrant

Estou configurando um cluster Kubernetes usando máquinas virtuais Ubuntu 18.04 com Vagrant. Tudo corre bem até que tento executar o kubeadm join 10.0.2.15:6443 --token ...comando em um nó de trabalho e recebo o erro:

[preflight] Running pre-flight checks
error execution phase preflight: couldn't validate the identity of the API Server: Get "https://10.0.2.15:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s": dial tcp 10.0.2.15:6443: connect: connection refused

Minha hipótese é que este é um problema de rede, porque o endereço IP especificado pelo kubeadm token create --print-join-commandnó Control Plane era 10.0.2.15:6443, que não é o endereço IP que eu especifiquei para o nó Control Plan no Vagrantfile ( 172.16.94.10, veja abaixo). No entanto, mesmo quando altero o comando kubeadm join manualmente assim: sudo kubeadm join 172.16.94.10:6443 --token ..., recebo um erro semelhante. Como posso resolver isto?

Informações do sistema Ubuntu:

  System load:  0.22              Users logged in:      0
  Usage of /:   4.4% of 97.23GB   IP address for eth0:  10.0.2.15
  Memory usage: 40%               IP address for eth1:  172.16.94.10
  Swap usage:   0%                IP address for tunl0: 192.168.13.192
  Processes:    144

Arquivo Vagrant:

# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
  config.vm.box = "base"

  config.vm.define "c1-cp1" do |c1cp1|
    c1cp1.vm.box = "bento/ubuntu-18.04"
    c1cp1.disksize.size = '100GB'
    c1cp1.vm.network "private_network", ip: "172.16.94.10"
    c1cp1.vm.hostname = "c1-cp1"
    c1cp1.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = "2"
    end
  end

  config.vm.define "c1-node1" do |c1node1|
    c1node1.vm.box = "bento/ubuntu-18.04"
    c1node1.disksize.size = '100GB'
    c1node1.vm.network "private_network", ip: "172.16.94.11"
    c1node1.vm.hostname = "c1-node1"
    c1node1.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = "2"
    end
  end

end

Responder1

De acordo cominicialização do kubeadmpágina, se eu reiniciar o processo de configuração do nó Control Plane e usar sudo kubeadm init --apiserver-advertise-address="172.16.94.10" --apiserver-cert-extra-sans="172.16.94.10"em vez do plain sudo kubeadm init, isso será configurado kubeadmpara funcionar com o endereço IP roteável correto, conforme definido no Vagrantfile.

Eu recebo o resultado:

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

informação relacionada