使用本指南在 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
为了通过编辑
/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
有时
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
然后解决了。
在 Ubuntu 16.04 上我只需要:
modprobe br_netfilter
/proc/sys/net/bridge/bridge-nf-call-iptables
中的默认值已经是1
。
然后我将
br_netfilter
添加到 /etc/modules
以在下次启动时自动加载模块。
如 K8s 文档中所述 - 安装 kubeadm 在 让 iptables 查看桥接流量部分:
确保
模块已加载。这可以做到 通过运行br_netfilter
。lsmod | grep br_netfilter
要显式加载它,请调用。sudo modprobe br_netfilter
作为 Linux 节点 iptables 正确查看的要求 桥接流量,您应该确保
在 sysctl 中设置为 1 配置,例如net.bridge.bridge-nf-call-iptables
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
.
.
单行方式:
sysctl net.bridge.bridge-nf-call-iptables=1
Vagrant一个kubernetes集群进行自学
大家好,我从 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”和“获取节点”。
以上就是全部内容了,希望大家喜欢。