无法在 Vagrant 上安装 Kubernetes

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

使用本指南在 Vagrant 集群上安装 Kubernetes:

https://kubernetes.io/docs/getting-started-guides/kubeadm/

(2/4) Initializing your master
,出现了一些错误:

[root@localhost ~]# kubeadm init
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.4
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[preflight] Some fatal errors occurred:
    /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[preflight] If you know what you are doing, you can skip pre-flight checks with `--skip-preflight-checks`

我查看了

/proc/sys/net/bridge/bridge-nf-call-iptables
文件内容,里面只有一个
0

(3/4) Installing a pod network
,我下载了
kube-flannel
文件:

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

然后运行

kubectl apply -f kube-flannel.yml
,出现错误:

[root@localhost ~]# kubectl apply -f kube-flannel.yml
The connection to the server localhost:8080 was refused - did you specify the right host or port?

直到这里,我都不知道如何继续。

我的

Vagrantfile

  # Master Server
  config.vm.define "master", primary: true do |master|
    master.vm.network :private_network, ip: "192.168.33.200"
    master.vm.network :forwarded_port, guest: 22, host: 1234, id: 'ssh'
  end
docker vagrant virtualbox kubernetes
6个回答
25
投票

为了通过编辑

/proc/sys/net/bridge/bridge-nf-call-iptables
来设置
/etc/sysctl.conf
。您可以在那里添加[1]

net.bridge.bridge-nf-call-iptables = 1

然后执行

sudo sysctl -p

并且更改将被应用。这样飞行前检查就应该通过了。


[1] http://wiki.libvirt.org/page/Net.bridge.bridge-nf-call_and_sysctl.conf


25
投票

更新@2019/09/02

有时

modprobe br_netfilter
不可靠,您可能需要重新登录后重做,因此在systemd系统上使用以下命令:

echo br_netfilter > /etc/modules-load.d/br_netfilter.conf
systemctl restart systemd-modules-load.service
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

是的,接受的答案是正确的,但我面临

无法 stat /proc/sys/net/bridge/bridge-nf-call-ip6tables:没有这样的文件或目录

所以我就这么做了

modprobe br_netfilter

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
sudo sysctl -p

然后解决了。


5
投票

在 Ubuntu 16.04 上我只需要:

modprobe br_netfilter

/proc/sys/net/bridge/bridge-nf-call-iptables
中的默认值已经是
1

然后我将

br_netfilter
添加到
/etc/modules
以在下次启动时自动加载模块。


3
投票

如 K8s 文档中所述 - 安装 kubeadm让 iptables 查看桥接流量部分:

确保

br_netfilter
模块已加载。这可以做到 通过运行
lsmod | grep br_netfilter

要显式加载它,请调用
sudo modprobe br_netfilter

作为 Linux 节点 iptables 正确查看的要求 桥接流量,您应该确保

net.bridge.bridge-nf-call-iptables
在 sysctl 中设置为 1 配置,例如

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

关于预检错误 - 您可以在预检检查下的Kubeadm实现详细信息中查看:

Kubeadm 在启动 init 之前执行一组预检检查, 目的是验证先决条件并避免常见的集群启动 问题..

以下缺少的配置将产生错误:

.
.
if /proc/sys/net/bridge/bridge-nf-call-iptables file does not exist/does not contain 1

if advertise address is ipv6 and /proc/sys/net/bridge/bridge-nf-call-ip6tables does not exist/does not contain 1.

if swap is on
.
.

2
投票

单行方式:

sysctl net.bridge.bridge-nf-call-iptables=1

0
投票

Vagrant一个kubernetes集群进行自学

https://www.linkedin.com/pulse/vagrant-up-kubernetes-cluster-self-learning-gary-tay/?trackingId=ld6avdaEQ6eXAsMIJfzJgA%3D%3D

大家好,我从 StackOverflow 获得了帮助,本指南是我的贡献。

如何启动并运行?

如果您使用 CYGWIN64 或 MINGW64 Git Bash CLI

$ git clone https://github.com/garyttt/kubernetes-localhost.git
$ cd kubernetes-localhost
$ vagrant plugin install vagrant-vbguest
$ vagrant up 

如果您使用 Windows CMD 或 PowerShell CLI

> git clone https://github.com/garyttt/kubernetes-localhost.git
> cd kubernetes-localhost
> vagrant plugin install vagrant-vbguest
> vagrant up

大约 45 分钟后,您将启动并运行 kubernetes localhost 集群,您可以通过 SSH(CYGWIN64 或 Git Bash 或 PuTTY 或任何 SSH 客户端)进入主节点进行检查。

$ alias ssh_k8m='ssh -o "StrictHostKeyChecking no" -i /mnt/c/Users/gtay/.vagrant.d/insecure_private_key [email protected]'
$ ssh_k8m

从 k8s-master 主机上的 vagrant 用户,您可以运行“kubectl”来检查“cluster-info”和“获取节点”。

以上就是全部内容了,希望大家喜欢。

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