安装前准备
贴一下官方文档:Container Runtimes
转发IPv4允许iptables检查桥接流量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
sudo modprobe overlay sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
sudo sysctl --system
|
检查是否成功装载br_netfilter
, overlay
1 2
| lsmod | grep br_netfilter lsmod | grep overlay
|
检查net.bridge.bridge-nf-call-iptables
, net.bridge.bridge-nf-call-ip6tables
, net.ipv4.ip_forward
是否设置为1
1
| sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
|
Cgroup 驱动
有两种cgroup驱动
推荐使用systemd作为统一的驱动,因为现在大多数系统使用systemd来调度进程,cgroupfs是kubelet默认使用的cgroup驱动,如果同时使用两种驱动话可能最引起冲突。如果使用cgroupv2的话也需要使用systemd。
Note: 1.22版本之后如果没有特意在KubeletConfiguration
下设置 cgroupDriver
字段,kubeadm会默认使用systemd
Container runtime
安装CRI使用了一个Github的文档:Getting started with containerd
方法一:官方二进制包
先决条件
安装runc和CNI plugins
安装方法
下载runc然后安装到到/usr/local/sbin/runc
二进制包地址
1 2
| wget https://github.com/opencontainers/runc/releases/download/v1.2.0-rc.1/runc.amd64 install -m 755 runc.amd64 /usr/local/sbin/runc
|
经测试这个方式是正确的,上一个是错误的。
安装CNI plugins
下载CNI plugins之后解压在/opt/cni/bin
1 2 3 4
| wget https://github.com/containernetworking/plugins/releases/download/v1.4.1/cni-plugins-linux-amd64-v1.4.1.tgz
mkdir -p /opt/cni/bin tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.1.tgz
|
安装containerd
Download the containerd-<VERSION>-<OS>-<ARCH>.tar.gz
archive from https://github.com/containerd/containerd/releases , verify its sha256sum, and extract it under /usr/local
:
1 2 3 4 5 6 7 8 9 10
| wget https://github.com/containerd/containerd/releases/download/v1.7.15/containerd-1.7.15-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.7.15-linux-amd64.tar.gz bin/ bin/containerd-shim-runc-v2 bin/containerd-shim bin/ctr bin/containerd-shim-runc-v1 bin/containerd bin/containerd-stress
|
systemd
使用systemd管理containerd,下载service文件到/usr/local/lib/systemd/system/containerd.service
,文件下载地址,containerd.service。
1 2 3 4 5 6 7
| wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service mv containerd.service /usr/local/lib/systemd/system/containerd.service
systemctl daemon-reload systemctl enable --now containerd
|
生成config文件
1 2 3 4 5 6
| mkdir /etc/containerd
touch /etc/containerd/config.toml
containerd config default > /etc/containerd/config.toml
|
修改config内容
1 2 3 4 5 6
| vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true
|
载入配置
1
| sudo systemctl restart containerd
|
方法二:包管理器
使用包管理器的文章部分
Ubuntu
方法三:源码编译
存在这个方法,我就不用了,可以去前面发的文档往下翻,此处只是记录一下