建立部署
適用於:Azure Local 22H2 上的 AKS、Windows Server 上的 AKS
本文提供 Kubernetes 部署的概觀,並說明如何在 Azure Arc 所啟用的 AKS 中建立和更新這些部署。
Kubernetes 部署概觀
部署是指可管理效能並指定Pod所需行為的 Kubernetes 物件。 它會指定應用程式的生命週期,包括指派給應用程式的Pod。 部署提供一種方式來傳達您應用程式所需的狀態,而控制器則可用來將目前狀態變更為您想要的狀態。
部署會將啟動Pod實例的程式自動化,並確保它們會依叢集中所有節點所定義的形式執行。 系統管理員和 IT 專業人員會使用部署來傳達他們想要的應用程式內容,然後 Kubernetes 會採取所有必要的步驟來建立應用程式所需的狀態。
雖然部署會定義應用程式的執行方式,但並不保證您的應用程式位於叢集內的位置。 例如,如果您的應用程式需要每個節點上的Pod實例,則您想要使用DaemonSet。 針對具狀態應用程式,StatefulSet 會提供唯一的網路標識碼、持續性記憶體,以及已排序的部署/調整。
Kubernetes 部署物件可讓您:
- 部署副本集或Pod。
- 相應增加或減少應用程式實例的數目。
- 更新應用程式的每個執行中實例。
- 將應用程式的所有執行中實例復原到另一個版本。
- 暫停或繼續部署。
如需詳細資訊,請參閱 Kubernetes 部署。
建立部署
若要建立部署,您可以使用 kubectl apply
或 kubectl create
命令。 由於維護及監視所需的Pod數目,因此會在建立部署之後執行並可供使用。 如果 Pod 失敗,Kubernetes 會立即推出 Pod 的複本,使其在叢集中的位置。
下列範例說明 YAML 格式的部署指令清單檔案功能:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
strategy:
type: Recreate
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
若要檢視部署、副本集和 Pod,請執行下列命令:
kubectl get deployment, replicaset, pod
更新部署
部署的主要優點是能夠自動更新 Kubernetes 程式。 如果沒有部署,您必須手動結束所有舊的 Pod、啟動新的 Pod 版本,然後執行檢查,以查看建立 Pod 時是否有任何問題。 您可以執行 kubectl describe deployment
以檢視 Pod 啟動與移除的順序。
部署會將更新程式自動化,因為您只需更新 Pod 範本或所需的狀態。 部署會以動作改變背景中的程序狀態,例如建立新的 Pod 或配置更多資源,直到選擇的更新就緒為止。
如果部署發生問題,Kubernetes 會自動回復至舊版。 您也可以使用 kubectl rollout undo
命令明確回復至特定版本,也可以使用 kubectl rollout pause
來暫時停止部署。
更新部署的策略
Kubernetes 提供數種部署策略,讓您以各種方式更新,以符合環境的需求。 最常見的三種更新策略如下:
- 滾動更新:此更新是漸進式程式,可讓您更新 Kubernetes 系統,只對效能產生輕微影響,且不會停機。 它會以更新速度的成本將停機時間降到最低。
- 娛樂:此策略是一個全無程式,可讓您在短暫的停機時間內一次更新系統的所有層面。 它會快速更新,但會導致停機時間。
- Canary:此策略是部分更新程式,可讓您在實際用戶上測試新程式版本,而不需要承諾完整推出。 稍後會快速更新少數使用者的完整推出。