在 K8s 上构建和部署容器化应用程序(Building and Deploying Containerized Applications on k8s)
在 Kubernetes 上构建和部署容器化应用程序
Kubernetes 是一个用于管理容器化工作负载和服务的开源平台。它提供了一个强大的框架来自动化部署、扩展和管理容器化应用程序。本博客将指导您完成在 Kubernetes 上构建和部署容器化应用程序的过程,重点介绍技术方面并使用代码块来清晰地说明。
先决条件
在深入部署过程之前,请确保您已满足以下先决条件:
-
Kubernetes 集群:正在运行的 Kubernetes 集群。您可以使用 Minikube 设置本地集群,也可以使用 Google Kubernetes Engine (GKE) 等托管服务。
-
kubectl:用于与 Kubernetes 集群交互的命令行工具。
-
Docker:已在您的机器上安装并运行。
-
容器化应用程序:您的应用程序打包到 Docker 镜像中。
步骤 1:创建 Docker 映像
首先,您需要为应用程序创建一个 Docker 映像。这涉及编写一个 Dockerfile,用于指定基础映像、复制应用程序代码并设置运行应用程序的命令。
FROM python:3.9-slim# 设置容器中的工作目录
WORKDIR /app
# 将当前目录内容复制到容器中的 /app
COPY . /app
# 安装 requirements.txt 中指定的任何所需包
RUN pip install --no-cache-dir -r requirements.txt
# 使端口 80 可供容器外部使用
EXPOSE 80
# 定义环境变量
ENV NAME World
# 在容器启动时运行 app.py
CMD [ "python" , "app.py" ]
使用 Dockerfile 构建 Docker 映像:
docker build -t my-python-app .
第 2 步:将 Docker 镜像推送到注册表
将 Docker 镜像推送到 Docker Hub 或 Google Container Registry 等容器注册表。此步骤是 Kubernetes 在部署期间提取镜像所必需的。
docker tag my-python-app:latest <your-docker-hub-username>/my-python-app:latest
docker push <your-docker-hub-username>/my-python-app:latest
步骤 3:创建 Kubernetes 部署
Kubernetes 部署是一种管理应用程序新版本发布的资源。它可确保在任何给定时间运行指定数量的应用程序副本(即副本)。
创建一个名为deployment.yaml
以下内容的 YAML 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-python-app
spec:
replicas: 3
selector:
matchLabels:
app: my-python-app
template:
metadata:
labels:
app: my-python-app
spec:
containers:
- name: my-python-app
image: <your-docker-hub-username>/my-python-app:latest
ports:
- containerPort: 80
将部署配置应用到您的 Kubernetes 集群:
kubectl apply -f deployment.yaml
步骤 4:创建 Kubernetes 服务
Kubernetes 服务为访问您的应用程序提供网络身份和负载平衡。创建一个名为 YAML 的文件,service.yaml
内容如下:
apiVersion: v1
kind: Service
metadata:
name: my-python-app-service
spec:
selector:
app: my-python-app
ports:
- name: http
port: 80
targetPort: 80
type: LoadBalancer
将服务配置应用到您的 Kubernetes 集群:
kubectl apply -f service.yaml
步骤 5:验证部署
检查您的部署和服务的状态:
kubectl get deployments
kubectl get pods
kubectl get svc
您应该会看到您的部署和服务以指定数量的副本运行。
步骤 6:访问应用程序
要访问您的应用程序,您需要获取服务的外部 IP 地址:
kubectl get svc my-python-app-service -o jsonpath='{.status.loadBalancer.ingress.hostname}'
打开 Web 浏览器并导航到外部 IP 地址以访问您的应用程序。
结论
在 Kubernetes 上构建和部署容器化应用程序涉及创建 Docker 映像、将其推送到注册表、定义 Kubernetes 部署和服务以及将这些配置应用于集群。此过程可确保您的应用程序可扩展、可管理且可访问。Kubernetes 为平台工程提供了一个强大的平台,使您能够高效地自动化和管理复杂的部署。