当前位置:实例文章 » 其他实例» [文章]极速上手k8s,Kubernetes 从入门到摸鱼系列-实践篇

极速上手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 的强大之处:它能够轻松地部署、管理和扩展应用,甚至可以持久化数据。

相关标签:云原生kubernetes容器
其他信息

其他资源

Top