初试 Docker 构建镜像到 Kubernetes 发布应用

117 阅读2分钟

从构建 Docker 镜像到部署应用至 K8s,将初步了解如何使用容器技术。至于更深入、更复杂的容器知识,那要移步到大牛写的文章。需要注意按照下述步骤进行操作前需要先安装 Docker 和 Kubernetes,对于操作系统是 Windows 的用户可以参考文章 在 Windows 上安装 Kubernetes(K8s)

Docker 构建镜像

image.png

新建文件 hello.py 并保存下方代码。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

新建文件 Dockerfile 并保存下方配置。

# syntax=docker/dockerfile:1
FROM ubuntu:22.04

# install app dependencies
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip install flask==3.0.*

# install app
COPY hello.py /

# final configuration
ENV FLASK_APP=hello
EXPOSE 8000
CMD ["flask", "run", "--host", "0.0.0.0", "--port", "8000"]

执行 docker build 命令构建镜像。

docker build -t hello:latest .

image.png

命令执行完成后 Docker Desktop 中将可以看到 hello 镜像。

image.png

Kubernetes 部署应用

点击 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/ 打开 Kubernates Dashboard 并登录。(如何启用仪表盘可以参考 在 Windows 上安装 Kubernetes(K8s))

image.png

复制下方 Deployment 配置到下方截图处并上传

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deployment
spec:
  selector:
    matchLabels:
      app: hello
  replicas: 1 # 告知 Deployment 运行 1 个与该模板匹配的 Pod
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello
        image: hello:latest
        imagePullPolicy: Never # 告知 Deployment 使用本地的镜像
        ports:
        - containerPort: 8000

image.png

image.png

复制下方 Service 配置到下方截图处并上传

apiVersion: v1
kind: Service
metadata:
  name: hello-service
spec:
  selector:
    app: hello
  ports:
    - port: 80
      targetPort: 8000
  type: LoadBalancer

image.png

image.png

访问部署的应用

点击 http://localhost:80 访问部署的 hello 应用。

image.png

到此完成从构建 Docker 镜像到部署应用至 K8s 的整个过程, 在此祝屏幕前的你事业有成,生活如意。

参考资料