使用 Virtualbox 安裝部署 Kubernetes 集群(一)
Kubernetes 集群的部署是我們學(xué)習(xí) Kubernetes的最大阻礙,本節(jié)將從 Virtualbox 安裝 CentOS8 開(kāi)始,一步步搭建一套包含單臺(tái) Master 節(jié)點(diǎn)和三臺(tái) Worker 節(jié)點(diǎn)的完整的 Kubernetes 集群。
Tips: Kubernetes集群的搭建需要宿主機(jī)有 8G 及以上內(nèi)存和 50G 以上的磁盤(pán)空間。
1. 下載/更新虛擬機(jī) Virtualbox
如果之前的讀者沒(méi)有使用虛擬機(jī),這里請(qǐng)先打開(kāi)下載頁(yè),下載符合自己系統(tǒng)的虛擬機(jī)工具。
已安裝的用戶(hù),也請(qǐng)盡量升級(jí)自己的虛擬機(jī)版本,尤其對(duì)于Windows10的系統(tǒng),最好將虛擬機(jī)升級(jí)到比較新的6.1版本,可以避免很多bug。
3. 下載CentOS8 鏡像
我們使用阿里云的開(kāi)源鏡像站獲取最新的 CentOS8 鏡像,注意選擇以x86_64-boot.iso
結(jié)尾的鏡像。
2. 虛擬機(jī)安裝前設(shè)定
CentOS8 虛擬機(jī)需要:
- 2GB 內(nèi)存;
- 2核心 CPU;
- 20GB 硬盤(pán);
- 使用CentOS8安裝鏡像;
- 橋接網(wǎng)絡(luò)。
詳細(xì)步驟
打開(kāi) Virutalbox,新建虛擬機(jī):
進(jìn)入專(zhuān)家模式
這里將虛擬機(jī)名稱(chēng)設(shè)為 master-1 以便標(biāo)記區(qū)分,將內(nèi)存設(shè)為 2048M:
點(diǎn)擊創(chuàng)建,將硬盤(pán)文件大小改為 20GB,設(shè)定動(dòng)態(tài)分配,然后點(diǎn)擊創(chuàng)建完成初步設(shè)定。
在新建好的虛擬機(jī) master-1 上右鍵設(shè)置:
在設(shè)置頁(yè)的系統(tǒng)設(shè)定中,配置處理器數(shù)量為2:
設(shè)定以下載好的 CentOS8 鏡像啟動(dòng)虛擬機(jī):
配置網(wǎng)絡(luò)連接方式為橋接網(wǎng)卡,下面的網(wǎng)卡選擇當(dāng)前操作系統(tǒng)網(wǎng)絡(luò)連接正在使用的、可以連接外網(wǎng)的網(wǎng)卡。
設(shè)定結(jié)束后,點(diǎn)擊OK。
4. 安裝 CentOS8
在安裝過(guò)程中,我們需要設(shè)定:
- 英文環(huán)境;
- 聯(lián)通網(wǎng)絡(luò);
- 軟件源;
- 自定義分區(qū)策略,只保留一個(gè)分區(qū)
/
,設(shè)定為ext4
文件系統(tǒng)(注意一定不要swap交換分區(qū),否則需要在系統(tǒng)中手動(dòng)關(guān)閉); - minimal 最小化安裝;
- 關(guān)閉 Kdump;
- 東八區(qū)(上海時(shí)區(qū));
- root 賬戶(hù)密碼;
- 安裝完成后移除光驅(qū)。
詳細(xì)步驟:
這里以 Windows 下的 Virutalbox 為例,Linux、macOS 的下的操作與它幾乎一致。
在master-1上右鍵,選擇正常啟動(dòng)。
使用光標(biāo)選擇 Install CentOS Linux 8
,回車(chē)確認(rèn)
引導(dǎo)加載過(guò)后,出現(xiàn)安裝界面,這里我們使用默認(rèn)的英文環(huán)境,不要更改,直接點(diǎn)擊Continue
。
配置網(wǎng)絡(luò),選擇Network & Host Name
將網(wǎng)卡連接的 off
變更為on
,然后點(diǎn)擊左上角的Done
配置安裝源,選擇 Installation Source
選擇https://
,在地址欄中填入mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/
。URL type 選擇 repository URL
,然后點(diǎn)擊左上角的 Done
完成設(shè)定。
設(shè)定安裝硬盤(pán)與分區(qū),點(diǎn)擊 Installation Dest
:
點(diǎn)擊要安裝 CentOS8 的硬盤(pán),注意有個(gè)小對(duì)號(hào)才表示選中安裝到此硬盤(pán)。
點(diǎn)擊下方的 Custom,我們將自定義分區(qū),然后點(diǎn)擊左上角的Done
。
分區(qū)方案選擇Standard Partition
,然后點(diǎn)擊加號(hào):
掛載點(diǎn) Mount Point 選擇 /
, 大小設(shè)定為20 GB
, 然后點(diǎn)擊 Add mount point
:
將這個(gè)分區(qū)的文件系統(tǒng)設(shè)定為ext4
,然后點(diǎn)擊左上角的Done
完成設(shè)定。
第一次點(diǎn)擊Done
會(huì)出現(xiàn)警告,不要理會(huì),再點(diǎn)一次Done
:
展示磁盤(pán)分區(qū)變更,點(diǎn)擊 Accept Changes
保存我們自定義的分區(qū)操作。
選擇Software Selection
:
選擇Minimal
最小化安裝。
點(diǎn)擊KDUMP
:
取消 Enable Kdump
前的勾選,然后點(diǎn)擊左上角Done
:
點(diǎn)擊Time & Date
設(shè)定時(shí)區(qū):
點(diǎn)擊地圖上長(zhǎng)三角的位置,或者手動(dòng)選擇 Region:Asia
, City:Shanghai
,然后點(diǎn)擊左上角的Done
:
點(diǎn)擊 Begin Installation
開(kāi)始安裝:
在安裝界面中點(diǎn)擊Root Password
,設(shè)定 Root 賬戶(hù)密碼:
如果密碼太弱,安裝程序會(huì)進(jìn)行提示,需要再點(diǎn)擊一次 Done 確認(rèn)使用弱密碼。
我們不準(zhǔn)備使用 root 以外的賬戶(hù),等待幾分鐘完成安裝,提示可以重啟。這里不要點(diǎn)擊 reboot
,鼠標(biāo)脫離虛擬機(jī)(Windows下默認(rèn)按 右Ctrl 鍵),直接關(guān)閉master-1虛擬機(jī)。
回到 virtualbox 管理控制臺(tái),將 master-1 的光驅(qū)直接移除。然后點(diǎn)擊ok。
再次正常啟動(dòng) master-1 虛擬機(jī),稍等片刻,進(jìn)入登錄終端,使用root賬號(hào)和之前設(shè)定的密碼完成登錄。
輸入 ip a
命令查看虛擬機(jī)的分配到的IP地址。這里拿到的IP為192.168.1.12
。
5. 安裝 Docker 和 Kubernetes 相關(guān)工具
接下來(lái)我們將在這臺(tái) master-1 虛擬機(jī)中,安裝 docker、kubeadm、kubelete、kubectl 等工具。我們將在宿主機(jī)側(cè),用終端工具 ssh 進(jìn)入虛擬機(jī)操作。
5.1 啟動(dòng)終端
windows環(huán)境
對(duì)于 Windows 用戶(hù),建議先安裝 cmder 終端命令行工具。
打開(kāi)下載頁(yè)面下載壓縮包,放到合適的地方解壓。
進(jìn)入解壓后的目錄,雙擊 Cmder.exe 啟動(dòng)終端。
*nix 環(huán)境
對(duì)于 Linux 和 macOS 用戶(hù),請(qǐng)打開(kāi)自己慣用的終端工具。
5.2 安裝Docker 與 K8s
使用 ssh 命令登錄 master-1 虛擬機(jī)終端。
ssh root@192.168.1.12
輸入密碼后登錄:
接下來(lái)我們來(lái)安裝 Docker 、Kubernetes 運(yùn)行環(huán)境。
Tips:可以將這些命令保存到
install.sh
中,然后執(zhí)行sh ./install.sh
安裝。
操作步驟如下
# 將CentOS8 的軟件源更換成國(guó)內(nèi)的阿里源
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相關(guān)依賴(lài)
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鏡像源對(duì)應(yīng)的版本
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
# 關(guān)閉 Selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 關(guān)閉并禁用firewalld
systemctl stop firewalld
systemctl disable firewalld
# 設(shè)定iptables規(guī)則
iptables -P INPUT ACCEPT
iptables -F
# 設(shè)定允許ipv4路由轉(zhuǎn)發(fā)
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sysctl -p
# 設(shè)定 Docker cgroup 驅(qū)動(dòng)模式為 systemd
mkdir /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 設(shè)定docker kubelet開(kāi)機(jī)自啟
systemctl enable docker
systemctl enable kubelet
執(zhí)行docker --version
與kubeadm version
確認(rèn)安裝完成。
6. 小結(jié)
至此,第一部分操作結(jié)束,master-1 虛擬機(jī)上已經(jīng)安裝好必要的工具,下一節(jié)我們開(kāi)始部署 Kubernetes集群。