[kubernetes]-OpenKruise原地升级statefulset

r囧r小猫 2023-01-01 07:55 239阅读 0赞
导语:今天了解了一下OpenKruise的特性。打算尝试一下

测试环境:k8s版本1.18

需要CustomResourceWebhookConversion这个特性。建议使用1.18及以上版本

811bd3ec3c676a8afea40edb48192bcb.png
先安装helm3

  1. # 先下载安装包 并解压安装。
  2. # 解压文件
  3. tar zxvf helm-v3.2.3-linux-amd64.tar.gz
  4. cd linux-amd64/
  5. cp -r helm /usr/local/bin/
  6. # 查看版本号
  7. helm version

1596ae3deb6de510f6467bb27cfe4119.png

用helm安装OpenKruise

  1. helm install kruise https://github.com/openkruise/kruise/releases/download/v0.7.0/kruise-chart.tgz --disable-openapi-validation

0eaaaf9bf45c005e0630c116848cccac.png

出现这个问题报错说是找不到集群 集群不可达

是因为helm没指定apiserver的原因,指定一下apiserver就好了。

  1. # 我的是二进制部署的1.18
  2. export KUBERNETES_MASTER=http://127.0.0.1:8080

51359c6060d0868b8b0db24df6739a6b.png

创建yaml 这个是官方demo

  1. apiVersion: apps.kruise.io/v1beta1
  2. kind: StatefulSet
  3. metadata:
  4. name: sample
  5. spec:
  6. replicas: 3
  7. serviceName: fake-service
  8. selector:
  9. matchLabels:
  10. app: sample
  11. template:
  12. metadata:
  13. labels:
  14. app: sample
  15. spec:
  16. readinessGates:
  17. # A new condition that ensures the pod remains at NotReady state while the in-place update is happening
  18. - conditionType: InPlaceUpdateReady
  19. containers:
  20. - name: main
  21. image: nginx:alpine
  22. podManagementPolicy: Parallel # allow parallel updates, works together with maxUnavailable
  23. updateStrategy:
  24. type: RollingUpdate
  25. rollingUpdate:
  26. # Do in-place update if possible, currently only image update is supported for in-place update
  27. podUpdatePolicy: InPlaceIfPossible
  28. # Allow parallel updates with max number of unavailable instances equals to 2
  29. maxUnavailable: 2

用了这个创建sts之后 kubectl get sts 是查不到statefulset的

59fe9c23afedf66c408bc2e32f83552a.png

更新镜像为1.18之后重新apply

580fd93ac86cf7096d42436426d21657.png

更新过程 如下。个人感觉是飞快。方式是是重启。

e5c8f9415a228dcf1725fc8950dd01c5.png

查看ip 并更新为原来的镜像并观察ip是否变化

发现更新过程中ip并没有变化 restart 的数量增加了一次。并且更新顺序并不是2 到1 到0 而是 1到 2到 0,即可能是无序的。并且可以看到READINESS GATES这个参数。

f857b76094770ef7eca63082405e6447.png

官方文档

https://openkruise.io/en-us/docs/what\_is\_openkruise.html

发表评论

表情:
评论列表 (有 0 条评论,239人围观)

还没有评论,来说两句吧...

相关阅读

    相关 pv+statefulset

    集群外部很多类存储。是存储工程师创建的 k8s想使用的话关联方式都不同。 因此提供了新的对象资源pv,持久卷。 他先在k8s中将pv卷创建出来。持久卷会对应到相应的