我正在尝试升级 Kubernetes 集群中的节点。当我这样做时,我会收到一条通知:
命名空间 istio-system 中的 PDB istio-ingressgateway 允许 0 个 pod 中断
PDB 是 Pod 中断预算。基本上, istio 是说它不能松开那个 pod 并保持一切正常。
在 Istio GitHub 问题上对此进行了很长时间的讨论。这个问题已经持续了2年多。大多数讨论都围绕着说默认设置是错误的。几乎没有解决方法的建议。但其中大部分是 1.4 之前的版本(以及 Istiod 的引入)。我能找到的可能与当前版本兼容的最接近的解决方法是向IstioOperator添加一些额外的副本。
我尝试了一个补丁操作(在 PowerShell 中运行):
kubectl patch IstioOperator installed-state --patch $(Get-Content istio-ha-patch.yaml -Raw) --type=merge -n istio-system
在哪里istio-ha-patch.yaml
:
spec:
components:
egressGateways:
- enabled: true
k8s:
hpaSpec:
minReplicas: 2
name: istio-egressgateway
ingressGateways:
- enabled: true
k8s:
hpaSpec:
minReplicas: 2
name: istio-ingressgateway
pilot:
enabled: true
k8s:
hpaSpec:
minReplicas: 2
我应用了它,并检查了 IstioOperator 的 yaml,它确实适用于资源的 yaml。但是入口 pod 的副本数没有增加。(它保持在 1 of 1。)
此时,我唯一的选择是卸载 Istio,应用我的更新,然后重新安装 Istio。(呸)
有没有办法让 Istio 的入口网关的副本数增加,这样我就可以在滚动节点升级时保持它的运行?