在自动定条件下重新部署时Kubernetes滚动更新不服从“maxUnavailable”副本

问题描述 投票:8回答:1

概括地说,我们的大部分应用程序的配置与部署以下strategy -

  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate

水平波德自动配置器被配置为这样

spec:
  maxReplicas: 10
  minReplicas: 2

现在,当我们的应用程序重新部署,而不是运行滚动更新,它会立即终止我们的豆荚8和丢弃的豆荚数量2这是最小数量的可用副本。这是发生在一秒钟的一小部分,你可以在这里看到。

enter image description here

这里是kubectl get hpa的输出 -

enter image description here

由于maxUnavailable为25%,不仅应约2-3豆荚在最大下去?没有那么多的豆荚为什么崩溃一次?这好像滚动更新是无用的,如果是这样工作的。

我在想什么?

deployment kubernetes autoscaling
1个回答
2
投票

在看这个问题后,我决定用测试的环境,我想检查如果它不工作,试试这个。

我已经设置了metrics-server获取度量服务器,并设置一个HPA。我按照以下步骤设置在HPA和部署:

How to Enable KubeAPI server for HPA Autoscaling Metrics

有一次,我有工​​作HPA和最大10 pods系统上运行,我已经更新使用图片:

[root@ip-10-0-1-176 ~]# kubectl get hpa
NAME         REFERENCE               TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   49%/50%   1         10        10         87m

[root@ip-10-0-1-176 ~]# kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
load-generator-557649ddcd-6jlnl   1/1     Running   0          61m
php-apache-75bf8f859d-22xvv       1/1     Running   0          91s
php-apache-75bf8f859d-dv5xg       1/1     Running   0          106s
php-apache-75bf8f859d-g4zgb       1/1     Running   0          106s
php-apache-75bf8f859d-hv2xk       1/1     Running   0          2m16s
php-apache-75bf8f859d-jkctt       1/1     Running   0          2m46s
php-apache-75bf8f859d-nlrzs       1/1     Running   0          2m46s
php-apache-75bf8f859d-ptg5k       1/1     Running   0          106s
php-apache-75bf8f859d-sbctw       1/1     Running   0          91s
php-apache-75bf8f859d-tkjhb       1/1     Running   0          55m
php-apache-75bf8f859d-wv5nc       1/1     Running   0          106s
[root@ip-10-0-1-176 ~]# kubectl set image deployment php-apache php-apache=hpa-example:v1 --record
deployment.extensions/php-apache image updated

[root@ip-10-0-1-176 ~]# kubectl get pods
NAME                              READY   STATUS              RESTARTS   AGE
load-generator-557649ddcd-6jlnl   1/1     Running             0          62m
php-apache-75bf8f859d-dv5xg       1/1     Terminating         0          2m40s
php-apache-75bf8f859d-g4zgb       1/1     Terminating         0          2m40s
php-apache-75bf8f859d-hv2xk       1/1     Terminating         0          3m10s
php-apache-75bf8f859d-jkctt       1/1     Running             0          3m40s
php-apache-75bf8f859d-nlrzs       1/1     Running             0          3m40s
php-apache-75bf8f859d-ptg5k       1/1     Terminating         0          2m40s
php-apache-75bf8f859d-sbctw       0/1     Terminating         0          2m25s
php-apache-75bf8f859d-tkjhb       1/1     Running             0          56m
php-apache-75bf8f859d-wv5nc       1/1     Terminating         0          2m40s
php-apache-847c8ff9f4-7cbds       1/1     Running             0          6s
php-apache-847c8ff9f4-7vh69       1/1     Running             0          6s
php-apache-847c8ff9f4-9hdz4       1/1     Running             0          6s
php-apache-847c8ff9f4-dlltb       0/1     ContainerCreating   0          3s
php-apache-847c8ff9f4-nwcn6       1/1     Running             0          6s
php-apache-847c8ff9f4-p8c54       1/1     Running             0          6s
php-apache-847c8ff9f4-pg8h8       0/1     Pending             0          3s
php-apache-847c8ff9f4-pqzjw       0/1     Pending             0          2s
php-apache-847c8ff9f4-q8j4d       0/1     ContainerCreating   0          4s
php-apache-847c8ff9f4-xpbzl       0/1     Pending             0          1s

另外,我一直在后台工作,这推动了kubectl get pods输出每秒在文件中。在任何时候,直到所有图像都升级,豆荚数从来没有低于8。

我相信你需要检查你如何设置你的滚动升级。您使用的部署或replicaset?我一直在rolling update策略一样的,你maxUnavailable: 25%与部署maxSurge: 25%,它是为我工作很好。

© www.soinside.com 2019 - 2024. All rights reserved.