Files
Kubernetes/使用文档/通过副本控制实现金丝雀发布.md
offends 89a07bc062
All checks were successful
continuous-integration/drone Build is passing
first commit
2025-12-20 21:10:05 +08:00

79 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# 通过副本控制实现金丝雀发布
[官方文档](https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/#canary-deployment)
## 通过副本数控制
**操作步骤:**
1. 先部署稳定版本v19个副本
2. 部署金丝雀版本v21个副本
3. Service会自动将约9%的流量1/10导向v2
4. 观察监控如果v2正常逐步增加v2副本数减少v1副本数
## 开始部署
部署测试示例 Nginx Deployment v1和v2
1. 部署 Pod-Nginx-v1
```bash
kubectl apply -f https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/nginx-deployment-v1.yaml
```
2. 部署 Pod-Nginx-v2
```bash
kubectl apply -f https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/nginx-deployment-v2.yaml
```
3. 修改副本数数量
- v1 配置为 9
```bash
kubectl scale deployment/nginx-deployment-1 --replicas=9
```
- v2 配置为 1
```bash
kubectl scale deployment/nginx-deployment-2 --replicas=1
```
4. 部署 Service同时选择v1和v2的Pod
```yaml
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: nginx-deployment-service
spec:
selector:
app: nginx # 同时选择两个版本的Pod
ports:
- port: 80
targetPort: 80
EOF
```
5. 修改权重将流量导向 v2
- 逐步增加 v2
```bash
kubectl scale deployment/nginx-deployment-2 --replicas=10
```
- 降低 v1
```bash
kubectl scale deployment/nginx-deployment-1 --replicas=0
```
6. 中途访问 Nginx 发现正在随着我们扩展和缩小副本数量,逐步迁移流量。