k8s 部署步骤整理(containerd)

版本:v1.31

容器运行时:containerd

网络插件:flannel

系统:Ubuntu22.04

安装部署步骤

安装containerd

bash 复制代码
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
apt-get install containerd.io -y

修改内核

bash 复制代码
# flannel 需要开启此模块
sudo modprobe br_netfilter
# br_netfilter模块持久化
echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
# 允许 IPv4 转发
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables=1
EOF
sudo sysctl --system

安装 kubelet kubeadm kubectl

bash 复制代码
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

配置 containerd

bash 复制代码
containerd config default > /etc/containerd/config.toml
# 打开/etc/containerd/config.toml,配置SystemdCgroup
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
      ...
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
        SystemdCgroup = true
# 配置镜像加速,可能失效。如果失效了 重新找其他可用的代理
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
          endpoint = ["k8s.monlor.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["dockerproxy.cn"]
          
systemctl restart containerd.service
systemctl status containerd.service

关闭自带防火墙

bash 复制代码
systemctl stop ufw
systemctl stop apparmor
systemctl disable apparmor
systemctl disable ufw

停止交换分区

bash 复制代码
swapoff -a
# 注释掉 swap 分区
vim /etc/fstab
#/swap.img       none    swap    sw      0       0

部署初始化集群

bash 复制代码
# apiserver 高可用用来替换后面 SLB 的 VIP 地址,如果不用高可用可以不写
echo '10.204.121.215 cluster-endpoint'>> /etc/hosts
# 初始化集群
kubeadm init --control-plane-endpoint=cluster-endpoint --upload-certs --pod-network-cidr=10.244.0.0/16
# 安装网络插件
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
# 查看集群 pod node状态
kubectl get pod -A
kubectl get node
相关推荐
阿里云云原生10 小时前
深入内核:拆解 OpenTelemetry eBPF 探针如何优雅地“透视”多语言微服务?
云原生
2601_9618752414 小时前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj14 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵15 小时前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
正经教主15 小时前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang15 小时前
Docker 使用完整指南
运维·docker·容器
正经教主16 小时前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
qq_4523962317 小时前
第十三篇:《K8s 安全基础:RBAC、ServiceAccount、Pod Security》
java·安全·kubernetes
睡不醒男孩03082318 小时前
云原生运维实战:高并发架构下的云原生可观测性、韧性降级与自动化干预体系
数据库·kubernetes·高并发·prometheus·devops·sre·缓存调优
qq_4523962318 小时前
第十四篇:《K8s 网络模型与 CNI 插件(Calico、Flannel、Cilium)》
网络·kubernetes·php