如何搭建k8s服务(containerd部署)

Kubernetes 是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s) 是 Google 开源的容器集群管理系统(谷歌内部:Borg)。在 Docker 技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

Kubernetes 是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

目录

一、docker、containerd的区别

二、规划资源(2+节点)

三、部署及配置

1、修改主机名

2、关闭swap分区和selinux(master、node均执行)

1)临时生效

2)永久生效

3、安装软件(master、node均执行)

4、配置containerd服务(master、node均执行)

5、启动服务并设置开机自启(master、node均执行)

6、配置所需模块(master、node均执行)

7、配置内核参数(master、node均执行)

8、初始化k8s集群(master执行)

9、node加入集群(node执行)

10、创建kubectl(一般master执行,也可配置node)

1)临时生效

2)永久生效

11、创建calico网络(master执行)

1)下载配置文件

2)应用calico网络

3)查看状态

四、验证

1、下载demo

2、部署

3、查看pod

4、容器访问及执行命令

注:后续将分步讲解k8s部署ingress-nginx、MetalLB等。


一、docker、containerd的区别

Docker 是套了壳的 containerd,K8s 现在只需要里面的发动机,不需要外面的壳。

Kubernetes 1.24 起彻底移除了 dockershim,不再直接支持 Docker 作为容器运行时。Docker 本质是"全家桶",内部跑容器其实也是调用 containerd,中间多了一层 dockershim 适配,链路更长、开销更大。containerd 是专注于容器生命周期管理的轻量级运行时,原生支持 CRI 接口,与 Kubelet 直接对接,架构更简洁、性能更好、资源占用更低。两者都兼容 OCI 标准镜像,所以 Docker 构建的镜像在 containerd 上完全能跑。

二、规划资源(2+节点)

本文通过2节点部署,如下规划

|--------------|------------|
| IP | 用途 |
| 10.211.55.16 | master |
| 10.211.55.23 | node1 |

三、部署及配置

1、修改主机名
复制代码
hostnamectl set-hostname master
echo "10.211.55.16 master
10.211.55.23 node1" >> /etc/hosts
复制代码
hostnamectl set-hostname node1
echo "10.211.55.16 master
10.211.55.23 node1" >> /etc/hosts
2、关闭swap分区和selinux(master、node均执行)
1)临时生效
复制代码
关闭swap分区:swapoff -a
关闭selinux:setenforce 0
2)永久生效

关闭swap分区:

vim /etc/fstab

找到类似下面的行(如果有)并注释,重启后生效:

#UUID=2eca519a-00ef-4183-8562-3ff29b3e18c9 none swap defaults 0 0

关闭selinux:

vim /etc/selinux/config

修改SELINUX为SELINUX=disabled,重启后生效

3、安装软件(master、node均执行)
复制代码
dnf install kubernetes-kubeadm kubernetes containerd -y
4、配置containerd服务(master、node均执行)
复制代码
rm -rf /etc/containerd/config.toml
containerd config default >  /etc/containerd/config.toml
sed -i "s/registry.k8s.io\/pause:3.8/docker.1ms.run\/kubesphere\/pause:3.9/g" /etc/containerd/config.toml
5、启动服务并设置开机自启(master、node均执行)
复制代码
systemctl enable --now containerd kubelet
6、配置所需模块(master、node均执行)
复制代码
cat > /etc/modules-load.d/br-netfilter.conf << EOF
br_netfilter
EOF

重启后验证

lsmod | grep br_netfilter

7、配置内核参数(master、node均执行)
复制代码
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

#使参数生效

sysctl --system

8、初始化k8s集群(master执行)
复制代码
kubeadm init --kubernetes-version=1.29.15 --apiserver-advertise-address=10.211.55.16 --image-repository docker.1ms.run/kubesphere --service-cidr=1.1.0.0/16 --pod-network-cidr=1.2.0.0/16
9、node加入集群(node执行)
复制代码
kubeadm join 10.211.55.16:6443 --token z9cugw.dhgih1ocpw7fc2nq  --discovery-token-ca-cert-hash sha256:513506880e3bed9dc630a062dcc31c5dd8a39df32e2eaa7c52870f4950eb1a6b
10、创建kubectl(一般master执行,也可配置node)
1)临时生效
复制代码
export KUBECONFIG=/etc/kubernetes/admin.conf
2)永久生效
复制代码
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
11、创建calico网络(master执行)
1)下载配置文件
复制代码
git clone https://gitee.com/koji_docker/k8s.git
2)应用calico网络
复制代码
kubectl apply -f k8s/calico/v3.28.0/calico.yaml
3)查看状态
复制代码
kubectl get nodes

四、验证

1、下载demo
复制代码
git clone https://gitee.com/koji_docker/k8s.git
2、部署
复制代码
kubectl apply -f k8s/demo/myos.yaml
3、查看pod
复制代码
kubectl get pods -n demo
4、容器访问及执行命令
复制代码
kubectl exec -it -n demo myos-5bc54f97dc-f8xnm -- bash

注:后续将分步讲解k8s部署ingress-nginx、MetalLB等。

相关推荐
知已难寻3 小时前
01 · OpenStack的认证管理 Keystone
运维·服务器·云原生·云计算·openstack
分布式存储与RustFS3 小时前
模型权重散落在每台 GPU?用 RustFS 给 vLLM 做共享权重库
云原生·开源·对象存储·分布式存储·s3·rustfs·性能基准
企鹅侠客4 小时前
Linux CPU 负载平均值(Load Average)详解:从原理到实践
linux·运维·服务器·服务器负载
易点云徐源4 小时前
HP 暗影精灵 PRO 16 安装双系统后,开机直接进入 Windows,按 F9 才能进入 Ubuntu:GRUB 菜单不显示的处理方法
linux·运维·ubuntu
木雷坞4 小时前
Baserow Docker部署:导入设备借用CSV,再用表单新增登记
运维·docker·容器
第404号工位4 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构
就像楞次定律5 小时前
【Linux 学习记之二】C++ 构建体系与底层链接机制的深度透视(1)
linux·后端
米优5 小时前
linux下获取崩溃程序的core文件
linux·运维·服务器
qeen875 小时前
【Linux】动静态库的制作使用及ELF文件的宏观理解
linux·运维·库