极速上手k8s,Kubernetes 从入门到摸鱼系列-实践篇
发布人:shili8
发布时间:2024-12-28 12:06
阅读次数:0
**极速上手 k8s,Kubernetes 从入门到摸鱼系列 - 实践篇**
前言----
在前面的文章中,我们已经介绍了 Kubernetes 的基本概念、架构以及如何使用 Minikube 快速部署一个集群。然而,仅仅了解理论知识是不够的,真正的实践是学习 Kubernetes 最好的方式。在本文中,我们将通过一系列实践案例来深入地讲解 Kubernetes 的各个方面。
**案例1: 部署一个简单的 Web 应用**
在这个案例中,我们将部署一个简单的 Web 应用,使用 Flask 框架编写。首先,我们需要创建一个 Docker 镜像:
bash# 创建 DockerfileFROM python:3.9-slim# 安装依赖RUN pip install flask# 将应用代码拷贝到镜像中COPY . /app# 指定端口EXPOSE5000# 启动应用CMD ["python", "app.py"]
bash# 构建 Docker 镜像docker build -t my-web-app .
接下来,我们需要创建一个 Kubernetes Deployment:
yamlapiVersion: apps/v1kind: Deploymentmetadata: name: web-appspec: replicas:3 selector: matchLabels: app: web-app template: metadata: labels: app: web-app spec: containers: - name: web-app image: my-web-app:latest ports: - containerPort:5000
bash# 应用 Deployment 到集群中kubectl apply -f deployment.yaml
最后,我们可以使用 `kubectl get` 命令来查看 Deployment 的状态:
bashkubectl get deployments
**案例2: 使用 ConfigMap 和 Secret**
在这个案例中,我们将演示如何使用 ConfigMap 和 Secret 来管理应用的配置和敏感信息。
首先,我们需要创建一个 ConfigMap:
yamlapiVersion: v1kind: ConfigMapmetadata: name: web-app-configdata: DATABASE_URL: "postgresql://user:password@localhost/db"
接下来,我们需要创建一个 Secret:
yamlapiVersion: v1kind: Secretmetadata: name: web-app-secrettype: Opaquedata: API_KEY: "base64 encoded secret key"
然后,我们可以在 Deployment 中使用 ConfigMap 和 Secret:
yamlapiVersion: apps/v1kind: Deploymentmetadata: name: web-appspec: replicas:3 selector: matchLabels: app: web-app template: metadata: labels: app: web-app spec: containers: - name: web-app image: my-web-app:latest env: - name: DATABASE_URL valueFrom: configMapKeyRef: name: web-app-config key: DATABASE_URL ports: - containerPort:5000
bash# 应用 ConfigMap 和 Secret 到集群中kubectl apply -f configmap.yamlkubectl apply -f secret.yaml
最后,我们可以使用 `kubectl get` 命令来查看 ConfigMap 和 Secret 的状态:
bashkubectl get configmapskubectl get secrets
**案例3: 使用 Persistent Volume**
在这个案例中,我们将演示如何使用 Persistent Volume 来持久化应用的数据。
首先,我们需要创建一个 Persistent Volume:
yamlapiVersion: v1kind: PersistentVolumemetadata: name: web-app-pvspec: capacity: storage:5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain local: path: /mnt/data/web-app
然后,我们可以在 Deployment 中使用 Persistent Volume:
yamlapiVersion: apps/v1kind: Deploymentmetadata: name: web-appspec: replicas:3 selector: matchLabels: app: web-app template: metadata: labels: app: web-app spec: containers: - name: web-app image: my-web-app:latest volumeMounts: - name: web-app-pv mountPath: /app/data ports: - containerPort:5000
bash# 应用 Persistent Volume 到集群中kubectl apply -f pv.yaml
最后,我们可以使用 `kubectl get` 命令来查看 Persistent Volume 的状态:
bashkubectl get persistentvolumes
通过这些实践案例,我们可以看到 Kubernetes 的强大之处:它能够轻松地部署、管理和扩展应用,甚至可以持久化数据。