這篇文章已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kubernetes 入門指南 (使用 Python)
所以,您知道您想在 Kubernetes 中運行您的應用程式,但不知道從哪裡開始。或者也許您已經開始入門,但仍然不知道您不知道什麼。在本網誌中,您將逐步了解如何容器化應用程式並使其在 Kubernetes 中運行。
本逐步指南假設您是開發人員,或者至少熟悉命令列(最好是 bash shell)。
我們將會做什麼
- 取得程式碼並在本機運行應用程式
- 建立映像檔並在 Docker 中運行應用程式
- 建立部署並在 Kubernetes 中運行應用程式
先決條件
- Kubernetes 服務 - 在本逐步指南中,我使用 Docker Desktop with Kubernetes,但您可以使用其他服務。請參閱 入門指南 以取得完整清單。
- 已安裝 Python 3.7
- 已安裝 Git
容器化應用程式
在本節中,您將取得一些原始程式碼,驗證它在本機運行,然後建立應用程式的 Docker 映像檔。使用的範例應用程式是一個非常簡單的 Flask Web 應用程式;如果您想在本機測試它,您需要安裝 Python。否則,您可以跳到「建立 Dockerfile」章節。
取得應用程式程式碼
使用 git 將儲存庫複製到您的本機電腦
git clone https://github.com/JasonHaley/hello-python.git
變更到 app 目錄
cd hello-python/app
此目錄中只有兩個檔案。如果您查看 main.py 檔案,您會看到應用程式印出一個 Hello 訊息。您可以在 Flask 網站 上了解更多關於 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 所需的套件清單,將由 pip 用於安裝 Flask 庫。
注意
當您開始編寫更進階的 Python 時,您會發現不總是建議使用pip install
,並且可能希望使用 virtualenv
(或 pyenv
) 在虛擬環境中安裝您的依賴項。在本機運行
使用以下命令手動運行安裝程式和應用程式
pip install -r requirements.txt
python main.py
這將啟動一個託管您的應用程式的開發 Web 伺服器,您可以透過瀏覽至 http://localhost:5000 來查看。因為 port 5000 是開發伺服器的預設端口,所以我們不需要指定它。
建立 Dockerfile
現在您已驗證原始程式碼可以運作,容器化應用程式的第一步是建立 Dockerfile。
在 hello-python/app 目錄中,建立一個名為 Dockerfile 的檔案,內容如下,然後儲存它
FROM python:3.7
RUN mkdir /app
WORKDIR /app
ADD . /app/
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "/app/main.py"]
此檔案是 Docker 將用來建構映像檔的一組指令。對於這個簡單的應用程式,Docker 將會
- 從 Docker Hub 取得適用於 3.7 版本的官方 Python 基礎映像檔。
- 在映像檔中,建立一個名為 app 的目錄。
- 將工作目錄設定為新的 app 目錄。
- 將本機目錄的內容複製到映像檔中的新資料夾中。
- 運行 pip 安裝程式(就像我們之前做的那樣)以將需求拉取到映像檔中。
- 告知 Docker 容器監聽端口 5000。
- 配置容器啟動時使用的啟動命令。
建立映像檔
在您的命令列或 shell 中,於 hello-python/app 目錄中,使用以下命令建構映像檔
docker build -f Dockerfile -t hello-python:latest .
注意
我在這個範例中使用 :latest 標籤,如果您不熟悉它,您可能想閱讀 Docker:最新的混淆。這將執行上面列出的七個步驟並建立映像檔。要驗證映像檔是否已建立,請運行以下命令
docker image ls

應用程式現在已容器化,這表示它現在可以在 Docker 和 Kubernetes 中運行!
在 Docker 中運行
在跳入 Kubernetes 之前,讓我們先驗證它在 Docker 中是否可以運作。運行以下命令,讓 Docker 在容器中運行應用程式並將其映射到端口 5001
docker run -p 5001:5000 hello-python
現在瀏覽至 http://localhost:5001,您應該會看到「Hello from Python!」訊息。
更多資訊
在 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
如果您執行以下命令,您可以看到 Pod 正在運行
kubectl get pods

現在瀏覽至 http://localhost:6000,您應該會看到「Hello from Python!」訊息。
就是這樣!應用程式現在正在 Kubernetes 中運行!
更多資訊
摘要
在本逐步指南中,我們容器化了一個應用程式,並使其在 Docker 和 Kubernetes 中運行。這個簡單的應用程式僅觸及了可能性的表面(以及您需要學習的內容)。
下一步
如果您剛開始入門,並且本逐步指南對您很有用,那麼以下資源應該是您進一步擴展 Kubernetes 知識的良好下一步
- 微服務、Docker 和 Kubernetes 簡介 - James Quigley 的 55 分鐘影片
- 這是一個很棒的起點,因為它提供了比我在這裡可以提供的更多資訊。
- 使用 Docker 和 Kubernetes 容器化您的應用程式 - Dr Gabriel N Schenker 的免費電子書
- 這是我最喜歡的關於 Docker 和 Kubernetes 的書籍。
- Kubernetes 學習路徑:從零到英雄的 50 天 Kubernetes 之旅 - 在 Microsoft 網站上
- 這是一個 10 頁的 pdf,其中包含大量影片(與 Brendan Burns 一起)、文件網站以及適用於 Azure Kubernetes 服務的非常好的工作坊。
如何在 Docker Desktop 中啟用 Kubernetes
安裝 Docker Desktop 後,開啟「設定」

在左側選取 Kubernetes 選單項目,並驗證是否已勾選 啟用 Kubernetes。如果沒有,請勾選它並點擊右下角的 套用 按鈕
