【复刻版】ubuntu22.04安装kubernetes1.25 k8s1.25

本文档详细介绍了如何在 Ubuntu 22.04 上安装 Kubernetes 1.25 版本,包括主机准备、禁用 swap、安装 containerd、配置 k8s 仓库、安装 kubernetes 组件、初始化集群以及使用 Calico 作为 CNI。遵循指南,您可以成功部署一个多节点的 Kubernetes 集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.条件

  1. 2G内存
  2. 2 CPU
  3. 网络连接(内网公网都可以)
  4. 唯一的主机名,mac地址
  5. 6443,10650等端口
  6. 禁用Swap
  7. 20 GB /var目录磁盘空间
  8. Sudo 用户权限

2.主机准备

master: ip-1 k8s-master
worker-1: ip-2 k8s-worker-1
worker-2: ip-2 k8s-worker-2

设置hostname,和/etc/hosts

master node

sudo hostnamectl --static set-hostname k8s-master

worker node

sudo hostnamectl --static set-hostname k8s-worker-1
sudo hostnamectl --static set-hostname k8s-worker-2

3.升级系统

sudo apt update
sudo apt -y full-upgrade
[ -f /var/run/reboot-required ] && sudo reboot -f

4.禁用swap

master 和所有worker

sudo swapoff -a
sudo sed -i '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab
# -i 插入修改模式,g 标识符表示全局查找替换,表示注释掉swap的那一行。
free -h

5.打开一些内核功能:

[主机:master 和所有worker]

# Enable kernel modules
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Add some settings to sysctl
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 重新加载 sysctl
sudo sysctl --system

6.安装 containerd run time

[主机:master 和所有worker]

自 Kubernetes v1.24 起,Dockershim 已被删除

配置ubuntu系统国内源(阿里云):

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak​

vi /etc/apt/sources.list 替换成如下:

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

安装关联软件

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

​​sudo apt-get update​​

安装docker仓库(阿里云)

#  安装GPG证书
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

​​sudo apt-get upgrade​

安装containnerd:

​​sudo apt-get update​​
sudo apt install -y containerd.io

配置 containerd 用systemdcgroup启动

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo sed -i 's/k8s.gcr.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml

重启和启用:

sudo systemctl restart containerd
sudo systemctl enable containerd

7.添加 k8s仓库(阿里云)

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - 
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"

apt-get update

Note: At time of writing this guide, Xenial is the latest Kubernetes repository but when repository is available for Ubuntu 22.04 (Jammy Jellyfish) then you need replace xenial word with ‘jammy’ in ‘apt-add-repository’ command.

8.安装kubernetes组件Kubectl, kubeadm & kubelet

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
#apt-mark 用于将软件包标记/取消标记为自动安装。 hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。

复制出来自节点worker1,worker2,
这样可以无需重复在worker机器上重复上面的步骤。

9.初始化kubernetes集群

在master上运行

sudo kubeadm init \
     --control-plane-endpoint=k8s-master \
     --kubernetes-version=v1.25.0 \
     --image-repository registry.aliyuncs.com/google_containers \
    --pod-network-cidr=10.24.0.0/16 \
    --ignore-preflight-errors=Swap

在kubeadm init后的打印信息中 找到 kubernetes的配置信息提示
master中直接执行,
worker中不能直接执行
(需要将master中的etc/kubernetes/admin.conf 复制到worker的/etc/kubernetes路径下 才能执行)

$ mkdir -p $HOME/.kube
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ chown $(id -u):$(id -g) $HOME/.kube/config

在kubeadm init后的打印信息中 找到对应的 worker节点的join信息 复制出在各个worker中执行

#例子 如下
kubeadm join k8s-master:6443 --token qankob.c47c3h9otd5mo9m0   --discovery-token-ca-cert-hash sha256:9a8e7922f82452f3add16a12ebb49d8a1c51b6b778c8f5ad4979c0ecf6cf6c1c

在这里插入图片描述
join信息执行后 在master 中可以 查看k8s集群信息

kubectl cluster-info
kubectl get nodes

10.安装calico 支持 CNI (Container Network Interface)

curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
sed -i "s#192\.168\.0\.0/16#10\.244\.0\.0/16#" calico.yaml

kubectl apply -f calico.yaml

11.安装完毕 :

#查看k8s组件pod的状态
kubectl get pods -n kube-system
#查看nodes 状态
kubectl get nodes

参考资料

https://blog.youkuaiyun.com/shelutai/article/details/126604857
https://blog.youkuaiyun.com/weixin_56752399/article/details/123217472
https://www.bilibili.com/video/BV1gV4y1p7CL?spm_id_from=333.337.search-card.all.click&vd_source=9d3f2a31f918888addf6f0d78cae7372
https://feisky.gitbooks.io/kubernetes/content/network/calico/calico.html
https://kubernetes.io/zh-cn/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/
https://kuboard.cn/learning/k8s-intermediate/service/cni.html

<think>好的,我现在需要帮助用户解决在Windows 11上部署WSL 2和相关服务的问题,包括UbuntuDocker、Ollama、Dify、MySQL、Ruoyi-EVU、Redis、Nginx以及NVIDIA RTX 4090 GPU的配置。首先,我需要理清整个部署流程,并确保每个步骤都正确无误。 首先,用户提到的是Windows 11,所以需要确认系统是否满足WSL 2的要求。根据微软文档,Windows 11默认支持WSL 2,但需要开启相关功能。用户需要启用“虚拟机平台”和“适用于Linux的Windows子系统”这两个功能。这部分可以通过PowerShell命令完成,比如dism.exe命令。然后安装WSL 2内核更新包,这一步可能需要下载并安装MSI包。接下来,设置默认版本为WSL 2,这可以通过wsl --set-default-version 2命令实现。之后,安装Ubuntu发行版,比如Ubuntu 22.04 LTS,并设置用户名和密码。 接下来是Docker的配置。用户需要安装Docker Desktop,并确保在设置中启用WSL 2引擎。同时,在资源部分集成已安装Ubuntu发行版。这有助于Docker容器在WSL 2环境中运行,提高性能。验证Docker安装是否成功,可以通过运行hello-world镜像来确认。这部分用户之前已经提到了引用[1],我需要确保步骤正确,并且引用标记正确。 然后是GPU资源的配置,用户使用的是NVIDIA RTX 4090。这里需要安装NVIDIA的驱动程序,确保CUDA工具包与WSL 2兼容。在WSL 2中安装CUDA,可能需要按照NVIDIA的官方文档来操作,比如安装特定版本的CUDA Toolkit和NVIDIA容器工具包。这部分需要详细说明,否则用户可能在驱动安装或CUDA配置上遇到问题。 接下来是各个服务的部署。首先安装Ollama,这可能是一个机器学习相关的服务,可能需要GPU支持。用户需要确保Ollama在Docker容器中可以访问GPU,这需要配置NVIDIA容器运行时。然后是Dify,这可能是一个AI应用平台,同样需要GPU支持。MySQL和Redis作为数据库和缓存服务,需要配置持久化存储和网络设置,确保数据安全。Ruoyi-EVU可能是一个Java应用,需要Java环境,可能需要通过Docker部署或者直接在Ubuntu安装。Nginx作为反向代理,需要配置SSL和域名解析,确保外部访问安全可靠。 硬件资源配置方面,用户使用的是RTX 4090,显存较大,但需要合理分配给各个服务。比如,Ollama和Dify可能需要更多的GPU资源,而其他服务如MySQL、Redis可能不需要。需要建议用户根据实际负载调整资源分配,比如在Docker Compose文件中指定GPU资源限制,避免资源争用。 另外,网络配置也很重要。所有服务需要在Docker网络中正确互联,可能需要定义自定义网络,并设置端口映射。例如,Nginx需要暴露80和443端口,而其他服务的内部通信可以通过Docker网络进行。同时,数据卷的配置也很关键,确保MySQL和Redis的数据持久化,防止容器重启后数据丢失。 安全性方面,需要提醒用户设置强密码,更新系统补丁,配置防火墙规则,以及使用SSL证书加密流量。特别是MySQL和Redis这类服务,默认配置可能存在安全漏洞,需要修改默认端口和设置访问控制。 最后,验证整个系统的运行。用户需要逐个启动服务,检查日志,确认没有错误。例如,运行nvidia-smi命令查看GPU是否被正确识别,Docker容器是否能够使用GPU。测试各个服务的连通性,如通过curl访问Nginx,连接到MySQL数据库,运行Ollama的模型推理等。 在生成相关问题的时候,需要考虑用户可能遇到的后续问题,比如性能调优、错误排查、备份策略等。比如如何监控GPU资源使用情况,如何扩展服务,如何处理容器间的依赖关系等。 现在需要确保回答的结构清晰,步骤正确,引用来源正确,并且符合用户的中文要求。同时,生成的LaTeX公式需要正确使用$...$和$$...$$格式,虽然这个问题可能涉及较多的命令和配置,数学公式可能较少,但如果有涉及性能分析或资源分配的计算,可能需要使用LaTeX表达。 总结来说,整个部署过程需要分步骤进行,确保每个组件正确安装和配置,资源合理分配,网络和安全设置到位。需要详细说明每个步骤,并提示用户可能的注意事项和验证方法。</think>### Windows 11 WSL 2 环境部署方案 #### 一、基础环境配置 1. **启用 WSL 2** - 以管理员身份运行 PowerShell,执行以下命令: ```powershell dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ``` - 安装 [WSL 2 内核更新包](https://aka.ms/wsl2kernel)并重启系统 - 设置默认版本为 WSL 2: ```powershell wsl --set-default-version 2 ``` 2. **安装 Ubuntu 22.04 LTS** ```powershell wsl --install -d Ubuntu-22.04 ``` 完成后设置用户名和密码,建议分配至少 8GB 内存(修改 `%USERPROFILE%\.wslconfig`): ```ini [wsl2] memory=8GB swap=2GB ``` #### 二、Docker 集成 1. **安装 Docker Desktop** - 勾选 "Use WSL 2 based engine" 和对应 Ubuntu 发行版的集成[^1] - 验证安装: ```bash docker run hello-world ``` 2. **GPU 支持配置** - 安装 [NVIDIA 驱动](https://www.nvidia.com/Download/index.aspx) 和 [CUDA Toolkit](https://developer.nvidia.com/cuda-toolkit) - 配置 NVIDIA 容器工具包: ```bash 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 sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit ``` #### 三、服务部署架构 ```mermaid graph TD A[Windows 11 Host] -->|WSL 2| B(Ubuntu 22.04) B --> C[Docker Engine] C --> D[MySQL 8.0] C --> E[Redis 7.0] C --> F[Nginx 1.25] C --> G[Ruoyi-EVU] C --> H[Ollama] C --> I[Dify] H -->|NVIDIA Container| J(RTX 4090 GPU) ``` #### 四、硬件资源配置建议 | 组件 | 资源配置 | 说明 | |------------|------------------------------|-------------------------------| | CPU | 16 核以上 | 建议 Intel i9 或 AMD Ryzen 9 | | 内存 | 32GB DDR5 | 分配 16GB 给 WSL 2 | | GPU | RTX 4090 24GB 显存 | CUDA 12.2+ 驱动 | | 存储 | 1TB NVMe SSD | 建议分配 200GB 给 WSL 2 | #### 五、关键服务配置示例(docker-compose.yml) ```yaml version: '3.8' services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} volumes: - mysql_data:/var/lib/mysql deploy: resources: limits: memory: 4G ollama: image: ollama/ollama:latest runtime: nvidia environment: NVIDIA_VISIBLE_DEVICES: all ports: - "11434:11434" volumes: - ollama_data:/root/.ollama ``` #### 六、验证步骤 1. GPU 验证: ```bash docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody -benchmark ``` 应显示 GPU 计算性能数据 2. 网络连通性测试: ```bash curl -I http://localhost:80 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值