以下是一個完整的例子,展示瞭如何使用Kubernetes部署一個簡單的Web應用程序。這個例子包括一個Deployment和一個Service。
首先,創建一個名爲webapp-deployment.yaml
的Deployment配置文件:
apiVersion: apps/v1 kind: Deployment metadata: name: webapp-deployment spec: replicas: 2 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: webapp image: nginx:latest ports: - containerPort: 80
這個Deployment配置將創建一個名爲webapp-deployment
的Deployment,它包含兩個副本的Pods,每個Pod都運行一個Nginx容器,監聽80端口。
接下來,創建一個名爲webapp-service.yaml
的Service配置文件:
apiVersion: v1 kind: Service metadata: name: webapp-service spec: selector: app: webapp ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
這個Service配置將創建一個名爲webapp-service
的Service,它將外部請求的80端口轉發到標籤爲app: webapp
的Pods的80端口。type: LoadBalancer
指示雲提供商爲Service提供一個外部可訪問的負載均衡器。
現在,使用kubectl
命令來創建這些資源:
kubectl apply -f webapp-deployment.yaml
kubectl apply -f webapp-service.yaml
檢查Deployment和Pods的狀態:
kubectl get deployment webapp-deployment
kubectl get pods -l app=webapp
檢查Service的狀態,並獲取外部訪問的IP地址(如果是LoadBalancer類型):
kubectl get service webapp-service
如果一切正常,你應該能夠看到Pods正在運行,Service已經分配了一個外部IP地址。你可以通過瀏覽器訪問這個IP地址來查看Nginx的默認歡迎頁面。
如果你需要更新應用程序,比如使用一個新版本的Nginx鏡像,你只需要更新webapp-deployment.yaml
文件中的鏡像標籤,並重新應用配置:
containers:
- name: webapp
image: nginx:1.19.0 # 更新爲新的鏡像版本
ports:
- containerPort: 80
然後運行:
kubectl apply -f webapp-deployment.yaml
Kubernetes將執行滾動更新,逐步替換舊的Pods,而不會中斷服務。
請記住,這個例子假設你已經有一個Kubernetes集羣在運行,並且你的kubectl配置正確。如果你使用的是雲服務提供商的Kubernetes服務,LoadBalancer類型的Service將自動爲你創建一個外部負載均衡器。如果你在本地或沒有負載均衡器的環境中運行,你可能需要使用NodePort或其他方法來暴露你的服務。