使用 Virtualbox 安装部署 Kubernetes 集群(一)

Kubernetes 集群的部署是我们学习 Kubernetes的最大阻碍,本节将从 Virtualbox 安装 CentOS8 开始,一步步搭建一套包含单台 Master 节点和三台 Worker 节点的完整的 Kubernetes 集群。

Tips: Kubernetes集群的搭建需要宿主机有 8G 及以上内存和 50G 以上的磁盘空间。

1. 下载/更新虚拟机 Virtualbox

如果之前的读者没有使用虚拟机,这里请先打开下载页,下载符合自己系统的虚拟机工具。

image-20200710190232876

已安装的用户,也请尽量升级自己的虚拟机版本,尤其对于Windows10的系统,最好将虚拟机升级到比较新的6.1版本,可以避免很多bug。

3. 下载CentOS8 镜像

我们使用阿里云的开源镜像站获取最新的 CentOS8 镜像,注意选择以x86_64-boot.iso结尾的镜像。

image-20200710191306004

2. 虚拟机安装前设定

CentOS8 虚拟机需要:

  • 2GB 内存;
  • 2核心 CPU;
  • 20GB 硬盘;
  • 使用CentOS8安装镜像;
  • 桥接网络。

详细步骤

打开 Virutalbox,新建虚拟机:

图片描述

进入专家模式

图片描述

这里将虚拟机名称设为 master-1 以便标记区分,将内存设为 2048M:

图片描述

点击创建,将硬盘文件大小改为 20GB,设定动态分配,然后点击创建完成初步设定。
图片描述

在新建好的虚拟机 master-1 上右键设置:

图片描述

在设置页的系统设定中,配置处理器数量为2:

图片描述

设定以下载好的 CentOS8 镜像启动虚拟机:
图片描述

图片描述

配置网络连接方式为桥接网卡,下面的网卡选择当前操作系统网络连接正在使用的、可以连接外网的网卡。

图片描述

设定结束后,点击OK。

4. 安装 CentOS8

在安装过程中,我们需要设定:

  1. 英文环境;
  2. 联通网络;
  3. 软件源;
  4. 自定义分区策略,只保留一个分区/,设定为ext4文件系统(注意一定不要swap交换分区,否则需要在系统中手动关闭);
  5. minimal 最小化安装;
  6. 关闭 Kdump;
  7. 东八区(上海时区);
  8. root 账户密码;
  9. 安装完成后移除光驱。

详细步骤:

这里以 Windows 下的 Virutalbox 为例,Linux、macOS 的下的操作与它几乎一致。

在master-1上右键,选择正常启动。

图片描述

使用光标选择 Install CentOS Linux 8,回车确认

图片描述

引导加载过后,出现安装界面,这里我们使用默认的英文环境,不要更改,直接点击Continue
图片描述

配置网络,选择Network & Host Name

图片描述

将网卡连接的 off变更为on,然后点击左上角的Done
图片描述

配置安装源,选择 Installation Source

图片描述

选择https://,在地址栏中填入mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/。URL type 选择 repository URL,然后点击左上角的 Done 完成设定。

图片描述

设定安装硬盘与分区,点击 Installation Dest

图片描述

点击要安装 CentOS8 的硬盘,注意有个小对号才表示选中安装到此硬盘。

点击下方的 Custom,我们将自定义分区,然后点击左上角的Done

图片描述

分区方案选择Standard Partition,然后点击加号:

图片描述

挂载点 Mount Point 选择 /, 大小设定为20 GB, 然后点击 Add mount point

图片描述

将这个分区的文件系统设定为ext4,然后点击左上角的Done完成设定。
图片描述
第一次点击Done会出现警告,不要理会,再点一次Done

图片描述

展示磁盘分区变更,点击 Accept Changes 保存我们自定义的分区操作。

图片描述

选择Software Selection

图片描述

选择Minimal最小化安装。

图片描述

点击KDUMP

图片描述

取消 Enable Kdump前的勾选,然后点击左上角Done

图片描述

点击Time & Date设定时区:

图片描述

点击地图上长三角的位置,或者手动选择 Region:Asia, City:Shanghai,然后点击左上角的Done

图片描述

点击 Begin Installation开始安装:

图片描述

在安装界面中点击Root Password,设定 Root 账户密码:

图片描述

如果密码太弱,安装程序会进行提示,需要再点击一次 Done 确认使用弱密码。

图片描述

我们不准备使用 root 以外的账户,等待几分钟完成安装,提示可以重启。这里不要点击 reboot,鼠标脱离虚拟机(Windows下默认按 右Ctrl 键),直接关闭master-1虚拟机。

图片描述

回到 virtualbox 管理控制台,将 master-1 的光驱直接移除。然后点击ok。
图片描述

再次正常启动 master-1 虚拟机,稍等片刻,进入登录终端,使用root账号和之前设定的密码完成登录。

图片描述

输入 ip a命令查看虚拟机的分配到的IP地址。这里拿到的IP为192.168.1.12

图片描述

5. 安装 Docker 和 Kubernetes 相关工具

接下来我们将在这台 master-1 虚拟机中,安装 docker、kubeadm、kubelete、kubectl 等工具。我们将在宿主机侧,用终端工具 ssh 进入虚拟机操作。

5.1 启动终端

windows环境

对于 Windows 用户,建议先安装 cmder 终端命令行工具。

打开下载页面下载压缩包,放到合适的地方解压。
图片描述

进入解压后的目录,双击 Cmder.exe 启动终端。

图片描述

*nix 环境

对于 Linux 和 macOS 用户,请打开自己惯用的终端工具。

5.2 安装Docker 与 K8s

使用 ssh 命令登录 master-1 虚拟机终端。

ssh root@192.168.1.12 输入密码后登录:

图片描述

接下来我们来安装 Docker 、Kubernetes 运行环境。

Tips:可以将这些命令保存到install.sh中,然后执行 sh ./install.sh安装。

操作步骤如下

# 将CentOS8 的软件源更换成国内的阿里源
rm -fr /etc/yum.repos.d/*
dnf config-manager --add-repo https://mirrors.aliyun.com/repo/Centos-8.repo
# 添加 docker软件源
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 添加 Kubernetes 软件源
cat <<EOF > /etc/yum.repos.d/Kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 更新软件
dnf update
# 安装Docker相关依赖
dnf install -y https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.2.el7.x86_64.rpm
# 获取阿里云k8s镜像源对应的版本
 version=`curl -s https://github.com/AliyunContainerService/k8s-for-docker-desktop/blob/master/images.properties|grep kube-apiserver:v|awk -F kube-apiserver:v '{print $2}'|awk -F '<' '{print $1}'`
echo $version > .k8s.version
# 安装 Docker 和 k8s 工具
dnf install -y docker-ce kubeadm-$version kubectl-$version kubelet-$version tc

# 关闭 Selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 关闭并禁用firewalld
systemctl stop firewalld
systemctl disable firewalld
# 设定iptables规则
iptables -P INPUT ACCEPT
iptables -F
# 设定允许ipv4路由转发
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sysctl -p
# 设定 Docker cgroup 驱动模式为 systemd
mkdir /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

# 设定docker kubelet开机自启
systemctl enable docker
systemctl enable kubelet

执行docker --versionkubeadm version确认安装完成。

图片描述

6. 小结

至此,第一部分操作结束,master-1 虚拟机上已经安装好必要的工具,下一节我们开始部署 Kubernetes集群。