K8S环境搭建

环境参数:

  • 系统:ubuntu20.04
  • k8s:1.25.3
  • 容器运行时:containerd 1.5.9

文中介绍了基于 containerdcri-o 两种环境的搭建,对于 containerd 特定的操作会标注 D , cri-o 特定的操作标注 O

关闭防火墙

sudo ufw disable

关闭swap

临时关闭:

swapoff -a

永久关闭:

sed -i '/ swap / s/^/#/' /etc/fstab

关闭之后,使用top命令查看swap分区的情况

时间同步(使用chrony)

apt -y install chrony
chronyc sources -v

内核参数调整 (D)

使用docker会自动配置,但使用containerd需手动配置。
允许iptables检查桥接流量,若要显式加载此模块,需运行 modprobe br_netfilter
为了让Linux节点的 iptables 能够正确的查看桥接流量,还需要确认 net.bridge.bridge-nf-call-iptables 设置为 1

# 加载模块
modprobe overlay
modprobe br_netfilter

# 开机加载
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

设置所需的 sysctl 参数,参数在重新启动后保持不变 (D O)

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

应用 sysctl 参数而不重新启动

sysctl --system

下载docker.io(O)

sudo apt update
sudo apt -y install docker.io

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}

EOF

systemctl restart docker.service

# 验证是否成功
docker info | grep Cgroup

下载containerd(D)

sudo apt update
sudo apt -y install containerd

systemctl status containerd

containerd --version

ctr version

sudo mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml

要在国内使用,需更换镜像源

grep sandbox_image /etc/containerd/config.toml

命令打出来是 sandbox_image = 'registry.k8s.io/pause' ,这个源国内无法使用,更换为阿里源:

sudo sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml

修改完重启containerd服务

systemctl restart containerd

安装kubeadm kubectl kubelet

首先添加gpg证书

sudo apt update && sudo apt install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

sudo apt update

安装

# 安装指定版本
sudo apt install -y kubeadm=1.25.0-00 kubelet=1.25.0-00 kubectl=1.25.0-00

# 安装最新版本
sudo apt install -y kubelet kubeadm kubectl

安装cri-dockerd(O)

curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd_0.2.6.3-0.ubuntu-focal_amd64.deb
sudo dpkg -i cri-dockerd_0.2.6.3-0.ubuntu-focal_amd64.deb

修改如下配置

vim /lib/systemd/system/cri-docker.service

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image registry.aliyuncs.com/google_containers/pause:3.7

重启服务

systemctl daemon-reload && systemctl restart cri-docker.service

初始化集群

kubeadm init \
--apiserver-advertise-address={你自己的内网IP} \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.25.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--token-ttl=0 \
--cri-socket {endpoint(unix:///run/cri-dockerd.sock or unix:///run/containerd/contaienrd.sock)}

安装网络插件,此处选择 flannel

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
posted @ 2022-12-06 09:22  xDaniel  阅读(415)  评论(0编辑  收藏  举报