Kubuntu 安装 OpenStack 与 Kubernetes 云计算工具的完整实战指南

引言:理解 OpenStack 与 Kubernetes 在云计算中的角色
在当今的云计算领域,OpenStack 和 Kubernetes 是两个不可或缺的工具。OpenStack 是一个开源的云计算平台,主要用于构建私有云或公有云基础设施,提供计算、存储和网络资源的管理。它像一个“云操作系统”,允许你在自己的硬件上模拟 AWS 或 Azure 的功能。另一方面,Kubernetes(简称 K8s)是一个容器编排系统,专注于自动化部署、扩展和管理容器化应用(如 Docker 容器)。Kubernetes 更像是“应用层”的云工具,帮助你运行微服务架构的应用程序。
为什么在 Kubuntu(基于 Ubuntu 的 KDE 桌面发行版)上安装它们?Kubuntu 提供了 Ubuntu 的稳定性和丰富的软件仓库,同时拥有 KDE 桌面的友好界面,适合开发者在本地环境中进行测试和开发。本指南将一步步指导你从零开始在 Kubuntu 上安装和配置这两个工具。我们将使用虚拟机(VM)或单机环境进行演示,以避免对生产系统的风险。
注意:OpenStack 和 Kubernetes 的完整生产部署非常复杂,本指南聚焦于单节点(All-in-One)安装,用于学习和实验目的。
在开始前,确保你的 Kubuntu 系统满足以下要求:
硬件
:至少 8GB RAM(推荐 16GB+)、4 核 CPU、50GB 可用磁盘空间。
系统版本
:Kubuntu 22.04 LTS 或更高(基于 Ubuntu 22.04)。
权限
:所有操作需要 root 权限或 sudo。
网络
:稳定的互联网连接,用于下载软件包。
我们将分两部分进行:先安装 OpenStack,然后安装 Kubernetes,并讨论它们如何集成。整个过程预计需要 4-8 小时,取决于你的硬件和网络速度。
第一部分:安装 OpenStack
OpenStack 的安装有多种方法,如手动安装、DevStack(开发工具)或使用 MicroStack(Canonical 提供的简化版)。对于 Kubuntu 用户,我们推荐使用
DevStack
,因为它适合单节点快速部署,且无需复杂的硬件配置。DevStack 会自动下载和配置所有 OpenStack 组件,包括 Nova(计算)、Neutron(网络)、Cinder(存储)等。
步骤 1: 准备系统环境
首先,更新系统并安装必要的依赖。打开终端(Konsole),运行以下命令:
# 更新系统包列表
sudo apt update && sudo apt upgrade -y

# 安装基本工具:git、curl、wget、python3 等
sudo apt install -y git curl wget python3 python3-pip python3-venv build-essential libssl-dev libffi-dev

# 安装 KVM 支持(如果使用虚拟化,推荐在 VM 中测试)
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
sudo usermod -aG libvirt $USER # 将当前用户添加到 libvirt 组,重启生效
解释
:这些命令确保系统是最新的,并安装了 Git(用于克隆 DevStack)、Python(OpenStack 用 Python 编写)和 KVM(用于虚拟机支持)。重启后,运行
virsh list –all
测试 KVM 是否正常。
步骤 2: 创建专用用户和目录
OpenStack 不建议以 root 运行。创建一个专用用户:
# 创建 stack 用户(DevStack 默认使用)
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo “stack ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack
sudo chown -R stack:stack /opt/stack
切换到 stack 用户:
sudo su – stack
。
步骤 3: 下载并配置 DevStack
DevStack 是 OpenStack 的快速部署脚本。
# 克隆 DevStack 仓库(使用 stable 版本以确保稳定性)
cd /opt/stack
git clone https://opendev.org/openstack/devstack
cd devstack

# 创建 local.conf 配置文件(自定义设置)
cat > local.conf </dashboard
(默认用户名:admin,密码:secret)。
命令行验证
:加载环境变量:
source /opt/stack/devstack/openrc admin admin
# 列出计算节点
openstack compute service list
# 创建一个测试实例
openstack server create –image cirros –flavor m1.tiny –network private-net test-instance
完整例子:创建一个虚拟机实例
在 Dashboard 中,导航到 “Project > Compute > Instances”。
点击 “Launch Instance”,选择镜像(如 CirrOS,一个小型测试镜像)。
分配网络和安全组。
实例启动后,你可以通过 VNC 控制台访问它。
故障排除
:
如果服务未启动,运行
sudo systemctl status devstack@*
检查。
日志文件:
/opt/stack/logs/*.log
。
清理:如果失败,运行
./unstack.sh
然后
./clean.sh
重试。
OpenStack 现在运行在你的 Kubuntu 上。你可以扩展它添加更多节点,但单节点适合学习。
第二部分:安装 Kubernetes
Kubernetes 的安装比 OpenStack 简单,我们使用
kubeadm
工具,这是官方推荐的单节点部署方法。它会设置控制平面和工作节点(在单节点中,两者合一)。我们还将安装 Docker 作为容器运行时。
步骤 1: 准备系统环境
Kubernetes 需要禁用 Swap 并配置内核模块。
# 禁用 Swap(Kubernetes 要求)
sudo swapoff -a
sudo sed -i ‘/ swap / s/^\(.*\)$/#\1/g’ /etc/fstab # 永久禁用

# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter

# 永久配置
cat < /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动 Docker
sudo systemctl enable –now docker
sudo usermod -aG docker $USER # 添加用户到 docker 组,重启终端
验证:
docker –version
和
docker run hello-world
。
步骤 3: 安装 kubeadm、kubelet 和 kubectl
添加 Kubernetes 仓库并安装工具。
# 添加 Kubernetes 仓库
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/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.28/deb/ /’ | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl # 防止自动升级
解释
:
kubelet
:节点代理,管理 Pod。
kubeadm
:引导集群的工具。
kubectl
:命令行接口,用于与集群交互。
我们使用 v1.28 版本(稳定版),可根据需要调整。
步骤 4: 初始化 Kubernetes 集群
使用 kubeadm 初始化单节点集群。
# 初始化(使用 –pod-network-cidr 为网络插件预留 IP)
sudo kubeadm init –pod-network-cidr=10.244.0.0/16

# 配置 kubectl(以当前用户运行)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
解释
:
–pod-network-cidr=10.244.0.0/16
:为 Flannel 网络插件预留 IP 范围。
初始化后,你会看到加入节点的命令(单节点无需加入)。
输出例子
(简化):
[init] Using Kubernetes version: v1.28.0
[preflight] Running pre-flight checks
[kubeconfig] Wrote KubeConfig file to: /etc/kubernetes/admin.conf
[control-plane] Created static Pod manifest for kube-apiserver
…
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a Pod network to the cluster.
Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
步骤 5: 安装网络插件(Flannel)
Kubernetes 需要网络插件来连接 Pod。
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
验证:
kubectl get nodes
应显示
Ready
状态。
步骤 6: 验证和使用 Kubernetes
检查集群
:
kubectl cluster-info
kubectl get nodes
kubectl get pods -n kube-system
完整例子:部署一个 Nginx Pod
创建部署:
kubectl create deployment nginx –image=nginx:latest
暴露服务:
kubectl expose deployment nginx –type=NodePort –port=80
查看服务:
kubectl get services
输出类似:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.100.200.10 80:3xxxx/TCP 1m
访问应用:使用
minikube tunnel
或直接访问节点 IP 和端口(如
http://:3xxxx
)。在单节点中,端口映射到主机。
故障排除
:
如果 Pod 未启动:
kubectl describe pod 查看事件。
常见错误:网络问题,确保防火墙允许端口 6443、2379-2380、10250-10252。
清理:
kubeadm reset -f
。
第三部分:OpenStack 与 Kubernetes 的集成
OpenStack 和 Kubernetes 可以互补:OpenStack 提供基础设施(如 VM、存储),Kubernetes 管理容器化应用。集成方式:
OpenStack 作为 Kubernetes 的底层
:在 OpenStack VM 中运行 Kubernetes。
Kubernetes 作为 OpenStack 的工作负载管理器
:使用 Magnum 服务(OpenStack 的容器编排服务)在 OpenStack 上部署 Kubernetes 集群。
集成步骤(简要)
:
在 OpenStack 中启用 Magnum:编辑 DevStack 的
local.conf
,添加
enable_service magnum-api magnum-cond
,然后重新运行
./stack.sh
。
创建 Kubernetes 集群模板:
openstack coe cluster template create k8s-template –image cirros –flavor m1.tiny –keypair mykey –external-network public –docker-volume-size 5
部署集群:
openstack coe cluster create my-k8s –cluster-template k8s-template –node-count 1
获取 kubeconfig:
openstack coe cluster config my-k8s > kubeconfig
export KUBECONFIG=kubeconfig
kubectl get nodes
例子
:这会在 OpenStack 中创建一个 VM,自动安装 Kubernetes。你可以用它运行应用,而 OpenStack 处理存储和网络。
优势
:
OpenStack:资源隔离、多租户。
Kubernetes:弹性扩展、服务发现。
集成后,你可以用 OpenStack 的 Heat 服务编排 Kubernetes 部署。
挑战
:集成复杂,需要调试网络(如 Neutron 与 CNI 插件的兼容)。建议在生产前阅读官方文档。
结论与最佳实践
通过本指南,你已在 Kubuntu 上成功安装了 OpenStack(DevStack)和 Kubernetes(kubeadm),并了解了它们的集成。OpenStack 适合构建云基础设施,Kubernetes 适合管理现代应用。单节点部署是学习起点,生产环境需考虑高可用性、安全(如 RBAC、TLS)和监控(Prometheus + Grafana)。
最佳实践
:
安全
:使用 HTTPS、定期更新、限制访问。
备份
:定期备份配置和数据(如 OpenStack 数据库、Kubernetes etcd)。
扩展
:添加多节点使用 OpenStack 的多节点安装或 Kubernetes 的加入命令。
资源管理
:监控使用
top
、
kubectl top
等工具,避免资源耗尽。
进一步学习
:参考 OpenStack 官方文档(
https://docs.openstack.org/)和
Kubernetes 文档(
https://kubernetes.io/docs/)。如果遇到问题,社区论坛如
Stack Overflow 或 Reddit 的 r/openstack 和 r/kubernetes 很有帮助。
如果你的环境有特定问题(如硬件限制),可以提供更多细节以优化指导。享受你的云计算之旅!