UnitedDeployment

    在这篇文章中,我们将展示yurt-app-manager如何帮助用户管理工作负载。假设我们已经拥有一个基于原生kubernetes搭建起来的OpenYurt集群,且至少有两个节点。

    • 利用deployment template创建一个UnitedDeployment
    • 查看UnitedDeployment
    1. NAME READY WORKLOADTEMPLATE AGE
    2. ud-test 3 Deployment 120m
    • 在文件uniteddeployment_deployment_test.yaml中添加patch字段,如下所示,文件36到41行
    1. $ kubectl get ud ud-test -o yaml
    2. topology:
    3. pools:
    4. - name: beijing
    5. matchExpressions:
    6. - key: apps.openyurt.io/nodepool
    7. operator: In
    8. - beijing
    9. replicas: 1
    10. patch:
    11. spec:
    12. template:
    13. spec:
    14. containers:
    15. - name: nginx
    16. image: nginx:1.19.0
    17. - name: hangzhou
    18. nodeSelectorTerm:
    19. matchExpressions:
    20. operator: In
    21. values:
    22. - hangzhou
    23. replicas: 2
    24. tolerations:
    25. ***
    • patch能够使得由UnitedDeployment创建的位于北京节点池的deployment和pod中nginx镜像版本为1.19.0,而其他地区的nginx镜像版本为1.19.3。
    • 删除后,所有由UnitedDeployment创建的pod又恢复使用相同的镜像nginx1.19.3
    1. $ kubectl get pod ud-test-beijing-fp58z-787d5b6b54-g4jk6 -o yaml
    2. containers:
    3. - image: nginx:1.19.3
    4. $ kubectl get pod ud-test-hangzhou-xv454-5cd9c4f6b5-b5tsr -o yaml
    5. containers:
    • 结论:Patch功能解决了nodepool单属性的升级和应用完整发布。