第一部分在家中建立一个Kubernetes群集。
本章将重点放在准备工作上。我将把所有计算机连接在一起,并配置我的一台笔记本电脑作为群集的访问点,并且它将用作从集群到外界的网关。我已经收集了大约5台旧计算机和一个带有5个端口的简单非管理以太网开关。我将从最简单的解决方案开始,并会添加复杂性。
步骤1
插件第一笔笔记本电脑。这将作为网关,因为它具有两个网络接口。 WiFi将与我的路由器网络接口,以太网将连接到专用网络。当您将笔记本电脑连接到家庭WiFi时,通常会从路由器获得动态IP地址,例如192.168.0.15。路由器设置为所有Internet流量的默认网关。当您用以太网电缆插入计算机时,它会执行相同的操作(减去WiFi安全位)。操作系统通常仅激活一个网络接口(如果两者都存在,以太网采取的先前)。在我们的情况下,我们需要启用两者,以便机器可以与群集和我通信。
mnode@mnode:~$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 49:ba:4e:4a:eb:c5 brd ff:ff:ff:ff:ff:ff
altname enp1s0
inet 192.168.3.34/24 brd 192.168.3.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fc80::4aba:4eff:fe39:ebc5/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether da:64:6a:9f:cd:1f brd ff:ff:ff:ff:ff:ff
altname wlp2s0
inet 192.168.1.5/24 metric 600 brd 192.168.1.255 scope global dynamic wlan0
valid_lft 86379sec preferred_lft 86379sec
inet6 fe80::d66a:6aff:fe9c:cd1f/64 scope link
valid_lft forever preferred_lft forever
以上是所有可用网络接口的列表。对我们来说有趣的是eth0
,它是以太网界面和wlan0
,即WiFi。从上面的列表中,我们可以看到以太网处于状态 down 。为了进行比较,无线LAN是WLAN0,状态为 up 。
运行以下命令将打开网络接口:sudo ip link set eth0 up
再次运行ip address show
将表明eth0
接口现在使用flag UP
,因此操作工作了。但是,在Ubuntu台式机上执行此操作可能会导致操作系统(Ubuntu)报告错误消息激活of network connection failed Ubuntu
这是因为Ubuntu桌面使用 NetworkManager 默认情况下管理所有网络接口。它是负责通过UI网络管理的应用程序。在Ubuntu服务器中,我将使用这种情况。可以在此处找到该文档NetworkManager,可以通过选择其他渲染器或特定的网络接口可以完全关闭,或者可以从NetworkManager的管理下排除。配置在文件/etc/NetworkManager/NetworkManager.conf
中。在Ubuntu Server之类的无UI-ui-newers版本上,没有安装NetworkManager。默认网络渲染器是SystemD-NetworkD。在Ubuntu的两种口味中,网络配置都是通过Netplan完成的,而NetPlan的配置存储在 YAML 文件中,位于位置/etc/netplan/*.yaml
中。可能有多个配置文件。有关此信息的更多信息,请在提供的链接中找到。
Ubuntu桌面上的默认配置可能看起来像这样,它基本上告诉系统网络管理器管理所有网络设备:
network:
version: 2
renderer: NetworkManager
如果未指定渲染器,则默认情况下Ubuntu使用Systemd-Networkd作为网络渲染器。我们想自定义网关和静态IP地址的值,因为我们需要管理两个单独的网络接口,并且需要同时让它们UP
。
network:
wifis:
wlan0:
dhcp4: true
dhcp6: true
access-points:
"WIFI-Name":
password: "wifi_password"
ethernets:
eth0:
dhcp4: false
addresses: [192.168.3.34/24]
routes:
- to: default
- via: 192.168.1.1
上面的配置告诉系统, systemd-networkd 指定WiFi和密码的访问点。它指定WiFi从路由器中获取IP地址的IPv4和IPv6协议。它指定以太网接口不会尝试从DHCP服务器获取IP地址,而是采用了硬编码。格式192.168.3.34/24指定域中的IP地址192.168.3.xx和地址192.168.3.34域内。可以完成配置NetPlan的事情。
注意:对于桌面版本,关闭网络管理器会导致无法从任务栏中的下拉菜单中选择网络。
一个重要的部分是WiFi子网没有与以太网子网冲突。就我而言,wifi在192.168.1.0/24
上运行,我将以太网IP设置为192.168.3.0/24
在此NetPlan的新配置需要应用于Bash Sudo netplan apply
之后,如果这是在Ubuntu桌面上完成的,则可能会有一条消息systemd-networkd not running, output will be incomplete
。这表明网络管理器不再管理网络,但是默认网络尚未运行。需要启动bash systemctl start systemd-networkd
,我还必须注意,要设置Ubuntu服务器要简单得多,因为没有 NetworkManager ,而 systemd-networkd 是默认网络渲染器。
步骤2,将另一个组合添加到群集
这应该很简单。对我来说,第二只几内亚猪是Raspberry Pi3,为Raspberry运行Ubuntu,与Ubuntu Server不太不同。我在这里需要做的唯一配置是分配一个静态IP地址,并指向默认网关:bash sudo netplan apply
之后的yaml network: version: 2 ethernets: eth0: dhcp4: false addresses: [192.168.3.40/24]
我可以从网关笔记本电脑到达Raspberry Node,反之亦然。我还可以到达WiFi域上的网关笔记本电脑。我应该很好地插入其余的计算机,然后对他们做同样的事情,之后我可以开始安装K3并构建Kubernetes群集。
步骤3,可选 - 互联网访问
但是,我还想做一件事。这不是必需的,甚至可能不建议,但是为了我的便利,希望从集群中的单个机器与Internet建立连接。这将帮助我在单个节点上安装所需的软件。这不是生产环境,因此我可以轻松摆脱它。如果您拥有没有WiFi的台式机,则将适用相同的情况。您可以使用笔记本电脑连接到WiFi,并使用笔记本电脑的以太网接口与桌面连接并用作路由器。
为此,我们需要在IP表中添加一些规则。我们需要将所有Internet流量从以太网转发到WiFi界面和返回。我们还想设置网络地址翻译(NAT)。用于Linux操作系统启用IP转发。这通常可以通过编辑/etc/sysctl.conf
文件并添加以下行来完成:
net.ipv4.ip_forward = 1
或运行sysctl -w net.ipv4.ip_forward=1
我们还需要在IP表中添加以下规则:
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-
第一个规则将来自我们子网上单个机器的所有流量转发到通过无线LAN。
-
第二个将记录添加到NAT表中,从私人子网通过网关笔记本电脑发出来自私人子网的单个机器的化妆台数据包,因为来自网关笔记本电脑本身的数据包(当您使用时,家用路由器再次执行相同的操作接触互联网)
-
第三条规则将所有来自单个机器的流量转发给他们
保存您的IP表规则,并确保它们在启动时自动加载。这通常可以使用iptables-save
和iptables-restore
命令来完成。例如:
iptables-save > /etc/iptables.rules
编辑/etc/rc.local文件,并在退出0行之前添加以下行:
iptables-restore < /etc/iptables.rules
完成此操作后,只要遵循步骤2中的配置,就可以从连接到以太网开关的机器访问Internet。
概括
在上述步骤之后,我确实通过以太网开关将一组计算机串在一起。计算机共享一个专用网络,可以相互通信。专用网络通过无线连接连接到路由器,也可以从专用网络内部连接Internet。