• k8s笔记 | StatefulSet 有状态


    创建一个web.yaml

    1. ---
    2. apiVersion: v1
    3. kind: Service
    4. metadata:
    5. name: nginx
    6. labels:
    7. app: nginx
    8. spec:
    9. ports:
    10. - port: 80
    11. name: web
    12. clusterIP: None
    13. selector:
    14. app: nginx
    15. ---
    16. apiVersion: apps/v1
    17. kind: StatefulSet
    18. metadata:
    19. name: web
    20. spec:
    21. serviceName: "nginx" # 使用那个service来管理dns
    22. replicas: 2
    23. selector:
    24. matchLabels:
    25. app: nginx
    26. template:
    27. metadata:
    28. labels:
    29. app: nginx
    30. spec:
    31. containers:
    32. - name: nginx
    33. image: nginx:latest
    34. ports: # 容器暴露的端口
    35. - containerPort: 80 # 具体暴露的端口号
    36. name: web #该端口配置的名字
    37. # volumeMounts:
    38. # - name: www #指定加载那个数据券
    39. # mountPath: /usr/share/nginx/html #加载到容器中的那个目录

    操作步骤如下:

    1. # 创建
    2. kubectl create sts -f web.yaml
    3. # 查看
    4. kubeclt get sts,svc,po
    5. # 查看ip信息
    6. kubectl run -it --image busybox:1.28.4 dns-test /bin/sh
    7. nslookup web-0.nginx
    8. #打印信息如下
    9. Server: 10.96.0.10
    10. Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
    11. Name: web-0.nginx
    12. Address 1: 10.244.107.210 web-0.nginx.default.svc.cluster.local
    13. # 扩容,缩容 两种方式,选择其一
    14. kubectl scale statefulset web --replicas=5
    15. kubectl patch statefulset web -p '{"spec":{"replicas":2}}'
    16. # 查看描述信息
    17. kubectl descrbe sts web
    18. ...
    19. Events:
    20. Type Reason Age From Message
    21. ---- ------ ---- ---- -------
    22. Normal SuccessfulCreate 28m statefulset-controller create Pod web-0 in StatefulSet web successful
    23. Normal SuccessfulCreate 27m statefulset-controller create Pod web-1 in StatefulSet web successful
    24. Normal SuccessfulCreate 9m13s statefulset-controller create Pod web-2 in StatefulSet web successful
    25. Normal SuccessfulCreate 8m52s statefulset-controller create Pod web-3 in StatefulSet web successful
    26. Normal SuccessfulCreate 8m32s statefulset-controller create Pod web-4 in StatefulSet web successful
    27. Normal SuccessfulDelete 6m28s statefulset-controller delete Pod web-4 in StatefulSet web successful
    28. Normal SuccessfulDelete 6m25s statefulset-controller delete Pod web-3 in StatefulSet web successful
    29. Normal SuccessfulDelete 6m23s statefulset-controller delete Pod web-2 in StatefulSet web successful

    镜像更新

    1. kubectl patch sts web --type='json' -p='[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"nginx:latest"}]'
    2. # 这里有可能报错,那就把 "nginx:1.9.1" 改为 "nginx:1.26" 请注意到hub.docker.net去查看对应的版本

    查看更新记录

    1. # 查看所有
    2. kubectl rollout history sts web
    3. # 结果
    4. statefulset.apps/web
    5. REVISION CHANGE-CAUSE
    6. 1
    7. 2
    8. # 指定查看对应的版本
    9. kubectl rollout history sts web --revision=2
    10. # 结果
    11. statefulset.apps/web with revision #2
    12. Pod Template:
    13. Labels: app=nginx
    14. Containers:
    15. nginx:
    16. Image: nginx:1.9.1
    17. Port: 80/TCP
    18. Host Port: 0/TCP
    19. Environment:
    20. Mounts:
    21. Volumes:
    22. # 查看状态
    23. kubectl rollout status sts web

    灰度发布

    利用滚动更新中的partition 属性,可以实现简易的灰度发布效果

    简介:加入我们有5个pod,如果当partition设置为3,那么此时滚动更新是,只会更新需要>=3的pod,利用该机制,我们可以通过控制partion来决定更新那一部分的内容,确定没有问题后,在逐渐增大更新pod的数量;如果partition为0 ,那表示所有的都更新

    1. # 修改sts配置文件
    2. kubectl edit sts web
    3. # 修改partition:3 和 nignx:latest
    4. # 保存退出,通过kubectl describe po web-4 和 web-0 就能看到效果

    StatefulSet的删除

    1. # 练级删除 会删除sts和pod
    2. kubectl delete sts web
    3. # 非联级删除
    4. kubectl delete sts web --cascade=false
    5. # 删除services
    6. kubectl delete svc nginx

  • 相关阅读:
    Java设计模式-结构性设计模式(享元设计模式)
    操作系统作业第8章和第9章(个人重点题目笔记)
    SpringBoot-SpringCache缓存
    【javaEE】网络原理(传输层Part2)
    linux系统网络配置
    Java Static关键字 单例设计模式
    ubuntu终端 中文显示 改为 英文显示
    CronJob运行自动化任务
    安装多个不同版本chrome浏览器
    acwing 843. n-皇后问题
  • 原文地址:https://blog.csdn.net/weixin_41104307/article/details/138202778