使用 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
在安装过程中,我们需要设定:
- 英文环境;
- 联通网络;
- 软件源;
- 自定义分区策略,只保留一个分区
/
,设定为ext4
文件系统(注意一定不要swap交换分区,否则需要在系统中手动关闭); - 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
# 关闭 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 --version
与kubeadm version
确认安装完成。
6. 小结
至此,第一部分操作结束,master-1 虚拟机上已经安装好必要的工具,下一节我们开始部署 Kubernetes集群。