Co se stane, když nasadíme aplikaci pomocí deploymentu a pak změníme verzi aplikace v replika setu?
sobes.tech AI
Odpověď od AI
Po změně verze aplikace v resource Deployment bude aktualizován i s tím související ReplicaSet. Deployment vytvoří nový ReplicaSet s novou verzí obrazu kontejneru. Starý ReplicaSet bude postupně snižován, zatímco nový ReplicaSet bude zvyšován. Tento proces se nazývá rolling update (postupná aktualizace) a je ve výchozím nastavení prováděn automaticky.
Konkrétní kroky:
- Uživatel nebo systém CI/CD aktualizuje Deployment.
- Deployment vytvoří nový ReplicaSet s definicí obsahující novou verzi obrazu.
- Nový ReplicaSet začne vytvářet pody s novou verzí.
- Jakmile část nových podů přejde do stavu
Ready, Deployment začne snižovat starý ReplicaSet odstraňováním starých podů. - Proces pokračuje, dokud všechny pody nejsou pod kontrolou nového ReplicaSetu s novou verzí.
- Starý ReplicaSet zůstává, ale s požadovaným počtem replik 0.
Toto zajišťuje nulový čas výpadku při aktualizaci aplikace (za předpokladu, že jsou k dispozici dostatečné zdroje a pody jsou správně připravené) a umožňuje snadný návrat k předchozí verzi pouhým opětovným aktualizováním Deploymentu.
Příklad aktualizace YAML Deploymentu:
# Aktualizovaný YAML Deploymentu
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25% # Maximální počet podů, které mohou být vytvořeny nad požadovaný počet
maxUnavailable: 25% # Maximální počet podů, které mohou být nedostupné během aktualizace
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-registry/my-app:v1.1.0 # Změněná verze obrazu
ports:
- containerPort: 80
Manuální změna ReplicaSetu je důrazně nedoporučována a může vést k nepředvídatelnému chování, protože Deployment se pokusí sladit stav ReplicaSetu s požadovaným stavem, přepisujíc vaše změny. Všechny spravované změny aplikace by měly být prováděny přes resource Deployment.