first commit
All checks were successful
continuous-integration/drone Build is passing

This commit is contained in:
2025-12-20 21:10:05 +08:00
commit 89a07bc062
343 changed files with 27636 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
> 本文作者:丁辉
# 通过副本控制实现金丝雀发布
[官方文档](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 发现正在随着我们扩展和缩小副本数量,逐步迁移流量。