Ubuntu22.04基于Calico+Containerd部署v1.28.2

目录

基于Calico+Containerd的Kubernetes v1.28.2生产环境部署方案

一、环境准备

1.1 规划

1.2 先更新系统

1.3 配置Hosts

二、系统加固与优化

2.1 关闭防火墙、SELinux、Swap

2.2 转发 IPv4 并让 iptables 看到桥接流量

2.2 确认 br_netfilter 和 overlay 模块被加载:

8、通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1

三、Containerd安装

4.1 安装containerd

4.2 配置镜像加速地址

五、Kubernetes安装

5.1 安装 kubeadm、kubelet、kubectl(所有节点执行)

5.2 安装必要工具

六、Master节点初始化

1.1其他节点加入集群(其他节点执行)

七、安装Calico网络插件

7.1 下载并修改Calico

7.2修改calico.yaml文件中所有docker.io开头的镜像

7.3修改定义pod网络CALICO_IPV4POOL_CIDR的值

7.4 修改 Corefile,使用阿里云 DNS

重启 CoreDNS 以应用更改

九、监控与Dashboard

9.1 安装Metrics Server

9.2 安装Dashboard

9.3 配置RBAC

十、生产建议


以下是基于Calico+Containerd的Kubernetes v1.28.2生产环境部署方案


基于Calico+Containerd的Kubernetes v1.28.2生产环境部署方案

一、环境准备

1.1 规划

角色

主机名

IP地址

Master

master

192.168.203.131

Node1

node

192.168.203.132

1.2 先更新系统

apt update && \
apt upgrade -y

1.3 配置Hosts

cat <<EOF | sudo tee -a /etc/hosts
192.168.203.131  master
192.168.203.132 node
EOF

二、系统加固与优化

操作:所有节点

2.1 关闭防火墙、SELinux、Swap

systemctl disable --now ufw

swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

2.2 转发 IPv4 并让 iptables 看到桥接流量

cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | 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

2.2 确认 br_netfilter 和 overlay 模块被加载:

lsmod | grep br_netfilter
lsmod | grep overlay

8、通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1
 

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

三、Containerd安装

操作:所有节点

4.1 安装containerd

curl -# -O  https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.6.26-1_amd64.deb
dpkg -i containerd.io_1.6.26-1_amd64.deb
#导出默认配置
containerd config default > /etc/containerd/config.toml
#修改containerd使用SystemdCgroup
SystemdCgroup = true
#配置containerd使用国内mirror站点上的pause镜像及指定版本
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

#启动containerd服务
systemctl enable containerd --now

containerd -v
<think>嗯,用户想在Ubuntu 22.04.5上部署Kubernetes(k8s)。首先,我需要回忆一下部署K8s的基本步骤,确保步骤正确且适用于这个Ubuntu版本。 首先,用户可能需要安装容器运行时,比如Docker或者containerdKubernetes官方推荐containerd,所以应该优先考虑这个。不过用户可能对Docker更熟悉,但得确认版本兼容性。Ubuntu 22.04的仓库里应该包含合适的版本,但需要添加Docker的官方源或者使用系统自带的containerd。 接下来,安装kubeadm、kubelet和kubectl。这三个工具是部署集群的关键。需要添加Google的APT仓库,然后安装指定版本。这里要注意版本兼容性问题,特别是Ubuntu 22.04可能默认的软件包版本是否与最新的K8s兼容。可能需要指定版本号,比如1.28或更稳定的版本,避免使用过新的版本导致问题。 然后是初始化控制平面节点,使用kubeadm init。这里可能需要调整一些参数,比如pod网络CIDR,或者如果用户是在特定的网络环境下,比如有代理,可能需要配置环境变量。比如HTTP_PROXY的设置,或者镜像仓库的镜像地址,比如使用阿里云的镜像加速,因为国内访问Google的镜像可能受限。 安装CNI插件,比如Calico、Flannel或者Weave Net。用户需要选择合适的网络插件,并且确保其与K8s版本兼容。比如Flannel可能需要设置--pod-network-cidr参数,而Calico可能需要应用manifest文件。 最后,加入工作节点,使用kubeadm join命令,这需要生成的token,可能需要检查token是否过期,或者是否需要创建新的token。 另外,可能遇到的常见问题包括swap未关闭,导致kubelet无法启动,所以需要确认用户是否已经禁用swap。Ubuntu 22.04默认可能启用了swap,可以通过sudo swapoff -a临时关闭,并修改/etc/fstab永久禁用。 还有防火墙规则,比如ufw需要放行相关端口,或者直接禁用ufw,但生产环境不建议这么做。需要确保端口如6443、2379-2380、10250-10255等开放。 另外,容器运行时和kubelet的cgroup驱动需要一致,默认Ubuntu使用systemd,所以可能需要配置containerd或Docker使用systemd作为cgroup驱动,避免不匹配导致的错误。 如果用户是在单节点上测试,可能需要容忍master节点上的pod调度,通过kubectl taint命令去除污点。 总结步骤大致如下:准备环境(关闭swap、防火墙、配置hosts),安装容器运行时,安装kubeadm等工具,初始化控制平面,安装网络插件,加入节点,最后测试集群状态。 现在需要将这些步骤以清晰的中文结构呈现,确保用户能够逐步跟随,同时注意使用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$。例如,涉及到的命令可能需要用代码块,但根据用户的要求,可能不需要特别处理,只需用中文描述即可。同时注意使用正确的术语,避免翻译错误,比如“控制平面节点”而不是“主节点”以符合最新术语。</think>以下是在Ubuntu 22.04.5上部署Kubernetes(k8s)的详细步骤: --- ### 一、环境准备 1. **禁用Swap** ```bash sudo swapoff -a # 临时关闭 sudo sed -i '/swap/s/^/#/' /etc/fstab # 永久注释swap行 ``` 2. **配置主机名与DNS解析** ```bash sudo hostnamectl set-hostname k8s-master # 控制平面节点 # 或在所有节点配置/etc/hosts,例如: # 192.168.1.100 k8s-master # 192.168.1.101 k8s-node1 ``` 3. **允许流量通过防火墙** ```bash sudo ufw allow 6443/tcp # API Server sudo ufw allow 2379-2380/tcp # etcd sudo ufw allow 10250-10255/tcp # Kubelet ``` --- ### 二、安装容器运行时(containerd1. **安装containerd** ```bash sudo apt-get update sudo apt-get install -y containerd ``` 2. **生成默认配置** ```bash sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml ``` 3. **配置systemd cgroup驱动** 修改`/etc/containerd/config.toml`: ```toml [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] systemd_cgroup = true # 将此处改为true ``` 重启服务: ```bash sudo systemctl restart containerd ``` --- ### 三、安装kubeadm/kubelet/kubectl 1. **添加APT仓库** ```bash sudo apt-get install -y apt-transport-https ca-certificates curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list ``` 2. **安装指定版本(例如1.28.4)** ```bash sudo apt-get update sudo apt-get install -y kubelet=1.28.4-00 kubeadm=1.28.4-00 kubectl=1.28.4-00 sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本 ``` --- ### 四、初始化控制平面 1. **执行初始化命令** ```bash sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=192.168.1.100 # 替换为实际IP ``` 2. **配置kubectl** ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` --- ### 五、安装网络插件(以Calico为例) ```bash kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.4/manifests/calico.yaml ``` --- ### 六、加入工作节点 1. **在控制平面获取Join命令** ```bash kubeadm token create --print-join-command ``` 2. **在工作节点执行输出命令** ```bash sudo kubeadm join 192.168.1.100:6443 --token <token> --discovery-token-ca-cert-hash <hash> ``` --- ### 七、验证集群状态 ```bash kubectl get nodes # 所有节点应为Ready状态 kubectl get pods -A # 检查系统Pod是否正常运行 ``` --- ### 常见问题 1. **镜像拉取失败** 使用阿里云镜像加速: ```bash sudo kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers ``` 2. **cgroup驱动不一致** 确保containerd和kubelet均配置为`systemd`驱动。 3. **节点NotReady** 检查网络插件是否安装成功,或尝试重启kubelet: ```bash sudo systemctl restart kubelet ``` --- 按此流程操作后,Ubuntu 22.04.5上的Kubernetes集群即可正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.苏木.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值