一、概述
本次安装采用 Ubuntu Server X64 18.04 LTS 版本安装 kubernetes 集群环境,集群节点为 1 主 2 从模式,此次对虚拟机会有些基本要求,如下:
- OS:Ubuntu Server X64 18.04 LTS(16.04 版本步骤相同,再之前则不同)
- CPU:最低要求,1 CPU 2 核
- 内存:最低要求,2 GB
- 磁盘:最低要求,20 GB
1.1 节点配置
| 主机名称 | IP地址 | 角色 | OS | CPU/内存 | 硬盘 | | —- | —- | —- | —- | —- | —- | | kubernetes-master | 192.168.87.110 | Master | Ubuntu Server 18.04 | 2核心2G | 20G | | kubernetes-node-01 | 192.168.87.120 | Node-01 | Ubuntu Server 18.04 | 2核心2G | 20G | | kubernetes-node-01 | 192.168.87.121 | Node-02 | Ubuntu Server 18.04 | 2核心2G | 20G |
2.配置Kubernetes基础集群(1主-2从)
2.1 统一环境配置
注意:以下步骤请在制作 VMWare 镜像时一并完成,避免逐台安装的痛苦! 本次安装采用的方式是:安装一台虚拟机,操作系统是Ubuntu Server 18.04,机器上安装Docker以及Kubeadm、Kubectl、Kubelet、时间同步服务器,然后在基于本机器克隆Kubernetes-Master机器、Kubernetes-Node-01机器、Kubernetes-Node-02机器。
安装基础虚拟机步骤
配置好虚拟机的存放位置,然后无脑下一步即可。
编辑虚拟机选择Server镜像,选择完毕后点击确定。
启动虚拟机,进去虚拟机的配置
语言配置,选择English,然后直接Enter键。
Tab键切换到选择Done,然后直接Enter键。
选择Install Ubuntu
这里使用虚拟机的虚拟网卡根据DHCP配分的动态IP地址,直接Tab键切换到Done,然后直接Enter键。
这里是配置代理的地址,我们暂时不需要,直接Tab键切换到Done,然后直接Enter键。
这里需要更改Ubuntu Server安装软件的源,这里我使用的是阿里云的ubuntu软件源,将 http://archive.ubuntu.com/ubuntu 更改为:https://mirrors.aliyun.com/ubuntu,然后Tab切换到Done,然后直接Enter键。
Tab键切换到Use An Entire Disk And Set Up LVM,然后Enter键。
直接Enter键。
选择ubuntu-lv,按Enter键,选择Edit。
进入编辑界面后,将Size修改,这里Size的最大值是18.996,然后Tab键切换到Save,按Enter键。
设置好ubuntu-lv之后,Tab键切换到Done,然后按Enter键。
这里Tab键选择Continue,然后按Enter键。
然后到设置虚拟机机器信息的界面,Your name:表示你的名字;Your server ‘s name:表示服务器的名称;Pick a username:登录服务器的用户名称;Choose a password:表示服务器的密码;
Confirm your password:再次确认你的服务器密码(必须和上面的Choose a password输入的密码一致),然后Tab键切换到Done,再按Enter键。
然后到是否开启SSH的界面,这里Tab键切换到 Install OpenSSH server,然后按空格键【成功勾选上之后会出现一个 [X] 的图案】,然后Tab键切换到Done,按Enter键。
最后的界面是询问是否要提前安装软件,这里直接Tab键切换到Done,然后按Enter键。
开始安装Ubuntu Server 18.04的界面,等待安装完毕即可。
安装完成的界面,直接选择Reboot Now,按Enter键。
这里需要按一下Enter键。
输入刚刚配置服务器的账户名和密码,按Enter键登录即可。
这里需要输入:ip a命令获取IP地址。打开Windows的终端【这里我使用的是Windows Terminal】
得到ens33虚拟机的网卡的IP地址是:192.168.87.151
使用终端的ssh命令连接虚拟机,ssh 用户名@IP地址
即可连接上虚拟机,会出现是否使用ssh连接虚拟机,输入yes即可,然后输入该账户的密码即可连接成功!
ssh命令如下:
# ssh 用户名称@IP地址
ssh matrix@192.168.87.151
连接上虚拟机开始配置root超级管理员账户的密码
# 配置root账户的密码
sudo passwd root
# 输出如下:
[sudo] password for matrix: # 这个matrix账户是我刚刚配置虚拟机时的账户,输入这个账户的密码即可
Enter new UNIX password: # 配置root账户的新密码
Retype new UNIX password: # 再次确认root账户的新密码
passwd: password updated successfully # 说明配置成功
使用su命令切换到root账户
# su 用户名称
su root
# 输出如下:
Password: #这里要输入刚刚配置的root账户的密码
配置ssh登录可以使用root账户
# 编辑sshd_config配置文件,按Enter查看sshd_config文件
vi /etc/ssh/sshd_config
# 找到PermitRootLogin prohibit-password,按i键进去编辑模式,将前面的#号删除
# 然后将PermitRootLogin prohibit-password修改成:PermitRootLogin yes
# 再然后按ESC键,按shift键 + ;键,然后出现一个: 在: 后面输入wq!,再按Enter键位接口。
PermitRootLogin yes
修改sshd_config文件后,需要然修改的配置生效。
# 让刚刚配置的ssh生效
service ssh restart
关闭终端,重新打开一个,使用root账户登录,显示下图表示登录成功:
然后使用apt命令检查刚刚配置服务器时使用的阿里云的软件源是否配置成功!
# 获取需要更新的软件包信息
apt-get update
# 输出如下:
Hit:1 https://mirrors.aliyun.com/ubuntu bionic InRelease
Hit:2 https://mirrors.aliyun.com/ubuntu bionic-updates InRelease
Hit:3 https://mirrors.aliyun.com/ubuntu bionic-backports InRelease
Hit:4 https://mirrors.aliyun.com/ubuntu bionic-security InRelease
Reading package lists... Done
然后开始配置Kubernetes的基础虚拟机,然后再克隆三台虚拟机,分别是Kubernetes-Master、Kubernetes-Node-01、Kubernetes-Node-02
关闭交换空间
# 关闭交换空间
swapoff -a
# 查看交换空间情况 Swap全部为0
free
设置交换空间,避免开启启动交换空间
# 注释 swap 开头的行
vi /etc/fstab
关闭防火墙
# 防火墙在系统启动时停止并禁用
ufw disable
# 输出如下
Firewall stopped and disabled on system startup
配置DNS
# 取消 DNS 行注释,并增加 DNS 配置如:114.114.114.114,修改后重启下计算机【使用shutdown -r now】
vi /etc/systemd/resolved.conf
安装Docker
# 更新数据源
apt-get update
# 安装所需依赖,这里会出现界面需要选择yes
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# 安装 GPG 证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 新增数据源
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 再次更新软件源
apt-get -y update
# 更新并安装 Docker CE
apt-get update && apt-get install -y docker-ce
# 设置Docker开机启动
systemctl enable docker
配置Docker镜像加速
注意:国内镜像加速器可能会很卡,请替换成你自己阿里云的镜像加速器,地址如:https://yourseif.mirror.aliyuncs.com,在阿里云控制台的 容器镜像服务 -> 镜像加速器 菜单中可以找到。
在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
以下阿里云镜像加速源是我自己的,你可以换成你们自己的。
# 非root账户权限下配置
# etc配置文件目录下创建docker目录
sudo mkdir -p /etc/docker
# docker目录下创建daemon.json配置文件,并追加docker镜像源
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fp7j9ykk.mirror.aliyuncs.com"]
}
EOF
# 重新加载配置文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
# root账户权限下配置
# etc配置文件目录下创建docker目录
mkdir -p /etc/docker
# docker目录下创建daemon.json配置文件,并追加docker镜像源
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fp7j9ykk.mirror.aliyuncs.com"]
}
EOF
# 重新加载配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker
配置Docker Cgroup Driver
# 使用docker info 查看 Docker的Cgroup Driver
docker info
# 需要将Docker Cgroup Driver的cgroupfs更改为systemd
# 在daemon.json文件中追加如下内容:"exec-opts": ["native.cgroupdriver=systemd"]
vi /etc/docker/daemon.json
# 重新加载配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker
修改后的daemon.json内容如下:
{
"registry-mirrors": ["https://fp7j9ykk.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
安装 Kubernetes 必备工具
安装三个 Kubernetes 必备工具,分别是 kubeadm、kubelet、kubectl
# 安装系统工具
apt-get update && apt-get install -y apt-transport-https
# 安装 GPG 证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# 写入软件源;注意:我们用系统代号为 bionic,但目前阿里云不支持,所以沿用 16.04 的 xenial
cat << EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 再次更新软件源
apt-get -y update
# 查看kubuadm、kubectl、kubelet 可下载的版本
apt-cache madison <软件包名称>
# 安装指定版本的 kubernetes 版本号:1.23.6-00
apt-get update && apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
同步时间
设置时间
# Ubuntu linaro(Lubuntu) 修改系统时区 (Cubieboard CC-A80修改系统时区)dpkg-reconfigure tzdata dpkg-reconfigure tzdata
选择 Asia(亚洲)
- 选择 Shanghai(上海)
设置系统时间与网络时间同步(cn.pool.ntp.org 位于中国的公共 NTP 服务器)
ntpdate cn.pool.ntp.org
将系统时间写入硬件时间
hwclock —systohc
- **确认时间**
```shell
# 确认虚拟机的时间是否和宿主机的一致
date
# 输出如下:
Wed May 18 17:16:08 CST 2022
修改 cloud.cfg
主要作用就是防止重启虚拟机后主机名称还原
# 防止虚拟机主机名还原
vi /etc/cloud/cloud.cfg
# 该配置默认为 false,修改为 true 即可
preserve_hostname: true
2.2 重启虚拟机再关机
# 重启
shutdown -r now
# 关机
shutdown -h now
3.单独节点配置
3.1 分别克隆三台虚拟机
将刚刚配置好的Kubernetes虚拟机再克隆三台虚拟机,分别为:Kubernetes-Master、Kubernetes-Node-01、Kubernetes-Node-02
安装以上图片的步骤克隆好即可。
注意:需要为 Master 和 Node 节点单独配置对应的 IP地址 和 主机名称
配置IP地址
配置IP地址前先获取宿主机的网关地址。
# 获取宿主机网关地址【配置IP地址时需要将网关地址写到ens33网卡的gateway4、nameservers的addresses里面】
route -n
# 输出如下,可以得到我这台机器的网关地址为192.168.87.2
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.87.2 0.0.0.0 UG 100 0 0 ens33
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.87.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.87.2 0.0.0.0 255.255.255.255 UH 100 0 0 ens33
编辑 vi /etc/netplan/50-cloud-init.yaml 配置文件,修改内容如下:
3.2 Kubernetes-Master配置
network:
ethernets:
ens33:
addresses: [192.168.87.110/24]
gateway4: 192.168.87.2
nameservers:
addresses: [192.168.87.2]
version: 2
使用 netplan apply 命令让配置生效,然后修改主机名和配置host。
# 修改主机名
hostnamectl set-hostname kubernetes-master
# 配置 hosts
cat >> /etc/hosts << EOF
192.168.87.110 kubernetes-master
EOF
3.3 Kubernetes-Node-01配置
network:
ethernets:
ens33:
addresses: [192.168.87.120/24]
gateway4: 192.168.87.2
nameservers:
addresses: [192.168.87.2]
version: 2
使用 netplan apply 命令让配置生效,然后修改主机名和配置host。
hostnamectl set-hostname kubernetes-node-01
# 配置 hosts
cat >> /etc/hosts << EOF
192.168.87.120 kubernetes-node-01
EOF
3.4 Kubernetes-Node-02配置
network:
ethernets:
ens33:
addresses: [192.168.87.121/24]
gateway4: 192.168.87.2
nameservers:
addresses: [192.168.87.2]
version: 2
使用 netplan apply 命令让配置生效,然后修改主机名和配置host。
# 修改主机名
hostnamectl set-hostname kubernetes-node-02
# 配置 hosts
cat >> /etc/hosts << EOF
192.168.87.121 kubernetes-node-02
EOF