Ubuntu安装k8s
- vicentz
- 0
- Posted on
使用 Minikube(推荐,简单,适合单机学习 / 本地测试),Minikube 是一个工具,可以在你的 本地电脑(或 Ubuntu 服务器)上快速启动一个单节点的 Kubernetes 集群,支持 Docker / containerd 等容器运行时。
好的!下面我将为你提供一份 清晰、实用、适合入门 的指南,内容包括以下两部分:
✅ 一、Docker 整合 Kubernetes(k8s)的简单使用(核心流程)
✅ 二、如何在 Ubuntu 上安装 Kubernetes(k8s)环境(单机/本地测试环境推荐)
🧩 第一部分:Docker 整合 Kubernetes(k8s)的简单使用
🎯 目标:用 Docker 构建镜像,然后通过 Kubernetes 部署该镜像并运行
1. 🧱 整体流程简述
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1️⃣ | 用 Docker 构建镜像 | 写一个简单的应用(如 Python Flask),用 Dockerfile 打包成镜像 |
| 2️⃣ | (可选)推送镜像到镜像仓库 | 可以推送到 Docker Hub 或私有仓库,或者直接用本地镜像 |
| 3️⃣ | 编写 Kubernetes 配置文件 | 包括:Deployment(部署应用)、Service(暴露服务,如 NodePort) |
| 4️⃣ | 部署到 Kubernetes 集群 | 使用 kubectl apply -f xxx.yaml部署 |
| 5️⃣ | 访问你的应用 | 通过 Service 暴露的端口访问服务 |
🛠️ 2. 示例项目:一个简单的 Python Flask Web 应用
项目结构
my-k8s-docker-demo/
├── app.py # Flask 应用
├── requirements.txt # Python 依赖
├── Dockerfile # 构建 Docker 镜像
├── deployment.yaml # Kubernetes Deployment
└── service-nodeport.yaml # Kubernetes Service(NodePort)
📄 app.py(你的 Web 应用)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "🚀 Hello from Docker + Kubernetes!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
📄 requirements.txt
flask
📄 Dockerfile
# 使用官方 Python 镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制代码和依赖文件
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露容器端口
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
🏗️ 3. 构建 Docker 镜像
在项目目录下运行:
docker build -t my-k8s-app:latest .
这里镜像名为
my-k8s-app:latest(你可以自定义,但要与后续 Kubernetes YAML 中一致)
☁️ 4. (可选)推送镜像到镜像仓库
如果你有 Docker Hub 或私有仓库,可以:
docker tag my-k8s-app:latest your-dockerhub-username/my-k8s-app:latest
docker push your-dockerhub-username/my-k8s-app:latest
然后在 Kubernetes YAML 文件中使用:
image: your-dockerhub-username/my-k8s-app:latest
但如果你只是在本地 Kubernetes 集群(比如 Minikube、Kind 或 kubeadm)测试,也可以直接使用本地镜像(见下文)。
📁 5. 编写 Kubernetes 配置文件
📄 deployment.yaml(定义 Deployment)
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-k8s-app
spec:
replicas: 2
selector:
matchLabels:
app: my-k8s-app
template:
metadata:
labels:
app: my-k8s-app
spec:
containers:
- name: web
image: my-k8s-app:latest # 如果使用本地镜像
# image: your-dockerhub-username/my-k8s-app:latest # 如果使用远程镜像
ports:
- containerPort: 5000
✅ 如果你使用的是 本地镜像(未推送),比如
my-k8s-app:latest,要确保你的 Kubernetes 节点(比如 Minikube)上也存在该镜像。
📄 service-nodeport.yaml(定义 Service,用于访问)
apiVersion: v1
kind: Service
metadata:
name: my-k8s-app-service
spec:
type: NodePort
selector:
app: my-k8s-app
ports:
- protocol: TCP
port: 80
targetPort: 5000
nodePort: 30080 # 可选,范围 30000~32767
如果你不想手动指定
nodePort,可以删除这一行,Kubernetes 会自动分配。
🚀 6. 部署到 Kubernetes 集群
假设你已经安装并配置好了 Kubernetes(比如 Minikube、Kind、kubeadm 等)
确保 kubectl已配置,并能连接到你的集群:
kubectl config current-context
部署应用:
kubectl apply -f deployment.yaml
kubectl apply -f service-nodeport.yaml
查看状态:
kubectl get pods
kubectl get deployments
kubectl get services
你应该会看到类似:
NAME READY STATUS RESTARTS AGE
my-k8s-app-xxxxx 1/1 Running 0 20s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-k8s-app-service NodePort 10.96.xx.xx <none> 80:30080/TCP 10s
🌐 7. 访问你的应用
如果你使用 NodePort(比如 30080):
- 1.找到你的 Kubernetes 节点 IP:
- •Minikube 用户:
minikube ip
假设输出:192.168.49.2
- 1.通过浏览器或 curl 访问:
curl http://192.168.49.2:30080
你应该看到:
🚀 Hello from Docker + Kubernetes!
注意: 30080 是你在 service-nodeport.yaml 中设置的
nodePort,如果没指定,Kubernetes 会自动分配一个(在 30000–32767 范围内),可通过kubectl get svc查看。
🧩 第二部分:如何在 Ubuntu 上安装 Kubernetes(k8s)环境(推荐用于学习和测试)
🎯 推荐方案:使用 Minikube 或 Kind(最简单、适合本地测试)
但如果你希望在 Ubuntu 服务器/PC 上安装一个完整的、标准的 Kubernetes 环境(比如使用 kubeadm),也支持,下面我会介绍 两种主流方式:
✅ 方案 1:使用 Minikube(推荐,简单,适合单机学习 / 本地测试)
Minikube 是一个工具,可以在你的 本地电脑(或 Ubuntu 服务器)上快速启动一个单节点的 Kubernetes 集群,支持 Docker / containerd 等容器运行时。
1. 安装 Minikube(Ubuntu)
① 安装 kubectl(Kubernetes 命令行工具)
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update
sudo apt install -y kubectl
② 安装 Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
此处可能会报错:
root@vicent:~# curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg –dearmor -o /etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg curl: (35) error:0A000126:SSL routines::unexpected eof while reading gpg: no valid OpenPGP data found. root@vicent:~# 报错
可以手动下载后上传到服务器,找到最新版本,比如 v1.36.0,下载文件:
minikube-linux-amd64
minikube 下载地址 https://www.newbe.pro/Mirrors/Mirrors-minikube/
1.然后通过 scp 或其他方式上传到你的 Ubuntu 服务器:
scp minikube-linux-amd64 root@your-server-ip:/root/
2.在服务器上赋予执行权限并安装:
chmod +x minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
3.验证安装:
minikube version
③ 安装 Docker(如果还没装)
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
④ 启动 Minikube
minikube start –driver=docker

⑤ 验证安装
kubectl get nodes
你应该看到一个节点状态为 Ready。