Kubernetes入门(使用Python)
作者:Jason Haley(独立顾问)
因此,您知道要在Kubernetes中运行应用程序,但不知道从何处开始。也许您正在起步,但仍然不知道自己不知道什么。在此博客中,您将逐步了解如何对应用程序进行容器化并使其在Kubernetes中运行。
本演练假定您是开发人员,或者至少对命令行感到满意(最好是bash shell)。
我们会做什么
- 获取代码并在本地运行应用程序
- 创建映像并在Docker中运行应用程序
- 在Kubernetes中创建部署并运行应用程序
先决条件
- Kubernetes服务-我正在使用 带有Kubernetes的Docker桌面 在本演练中,您可以使用其他方法之一。看到 入门 以获得完整的清单。
- Python 3.7 已安装
- 吉特 已安装
容器化应用程序
在本部分中,您将获取一些源代码,验证其是否在本地运行,然后创建该应用程序的Docker映像。所使用的示例应用程序是一个非常简单的Flask Web应用程序。如果要在本地进行测试,则需要安装Python。否则,您可以跳到“创建Dockerfile”部分。
获取应用程序代码
使用git将存储库克隆到本地计算机:
git clone //github.com/JasonHaley/hello-python.git
转到应用程序目录:
cd hello-python/app
此目录中只有两个文件。如果您查看main.py文件,则会看到该应用程序打印出问候消息。您可以在 Flask网站.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from Python!"
if __name__ == "__main__":
app.run(host='0.0.0.0')
requirements.txt文件包含main.py所需的软件包列表,并且将由 点子 安装Flask库。
注意: When you start writing more advanced Python, you'll find it's not always recommended to use点子 安装
and may want to usevirtualenv
(orpyenv
) to 安装 your dependencies in a virtual environment.
在本地运行
使用以下命令手动运行安装程序和应用程序:
点子 安装 -r requirements.txt
python main.py
This will start a development web server hosting your application, which you will be able to see by navigating to http://localhost:5000. Because port 5000 is the default port for the development server, we didn’t need to specify it.
创建一个Dockerfile
既然您已经验证了源代码的工作原理,那么将应用程序容器化的第一步就是创建一个Dockerfile。
在hello-python / app目录中,创建一个具有以下内容的名为Dockerfile的文件并将其保存:
FROM python:3.7
RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN 点子 安装 -r requirements.txt
EXPOSE 5000
CMD ["python", "/app/main.py"]
该文件是Docker用来构建映像的一组指令。对于这个简单的应用程序,Docker将:
- 取得官方 Python基础图片 适用于Docker Hub的3.7版。
- 在图像中,创建一个名为app的目录。
- 将工作目录设置为该新应用程序目录。
- 将本地目录的内容复制到该新文件夹中。
- 运行pip安装程序(就像我们之前所做的一样)将需求拉入映像。
- 通知Docker容器在端口5000上侦听。
- 配置启动命令以在容器启动时使用。
建立影像
在命令行或shell的hello-python / app目录中,使用以下命令构建映像:
docker build -f Dockerfile -t hello-python:latest .
这将执行上面列出的七个步骤并创建映像。要验证是否创建了映像,请运行以下命令:
docker image ls
该应用程序现已容器化,这意味着它现在可以在Docker和Kubernetes中运行!
在Docker中运行
在进入Kubernetes之前,让我们验证一下它是否可以在Docker中工作。 运行以下命令以使Docker在容器中运行该应用程序并将其映射到端口5001:
docker run -p 5001:5000 hello-python
现在导航到http:// localhost:5001,您应该看到“ Hello form Python!”。信息。
更多信息
- 开始使用Docker
- 编写Dockerfile的最佳实践
- Docker备忘单 (pdf)
在Kubernetes中运行
您终于可以在Kubernetes中运行该应用程序了。因为您具有Web应用程序,所以将创建服务和部署。
首先验证您的kubectl已配置。在命令行中,键入以下内容:
kubectl version
如果您没有看到有关客户端和服务器版本的回复,则需要 安装 并配置它。
如果您在Windows或Mac上运行,请通过运行以下命令确保它正在使用Docker for Desktop上下文:
kubectl config use-context docker-for-desktop
现在您正在使用Kubernetes!您可以通过键入以下内容查看该节点:
kubectl get nodes
现在让它运行应用程序。创建一个名为deployment.yaml的文件,并将以下内容添加到其中,然后将其保存:
apiVersion: v1
kind: Service
metadata:
name: hello-python-service
spec:
selector:
app: hello-python
ports:
- protocol: "TCP"
port: 6000
targetPort: 5000
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-python
spec:
selector:
matchLabels:
app: hello-python
replicas: 4
template:
metadata:
labels:
app: hello-python
spec:
containers:
- name: hello-python
image: hello-python:latest
imagePullPolicy: Never
ports:
- containerPort: 5000
该YAML文件是Kubernetes想要运行的指令。它告诉Kubernetes以下内容:
- 您想要一个负载平衡的服务公开端口6000
- 您要运行四个hello-python容器实例
通过运行以下命令,使用kubectl将YAML文件发送到Kubernetes:
kubectl apply -f deployment.yaml
如果执行以下命令,则可以看到容器正在运行:
kubectl get pods
现在,浏览至http:// localhost:6000,您应该会看到“ Hello form Python!”。信息。
而已!该应用程序现在正在Kubernetes中运行!
更多信息
概要
在本演练中,我们将一个应用程序容器化,并使其在Docker和Kubernetes中运行。这个简单的应用程序仅能触及所有可能的内容(以及您需要学习的内容)。
下一步
如果您只是入门,而本演练对您很有用,那么以下资源将是您进一步扩展Kubernetes知识的良好下一步:
- 微服务,Docker和Kubernetes简介 -詹姆斯·奎格利(James Quigley)的55分钟视频
- 这是一个很好的起点,因为它提供的信息比我在这里提供的更多。
- 使用Docker和Kubernetes容器化您的应用程序 -Gabriel N Schenker博士提供的免费电子书
- 这是我最喜欢的关于Docker和Kubernetes的书。
- Kubernetes学习路径:从零到使用Kubernetes成为英雄的50天 -在Microsoft网站上
- 这是一个10页的pdf文件,其中包含大量的视频链接(使用Brendan Burns),文档站点以及Azure Kubernetes Service的一个非常好的研讨会。
如何在Docker桌面中启用Kubernetes
安装Docker Desktop后,打开“设置”:
选择 Kubernetes 左侧的菜单项,并验证 启用Kubernetes 被检查。如果不是, 检查 然后点击 应用 右下角的按钮: