使用 VirtualBox 安装部署 Kubernetes 集群(一)
Kubernetes 集群的部署是我们学习 Kubernetes的最大阻碍,本节将从 VirtualBox 安装 CentOS8 开始,一步步搭建一套包含单台 Master 节点和三台 Worker 节点的完整的 Kubernetes 集群。
Tips: Kubernetes集群的搭建需要宿主机有 8G 及以上内存和 50G 以上的磁盘空间。
1. 下载/更新虚拟机 VirtualBox
如果之前的读者没有使用虚拟机,这里请先打开下载页,下载符合自己系统的虚拟机工具。
已安装的用户,也请尽量升级自己的虚拟机版本,尤其对于Windows10的系统,最好将虚拟机升级到比较新的6.1版本,可以避免很多bug。
3. 下载CentOS8 镜像
我们使用阿里云的开源镜像站获取最新的 CentOS8 镜像,注意选择以x86_64-boot.iso
结尾的镜像。
2. 虚拟机安装前设定
CentOS8 虚拟机需要:
2GB 内存;
2核心 cpu;
20GB 硬盘;
使用CentOS8安装镜像;
桥接网络。
详细步骤
打开 VirutalBox,新建虚拟机:
进入专家模式
这里将虚拟机名称设为 master-1 以便标记区分,将内存设为 2048M:
点击创建,将硬盘文件大小改为 20GB,设定动态分配,然后点击创建完成初步设定。
在新建好的虚拟机 master-1 上右键设置:
在设置页的系统设定中,配置处理器数量为2:
设定以下载好的 CentOS8 镜像启动虚拟机:
配置网络连接方式为桥接网卡,下面的网卡选择当前操作系统网络连接正在使用的、可以连接外网的网卡。
设定结束后,点击OK。
4. 安装 CentOS8
在安装过程中,我们需要设定:
英文环境;
联通网络;
软件源;
minimal 最小化安装;
关闭 Kdump;
东八区(上海时区);
root 账户密码;
安装完成后移除光驱。
详细步骤:
这里以 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# 关闭 Selinuxsetenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 关闭并禁用firewalldsystemctl 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 驱动模式为 systemdmkdir /etc/dockercat <<EOF > /etc/docker/daemon.json{exec-opts: [native.cgroupdriver=systemd]}EOF# 设定docker kubelet开机自启systemctl enable docker systemctl enable kubelet
执行docker --version
与kubeadm version
确认安装完成。
6. 小结
至此,第一部分操作结束,master-1 虚拟机上已经安装好必要的工具,下一节我们开始部署 Kubernetes集群。