环境规划:
ip | 主机名 | 内存 | cpu | 安装软件 | 系统版本 |
---|---|---|---|---|---|
172.17.66.66/16 | u-master01 | 4G | 2核 | kubectl,kubeadm,kubelet,etcd | 22.04 |
172.17.88.88/16 | u-node01 | 4G | 2核 | kube-proxy | 22.04 |
1、修改ubuntu系统配置
修改主机名称
root@u-master01:~# hostnamectl hostname --static u-master01
root@u-master01:~# hostname
u-master01
关闭 swap 内存
这个swap其实可以类比成 windows 上的虚拟内存,它可以让服务器在内存吃满的情况下可以保持低效运行,而不是直接卡死。但是 k8s 的较新版本都要求关闭swap。
root@u-master01:~# swapoff -a
root@u-master01:~# sed -ri 's/.*swap.*/#&/' /etc/fstab
确定当前没有开启 Swap
在终端使用命令 free -m 查看输出结果
root@u-master01:~# free -h
total used free shared buff/cache available
Mem: 3.8Gi 1.4Gi 635Mi 41Mi 1.7Gi 2.1Gi
Swap: 0B 0B 0B
可以看到最后一行是0 0 0,则表示当前没有开启。
为什么需要关闭交换分区:在集群中,我们通常是希望如果出现OOM(内存溢出)的情况,就直接终止这个进程,然后kubernetes进行故障转移,把这个进程在其他节点上重启起来。而不是,出现OOM的时候,通过交换分区来延长使用,看似没有问题也不会有报错提示给我们,但是会导致节点hang住(没有响应,卡死)。更可怕的是有一些集群的swap位于机械硬盘阵列上,大量动用swap基本可以等同于死机,你甚至连root都登录不上,不用提杀掉问题进程了,往往结局就是硬盘重启
修改配置
# Enable kernel modules
sudo modprobe overlay && \
sudo modprobe br_netfilter
# Add some settings to sysctl
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# Reload sysctl
sudo sysctl --system
2、安装docker
安装docker
sudo apt update && \
sudo apt install apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \
apt-cache policy docker-ce && \
sudo apt install -y containerd.io docker-ce docker-ce-cli && \
sudo systemctl status docker
配置docker
# Create required directories
sudo mkdir -p /etc/systemd/system/docker.service.d
# Create daemon json config file
mkdir /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://8i185852.mirror.aliyuncs.com"],
"log-driver"