在通过手动安装(Releases · istio/istio)完成istioctl工具后,通过以下命令安装Istio
XML
istioctl install --set profile=demo -y
在通过dockers desktop安装过程中总是遇到奇怪的网络下载问题,如:
XML
✔ Istio core installed ⛵️
✘ Istiod encountered an error: failed to wait for resource: resources not ready after 5m0s: context deadline exceeded
Deployment/istio-system/istiod (container failed to start: ImagePullBackOff: Back-off pulling image "docker.io/istio/pilot:1.31.0": ErrImagePull: failed to pull and unpack image "docker.io/istio/pilot:1.31.0": failed to resolve reference "docker.io/istio/pilot:1.31.0": unexpected status from HEAD request to http://registry-mirror:1273/v2/istio/pilot/manifests/1.31.0?ns=docker.io: 500 Internal Server Error)
✘ Egress gateways encountered an error: failed to wait for resource: resources not ready after 5m0s: context deadline exceeded
Deployment/istio-system/istio-egressgateway (container failed to start: ContainerCreating: )
✘ Ingress gateways encountered an error: failed to wait for resource: resources not ready after 5m0s: context deadline exceeded
Deployment/istio-system/istio-ingressgateway (container failed to start: ContainerCreating: )
Error: failed to install manifests: 3 errors occurred:
* failed to wait for resource: resources not ready after 5m0s: context deadline exceeded
Deployment/istio-system/istiod (container failed to start: ImagePullBackOff: Back-off pulling image "docker.io/istio/pilot:1.31.0": ErrImagePull: failed to pull and unpack image "docker.io/istio/pilot:1.31.0": failed to resolve reference "docker.io/istio/pilot:1.31.0": unexpected status from HEAD request to http://registry-mirror:1273/v2/istio/pilot/manifests/1.31.0?ns=docker.io: 500 Internal Server Error)
* failed to wait for resource: resources not ready after 5m0s: context deadline exceeded
Deployment/istio-system/istio-egressgateway (container failed to start: ContainerCreating: )
* failed to wait for resource: resources not ready after 5m0s: context deadline exceeded
Deployment/istio-system/istio-ingressgateway (container failed to start: ContainerCreating: )
这里的解决方案是:
1.打开 Docker Desktop → Settings → Docker Engine ,在 JSON 配置中找到 registry-mirrors 字段,删除或修正无效的地址,只保留如下的镜像地址,然后重启dockers desktop
XML
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.m.daocloud.io"
]
2.手动安装pilot
XML
docker pull docker.io/istio/pilot:1.31.0
# 使用本地策略
istioctl install --set profile=demo --set values.global.imagePullPolicy=IfNotPresent -y
这次安装完成后Istio安装成功,但是但是Egress和Ingress网关却失败了,接下来,我们继续安装
3.手动拉取proxy
XML
# 拉取proxy代理
docker pull docker.io/istio/proxyv2:1.31.0
# 删除两个网关 Deployment
kubectl delete deployment istio-ingressgateway -n istio-system
kubectl delete deployment istio-egressgateway -n istio-system
最后在重新安装
XML
istioctl install --set profile=demo --set values.global.imagePullPolicy=IfNotPresent -y
这样所有的安装都成功了。验证网关 Pod 状态
XML
kubectl get pods -n istio-system -w
在这个过程中如果有安装失败的情况,我们先要清理数据
XML
# 卸载
istioctl uninstall --purge -y
# 删除命名空间
kubectl delete namespace istio-system
# 清理 webhook
kubectl delete validatingwebhookconfiguration istio-validator-istio-system 2>$null
kubectl delete mutatingwebhookconfiguration istio-sidecar-injector 2>$null