一. 安装版本
Kubeadm使用cni方式安装
版本:v1.26.0
二. 机器准备
1. 机器规格
本次安装1个master和1个node节点
Master: 192.168.64.6
Node: 192.168.64.7
规则:
CPU:2
内存:4G
系统:ubuntu20.04
磁盘:30G
Master使用cri-dockered方案安装
Node使用containered方案安装
2. 虚拟机准备
创建:
multipass launch -n master01 -c 2 -m 4G -d 40G
查看镜像:multipass find
指定版本:multipass launch -n master01 -c 2 -m 4G -d 40G 20.04
文档:
https://segmentfault.com/a/1190000023083548?utm_source=sf-similar-article
3. 机器配置
1.配置Dns
检查dns是否可用
2. 外网权限
可以访问外网
3. 时区设置
timedatectl set-timezone Asia/Shanghai date -R # 检查时区
4. 安装chrony
apt install chrony -y
修改配置:
/etc/chrony/chrony.conf
修改:pool master01 #将master01作为ntp服务器
重新启动:
root@master01:~# systemctl restart chronyd root@master01:~# systemctl enable chronyd
主从控节点同步时间
chronyc sources
5. 设置hosts
hostnamectl set-hostname master #设置主机名称
设置hosts文件:
cat >> /etc/hosts << OFF 192.168.64.6 master01 192.168.64.7 node01 OFF
6. 关闭swap
# 如果不关闭,默认的kubelet将无法启动 swapoff -a #立即生效 sed -i 's/.*swap.*/#&/' /etc/fstab # 不立即生效 free -h #查看交换分区
7. 关闭防火墙
ufw disable
8. 加载ipvs模块
modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ipvs_sh #modprobe -- nf_conntrack_ipv4 modprobe -- nf_conntrack lsmod | grep nf_conntrack
9. 内核参数配置
# 创建/etc/sysctl.d/k8s.conf,添加如下内容 cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-iptables=1 # 开启网桥模式 net.bridge.bridge-nf-call-ip6tables=1 # 开启网桥模式 net.ipv4.ip_forward=1 EOF
#生效
modprobe br_netfilter # 立即生效,重启失效,流量控制的内核模块
sysctl -p /etc/sysctl.d/k8s.conf
# 配置永久生效
cat <<EOF |tee /etc/modules-load.d/k8s.conf
br_ netfilter
EOF
10. 安装其他工具
apt install -y ipvsadm ipset
三. Docker方式CRI安装
1. docker环境准备
1. 查看系统信息
root@master01:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.5 LTS Release: 20.04 Codename: focal
2. 查看内核版本
root@master01:~# uname -r 5.4.0-137-generic root@master01:~#
3. 查看完整的linux发行版信息
root@master01:~# cat /proc/version Linux version 5.4.0-137-generic (buildd@bos01-arm64-023) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #154-Ubuntu SMP Thu Jan 5 17:03:02 UTC 2023
4. 查看所有的docker版本
root@master01:~# apt-cache madison docker-ce
5. 更新docker源
# 卸载原来的Docker以及contained
root@master01:~# apt-get remove docker docker-engine docker.io containerd runc
root@master01:~# apt remove docker-ce docker-ce-cli containerd.id -y
# 更新apt程序包索引并安装程序包,已允许apt通过https使用存储库
# 安装必要的一些系统工具
root@master01:~# sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
# 添加docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定存储库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新
apt-get update
6. 安装最新版本
# 安装 sudo apt-get install docker-ce docker-ce-cli containerd.io
# 查看版本
docker --version
docker info
# 通过systemd启动Docker服务
sudo systemctl start docker
# 可以通过status命令查看一下启动状态,此处无须管理员权限
systemctl status docker
7. 修改docker配置已适应kubelet
# 设置docker镜像加速及修改cgroups Driver
cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://registry.cn.hangzhou.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"] } EOF
重新加载
systemctl daemon-reload
systemctl restart docker
2. Ubuntu安装CRI-dockered
开源项目-替换dockershim in kubelet中
地址:
https://github.com/Mirantis/cri-dockerd
1. 下载及安装
# 下载
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd_0.3.1.3-0.ubuntu-focal_amd64.deb
# 安装
dpkg -i cri-dockerd_0.3.1.3-0.ubuntu-focal_amd64.deb
# 或者使用tgz的包进行安装
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1.arm64.tgz
cp cri-dockerd/cri-dockerd /usr/bin/
chmod +x /usr/bin/cri-dockerd
配置 cri-dockerd
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
设置配置文件
vim /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
启动 cri-docker
systemctl daemon-reload systemctl start cri-docker systemctl enable cri-docker systemctl status cri-docker
四. Kubeadm Kubelet Kubectl安装
1. kubeadm简介
kubeadm是kubernetes的集群安装工具, 能够快速完成集群的安装,能完成下面的拓扑安装
- 但节点k8s(1+0)
- 单master和多个node的k8s(1+n)
- Master ha 和多个node的k8s(m*1+n)
kubeadm在整个k8s架构的位置