Centos7.9使用kubeadm部署K8S 1.27.6集群环境(内网通过代理部署)

Centos7.9使用kubeadm部署K8S 1.27.6集群环境(内网通过代理部署)

在内网借助代理服务器,使用kubeadm部署一个k8s集群,单master+2worker节点,K8S版本为1.27.6,使用containerd作为容器运行时。

1. 环境信息

  • 操作系统:CentOS 7.9.2009
  • 内存: 8GB
  • CPU: 4
  • 网络: 节点通过代理进行访问。
hostname ip 备注
k8s-master1 10.210.10.201 master
k8s-node1 10.210.10.202 worker
k8s-node2 10.210.10.203 worker

2. 准备工作

2.1 配置网络代理

# 配置全局代理
export proxy=http://10.0.112.18:808
export all_proxy=$proxy
export no_proxy=localhost,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12

# 持久化配置可以将上面配置写/etc/profile文件

在k8s初始化的时候,容器拉取镜像需要单独配置代理:

# docker代理
[root@k8s-master1 ~]# mkdir -p /etc/systemd/system/docker.service.d
[root@k8s-master1 ~]# cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://10.0.112.18:808"
Environment="HTTPS_PROXY=http://10.0.112.18:808"
Environment="NO_RPOXY=localhost,127.0.0.1"

# containerd代理
[root@k8s-master1 ~]# mkdir -p /etc/systemd/system/containerd.service.d
[root@k8s-master1 ~]# cat /etc/systemd/system/containerd.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://10.0.112.18:808"
Environment="HTTPS_PROXY=http://10.0.112.18:808"
Environment="NO_RPOXY=localhost,127.0.0.1"

说明:

K8S 1.24版本后启用了docker-shim容器运行时,本地安装的k8s版本为1.27.6,选用containd作为容器运行,可以只配置containerd的代理。由于每个节点都要运行容器,所以代理需要在每个节点都需要配置。

2.2 linux基础配置

以下操作在所有节点执行:

# 配置yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

# 安装常用软件
yum install wget vim-enhanced net-tools

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

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

# 关闭 selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

设置hosts:

# 设置主机名
hostnamectl set-hostname k8s-master1  # k8s-node1 / k8s-node2
hostname

# 配置 hosts
cat >> /etc/hosts << EOF
10.210.10.201 k8s-master1
10.210.10.202 k8s-node1
10.210.10.203 k8s-node2
EOF

由于环境在内网,没有ntp服务器。这里手动修改时间,也可以配置内部的ntp服务器。

# 设置时区
timedatectl set-timezone Asia/Shanghai

# 将系统时间改为utc时间(如果需要)。编辑下面文件,写入ZONE="Etc/UTC"
vi /etc/sysconfig/clock

# 建立软连接
ln -sf /usr/share/zoneinfo/UTC /etc/localtime

# 设置系统时间为当前时间
date -s "2024-06-20 19:04:00"

# 同步硬件时间
hwclock --systohc

配置内核参数:

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

modprobe overlay
modprobe br_netfilter


# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF

sysctl --system  # 生效

# 通过运行以下指令确认 br_netfilter 和 overlay 模块被加载
lsmod | egrep 'overlay|br_netfilter'
# 确认sysctl配置中被设置为 1
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

2.3 安装容器运行

<think>好的,我现在需要详细阐述DeepSeek-R1的本地集群化部署过程。首先,我需要了解DeepSeek-R1是什么。根据之前的回答,它可能是一个基于深度学习的智能搜索或推荐系统,支持大规模数据处理和高并发请求,适合企业级应用。接下来,我需要思考如何进行本地集群化部署,这可能涉及多个步骤,如环境准备、资源规划、软件安装、配置、测试验证等。 首先,用户可能想知道部署前的准备工作,比如硬件和软件要求。我需要列出必要的服务器配置,如CPU、内存、存储,以及网络要求,比如内网互通、防火墙设置。操作系统方面,可能推荐Linux发行版如CentOS或Ubuntu,并需要安装Docker、Kubernetes等容器化工具,以及依赖的库如Python、CUDA等。 然后是资源规划,这部分可能需要考虑节点角色分配,比如管理节点、计算节点、存储节点。资源配额如CPU、内存、GPU的分配,以及存储规划,如分布式存储系统如Ceph或GlusterFS的应用。 接下来是安装与配置步骤。可能包括获取安装包,部署管理节点,配置网络和存储,添加计算节点,设置高可用和负载均衡,以及安全配置如SSL证书和访问控制。 部署后的测试验证需要功能测试、性能测试、压力测试和监控告警的设置,确保集群稳定运行。此外,维护与升级部分需要考虑日常监控、日志管理、备份恢复和版本升级的步骤。 我需要确保每个步骤都详细且逻辑清晰,避免遗漏关键点。例如,在安装管理节点时,可能需要使用Kubernetes进行容器编排,配置数据库和缓存系统。网络配置部分需要说明如何设置Service网络和Pod网络,确保节点间通信。 同时,要注意可能遇到的问题,比如依赖项冲突、网络延迟、资源不足等,在注意事项中提醒用户。例如,不同节点的时间同步,使用NTP服务;硬件兼容性问题;详细的日志记录等。 最后,需要建议用户参考官方文档,因为具体步骤可能因版本不同而有所变化。总结整个流程,确保用户能够按照步骤一步步完成部署,并在遇到问题时知道如何排查。 现在需要将这些思考整理成一个结构化的回答,分步骤详细说明,使用户能够理解并实施DeepSeek-R1的本地集群化部署。</think>以下是DeepSeek-R1本地集群化部署的详细流程,分为核心步骤与关键注意事项,帮助您高效完成部署: --- ### **一、部署前准备** #### **1. 环境要求** - **硬件配置**: - **管理节点**:4核CPU/16GB内存/200GB SSD(建议至少2节点实现高可用)。 - **计算节点**:根据业务负载选择,推荐16核CPU/64GB内存/2TB NVMe SSD,配备NVIDIA A100/A30等GPU(需支持CUDA 11.8+)。 - **存储节点**:多节点组成分布式存储,单节点建议10TB HDD,带宽≥10Gbps。 - **网络要求**: - 节点间内网延迟<1ms,建议万兆网络。 - 开放端口:6443(K8s API)、2379-2380(etcd)、10250(kubelet)、30000-32767(NodePort服务)。 - **操作系统**: - CentOS 7.9+/Ubuntu 20.04 LTS,禁用Swap并配置SELinux策略。 - 内核版本≥5.4,建议开启IO优化参数。 #### **2. 依赖安装** - **容器化工具**: ```bash # 安装Docker 24.0+ & NVIDIA Container Toolkit curl -sSL https://get.docker.com | sh distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list apt-get update && apt-get install -y nvidia-container-toolkit ``` - **Kubernetes集群**: 使用kubeadm快速部署K8s 1.27+集群,配置Calico网络插件及NVIDIA Device Plugin。 - **存储系统**: 部署Ceph集群(至少3节点),创建RBD池供PVC动态供给。 --- ### **二、集群部署流程** #### **1. 部署管理平面** - **安装控制组件**: ```bash helm repo add deepseek https://charts.deepseek.com helm install deepseek-r1 deepseek/deepseek-r1 -n deepseek-system \ --set global.clusterMode=true \ --set etcd.cluster.enabled=true \ --set redis.sentinel.enabled=true ``` - **配置高可用**: - 使用Keepalived + HAProxy实现API Server负载均衡。 - 部署Prometheus + Grafana监控栈,配置自定义告警规则。 #### **2. 计算节点接入** - **GPU节点准备**: ```bash # 验证GPU驱动及CUDA nvidia-smi # 应显示GPU状态 kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml ``` - **节点注册**: ```bash kubeadm join <control-plane-endpoint>:6443 --token <token> \ --discovery-token-ca-cert-hash sha256:<hash> \ --node-labels &#39;node-type=compute,gpu-model=a100&#39; ``` #### **3. 分布式存储集成** - **创建StorageClass**: ```yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ceph-rbd provisioner: rook-ceph.rbd.csi.ceph.com parameters: clusterID: rook-ceph pool: deepseek-data imageFormat: "2" imageFeatures: layering ``` #### **4. 服务配置** - **Ingress配置**: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: deepseek-ingress annotations: nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" spec: tls: - hosts: - deepseek.example.com secretName: deepseek-tls rules: - host: deepseek.example.com http: paths: - path: / pathType: Prefix backend: service: name: deepseek-frontend port: number: 443 ``` --- ### **三、验证与调优** #### **1. 功能验证** - **API连通性测试**: ```bash curl -X POST https://deepseek.example.com/api/v1/healthcheck \ -H "Authorization: Bearer $TOKEN" ``` 预期返回:`{"status": "healthy", "services": {"database": "ok", "gpu_scheduler": "ok"}}` #### **2. 性能压测** - **使用Locust模拟高并发**: ```python from locust import HttpUser, task class DeepSeekUser(HttpUser): @task def query(self): self.client.post("/api/search", json={"query": "test"}, headers={"Authorization": "Bearer $TOKEN"}) ``` 启动命令:`locust -f load_test.py --headless -u 1000 -r 100 --run-time 10m` #### **3. 运维监控** - **自定义Grafana看板**: 监控指标包括:QPS、P99延迟、GPU利用率(`DCGM_FI_DEV_GPU_UTIL`)、显存占用(`DCGM_FI_DEV_FB_USED`)、Kafka消息堆积等。 --- ### **四、常见问题处理** - **GPU资源未识别**: 检查nvidia-device-plugin日志:`kubectl logs -n kube-system nvidia-device-plugin-daemonset-xxxxx` - **存储挂载失败**: 查看RBD镜像状态:`rbd -p deepseek-data ls --format=json` - **API延迟陡增**: 使用`kubectl top pods`检查资源争抢,考虑HPA自动扩缩容配置。 --- 建议结合官方部署手册(如《DeepSeek-R1 Cluster Deployment Guide v2.3》)进行细节调整,确保版本匹配。对于生产环境,建议通过IaC工具(如Terraform)实现声明式部署
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lldhsds

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

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

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

打赏作者

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

抵扣说明:

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

余额充值