按关键词阅读: Docker Kubernetes 容器 Pod Google
Kubernetes 为用户提供了:
- 服务发现和负载平衡
- 存储编排
- 自动退出和回退
- 自动打包
- 自我修复
- 秘密配置管理
对于那些想从头开始构建 Web 应用程序的人 , 有一些前提条件 , 即:
- 对 Docker、Docker 容器和 Docker 镜像的基本了解 。 可以访问 这里 快速了解 。
- 系统中应该安装 Docker 。
- 系统中应该安装 Kubernetes , 有关如何在本地计算机上安装的说明 , 请访问 这里。
mkdir flask-kubernetes/app && cd flask-kubernetes/app接下来 , 在 flask-kubernetes/app 目录中 , 创建一个名为 main.py 的文件 , 如下面的代码片段所示:
touch main.py在新创建的 main.py 文件中 , 粘贴下面代码:
from flask import Flaskapp = Flask(__name__) @app.route("/")def hello(): return "Hello from Kubernetes!" if __name__ == "__main__": app.run(host='0.0.0.0')使用下面命令在本地安装 Flask:
pip install Flask==0.10.1Flask 安装后 , 执行下面的命令:
python app.py应该在本地 5000 端口运行 Flask 服务器 , 这是 Flask 应用程序的默认端口 , 并且你可以在 http://localhost:5000 上看到输出 “Hello from Kubernetes!” 。 服务器在本地运行之后 , 我们创建一个供 Kubernetes 使用的 Docker 镜像 。 创建一个名为 Dockerfile 的文件 , 并将以下代码片段粘贴到其中:
FROM python:3.7 RUN mkdir /appWORKDIR /appADD . /app/RUN pip install -r requirements.txt EXPOSE 5000CMD ["python", "/app/main.py"]Dockerfile 文件的说明如下:
- Docker 将从 DockerHub 获取 Python 3.7 镜像 。
- 将在镜像中创建一个应用程序目录 。
- 它将一个 /app 目录设置为工作目录 。
- 将内容从主机中的应用程序目录复制到镜像应用程序目录 。
- 发布端口 5000 。
- 最后 , 它运行命令 , 启动 Flask 服务器 。
docker build -f Dockerfile -t flask-kubernetes:latest .创建 Docker 镜像后 , 我们可以使用以下命令在本地运行该镜像进行测试:
docker run -p 5001:5000 flask-kubernetes通过运行容器在本地完成测试之后 , 我们需要在 Kubernetes 中部署它 。 我们将首先使用 kubectl 命令验证 Kubernetes 是否正在运行 。 如果没有报错 , 则说明它正在工作 。 如果有报错 , 请参考 该信息。
接下来 , 我们创建一个部署文件 。 这是一个 Yaml 文件 , 其中包含有关 Kubernetes 的说明 , 该说明涉及如何以声明性的方式创建 Pod 和服务 。 因为我们有 Flask Web 应用程序 , 我们将创建一个 deployment.yaml 文件 , 并在其中包含 Pod 和服务声明 。
创建一个名为 deployment.yaml 的文件并向其中添加以下内容 , 然后保存:
apiVersion: v1kind: Servicemetadata: name: flask-kubernetes -servicespec: selector: app: flask-kubernetes ports: - protocol: "TCP" port: 6000 targetPort: 5000 type: LoadBalancer---apiVersion: apps/v1kind: Deploymentmetadata: name: flask-kubernetesspec: replicas: 4 template: metadata: labels: app: flask-kubernetes spec: containers: - name: flask-kubernetes image: flask-kubernetes:latest imagePullPolicy: Never ports: - containerPort: 5000使用以下命令将 yaml 文件发送到 Kubernetes:
kubectl apply -f deployment.yaml如果执行以下命令 , 你会看到 Pod 正在运行:
kubectl get pods现在 , 导航至 http://localhost:6000 , 你应该会看到 “Hello from Kubernetes!”消息 。 成功了! 该应用程序现在正在 Kubernetes 中运行!
Kubernetes 做不了什么?Kubernetes 不是一个传统的 , 包罗万象的 PaaS(平台即服务)系统 。由于 Kubernetes 运行在容器级别而非硬件级别 , 因此它提供了 PaaS 产品共有的一些普遍适用功能 , 如部署、扩展、负载平衡、日志记录和监控 。 Kubernetes 为开发人员平台提供了构建块 , 但在重要的地方保留了用户的选择和灵活性 。