迷你服务器集群环境系列(2)——虚拟机安装配置

Posted by

上一篇文章整体讲了这个集群环境系列的主要目标。

那么从本篇开始,就逐一进行集群环境的搭建。

一、环境准备

上一篇文章我们提到了,我们会将k8s集群搭建在具备32G内存的Xeon E3 1240L v3上。

我们在系统上安装虚拟机。

在本集群中,总共采用3个控制节点+4个工作节点,即总共需要搭建7个虚拟机。

其中

  • 控制节点配置:2核+2G内存+200G盘,名称为k8smaster01,k8smaster02,k8smaster03
  • 工作节点配置:4核+4G内存+2000G盘,名称为k8snode01,k8snode02,k8snode03,k8snode04

网络部分

  • 采用bridge方式将节点放在同一个网段内:underlay: 192.168.3.0/24 pod:172.21.0.0/16 service:172.22.0.0/16
  • 每台机器仅有一张网卡连接到bridge。由于bridge不能直接访问,每个节点不能直接控制、同时也不能访问外网。因此搭建两台额外的机器,一台为虚拟路由器,采用pfsense,另一台为跳板机,采用bastillion,用于登录到各个节点。如下的教程中不会涉及这两台机器的搭建,但原理为各分配两张网卡给这两台机器,一个用于外网,一个用于bridge交换机。
  • 这里同时配置一下pfsense上的dns服务,将集群的节点名称加到静态dns中
    • 域:cluster
    • k8smaster01.cluster:192.168.3.11
    • k8smaster02.cluster:192.168.3.12
    • k8smaster03.cluster:192.168.3.13
    • k8snode01.cluster:192.168.3.21
    • k8snode02.cluster:192.168.3.22
    • k8snode03.cluster:192.168.3.23
    • k8snode04.cluster:192.168.3.24
    • mws-cluster001.cluster:192.168.3.11
    • 最后一个为集群名称

二、系统安装配置

对于操作系统方面,这里选择最新出的debian 11版本进行安装。

从debian官网下载netinst的镜像文件,配置到已经创建好的虚拟机中,进行开机安装,同时配置好机器的ip地址、机器名字。注意,安装的时候并未配置任何网络信息,一方面是后面会单独配置,另一方面进行最小化安装,避免安装不需要的软件包。

这里简单说一下步骤

第一步,刚进入系统,安装必要的软件:apt install ssh-server resolvconf

第二步,启用root登陆ssh。编辑打开nano /etc/ssh/sshd-config。修改PermitRootLogin为yes。

第三步,修改网卡配置。首先查看网卡ip addr。可以看到这里的网卡为ens3。然后打开nano /etc/network/interface进行添加。这里的ip地址等信息根据不同的机器进行对应的修改。

auto ens3
iface ens3 inet static
address 192.168.3.11
netmask 255.255.255.0
gateway 192.168.3.1
dns-nameservers 192.168.3.1
dns-search cluster

第四步,修改/etc/apt/sources.list,注释掉cdrom,同时增加apt源,如:

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

接下来就是其他设置

  • 关闭防火墙:iptables -nL。默认无规则,无需执行。
  • 关闭selinux:默认没有安装,无需执行。
  • NTP时间同步配置:默认已经安装了systemd-timesyncd,无需特殊配置

ipset/ipvs安装与加载。ipvs用于网络流量转发和负载均衡等,是iptables的替代。

apt update
apt install -y ipset ipvsadm

如果没有加载nf_conntrack或者ip_vs内核模块,则可以增加内核模块加载
cat <<EOF >/etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF

安装完成之后关闭swap

关闭swap
swapoff -a
nano /etc/fstab
注释掉swap

加载内核模块以及内核参数

cat <<EOF >/etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

cat <<EOF >/etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
#vm.swappiness=0
EOF

三、安装containerd

1.设置containerd的apt repo

apt update
apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

2.安装containerd

apt-get update

apt install containerd.io

3.配置containerd所使用的cgroup驱动(注意:此项必须,否则无法正常工作)

containerd config default > /etc/containerd/config.toml

查找/etc/containerd/config.toml中
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]这一项下面的
SystemdCgroup选项,将其改为true

4.修改containerd的镜像源。修改存储路径。//TODO

5.重启containerd,生效配置

systemctl restart containerd

四、安装k8s相关工具

安装k8s相关工具需要能够访问google等的源。由于网络问题,需要先做一些配置,绕过网络问题:

apt-get update && apt-get install -y apt-transport-https

curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/kubernetes.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

apt-get update

apt-get install -y kubelet=1.24.1* kubeadm=1.24.1* kubectl=1.24.1*

五、总结

到此为止,初始化k8s集群前的准备工作就已经完成了。

接下来,就是初始化k8s的相关流程。

Leave a Reply