Cómo unir el nodo trabajador de Kubernetes al nodo del plano de control utilizando máquinas virtuales Vagrant

Cómo unir el nodo trabajador de Kubernetes al nodo del plano de control utilizando máquinas virtuales Vagrant

Estoy configurando un clúster de Kubernetes usando máquinas virtuales Ubuntu 18.04 con Vagrant. Todo va bien hasta que intento ejecutar el kubeadm join 10.0.2.15:6443 --token ...comando en un nodo trabajador y aparece el error:

[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

Mi hipótesis es que se trata de un problema de red, porque la dirección IP especificada por el kubeadm token create --print-join-commandnodo del Plano de control era 10.0.2.15:6443, que no es la dirección IP que había especificado para el nodo del Plan de control en Vagrantfile ( 172.16.94.10, ver más abajo). Sin embargo, incluso cuando cambio el comando kubeadm join manualmente de esta manera: sudo kubeadm join 172.16.94.10:6443 --token ...aparece un error similar. ¿Cómo puedo resolver esto?

Información del 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

Archivo vagabundo:

# -*- 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

Respuesta1

Según elinicio de kubeadmpágina, si empiezo de nuevo el proceso de configuración del nodo Control Plane y lo uso sudo kubeadm init --apiserver-advertise-address="172.16.94.10" --apiserver-cert-extra-sans="172.16.94.10"en lugar del simple sudo kubeadm init, esto se configurará kubeadmpara funcionar con la dirección IP correcta y enrutable como se define en Vagrantfile.

Obtengo el 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.

información relacionada