K8s + docker 使用
时间: 2025-02-06 08:33:18 浏览: 54
### 结合使用 Kubernetes (K8s) 和 Docker 进行容器化应用部署与管理
#### 使用 Docker 构建镜像并推送至仓库
为了使应用程序能够通过 Kubernetes 编排,首先需要利用 Docker 创建包含该应用及其依赖环境的镜像。这一步骤涉及编写 `Dockerfile` 文件来定义所需的操作系统基础层、安装软件包以及配置服务启动命令等内容。
```dockerfile
# 使用官方 Python 映像作为父映像
FROM python:3.9-slim-buster
# 设置工作目录
WORKDIR /app
# 将当前文件夹的内容复制到容器内的 /app 目录下
COPY . .
# 安装任何所需的库或依赖项
RUN pip install --no-cache-dir -r requirements.txt
# 声明容器运行时要监听的端口
EXPOSE 5000
# 启动 Flask Web 应用程序
CMD ["python", "app.py"]
```
完成上述操作之后,可以构建 Docker 镜像并通过如下指令推送到私有或者公共注册中心:
```bash
$ docker build -t my-app .
$ docker tag my-app registry.example.com/my-app:v1
$ docker push registry.example.com/my-app:v1
```
#### 在 Kubernetes 上部署由 Docker 打包的应用实例
一旦有了可用的 Docker 镜像,在 Kubernetes 环境里就可以轻松地对其进行编排和管理了。下面是一个简单的 Pod 或者 Deployment YAML 清单的例子,它指定了所使用的 Docker 镜像以及其他必要的参数设置,比如资源请求/限制等[^2]。
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: flask-deployment
spec:
replicas: 3
selector:
matchLabels:
app: webserver
template:
metadata:
labels:
app: webserver
spec:
containers:
- name: webserver-container
image: "registry.example.com/my-app:v1"
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: flask-service
spec:
type: LoadBalancer
selector:
app: webserver
ports:
- protocol: TCP
port: 80
targetPort: 5000
```
这段清单描述了一个名为 `flask-deployment` 的副本集(Deployment),其中包含了三个相同的工作负载单元(Pod)。每个 Pod 内部都运行着之前提到过的自定义 Docker 容器,并开放了第 5000 号端口供外部访问。与此同时,还定义了一种称为 “Service”的抽象机制用来暴露这些后端组件给前端或者其他消费者调用[^4]。
当把这份清单提交给 K8s API Server 处理以后,整个集群就会自动按照指定的方式去拉取相应的 Docker 镜像并且安排合适的节点执行对应的进程;同时也会根据实际需求动态调整数量规模以维持稳定的服务质量水平。
阅读全文
相关推荐












