kubernetes - 如何获得更多 Istio Running 的副本?
问题描述
我正在尝试升级 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 的入口网关的副本数增加,这样我就可以在滚动节点升级时保持它的运行?
解决方案
事实证明,如果您没有使用 Istio Kubernetes Operator 安装 Istio,则无法使用我尝试过的选项。
一旦我卸载了 Istio 并使用 Operator 重新安装它,我就可以让它工作了。
虽然我没有使用 Patch 操作,但我只是做了一个kubectl apply -f istio-operator-spec.yaml
where istio-operator-spec.yaml
is:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
name: istio-controlplane
namespace: istio-system
spec:
components:
ingressGateways:
- enabled: true
k8s:
hpaSpec:
minReplicas: 2
name: istio-ingressgateway
pilot:
enabled: true
k8s:
hpaSpec:
minReplicas: 2
profile: default
推荐阅读
- sql - SQL 在定义的时间范围内将累积值分解为单个值
- ios - 将单例从 Objective C 共享到 Swift
- android - LiveData 所有者定义可能导致泄漏/保留
- css - 为什么 flex-grow 在包裹的兄弟姐妹旁边不起作用?
- laravel - v7 中的 belongsToMany 返回一个空数组
- oracle - Connection to a oracle database
- javascript - Flask:JS和Python之间的通信
- python - Issues saving frames using PIL in python. Images come out distorted on my pc, but not on a friends pc
- javascript - setState is not updating or re rendering DOM or component
- javascript - How to call pre-existing WebAssembly code from Emscripten