Vagrant 仮想マシンを使用して Kubernetes ワーカーノードをコントロールプレーンノードに参加させる方法

Vagrant 仮想マシンを使用して Kubernetes ワーカーノードをコントロールプレーンノードに参加させる方法

Vagrant で Ubuntu 18.04 仮想マシンを使用して Kubernetes クラスターをセットアップしています。kubeadm join 10.0.2.15:6443 --token ...ワーカー ノードでコマンドを実行しようとするとエラーが発生するまではすべて順調です。

[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

kubeadm token create --print-join-command私の仮説では、これはネットワークの問題です。コントロール プレーン ノードでによって指定された IP アドレスは であり10.0.2.15:6443、これは Vagrantfile でコントロール プラン ノードに指定した IP アドレスではありません ( 172.16.94.10、下記参照)。ただし、kubeadm join コマンドを次のように手動で変更してもsudo kubeadm join 172.16.94.10:6443 --token ...、同様のエラーが発生します。どうすれば解決できますか?

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

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

答え1

によるとkubeadm の初期化ページで、コントロール プレーン ノードの設定プロセスを最初からやり直し、sudo kubeadm init --apiserver-advertise-address="172.16.94.10" --apiserver-cert-extra-sans="172.16.94.10"プレーンの代わりにを使用すると、 Vagrantfile で定義されている正しいルーティング可能な IP アドレスで動作するようにsudo kubeadm init構成されます。kubeadm

結果は次のようになります:

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.

関連情報