Ubuntu安装k8s

使用 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. 1.找到你的 Kubernetes 节点 IP:
  • •​​Minikube​​ 用户:
minikube ip

假设输出:192.168.49.2

  1. 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​​。

Previous Post Next Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注