我尝试使用 istioctl 安装 istio,但从我自己的注册表中提取图像。安装时出现以下错误:
This installation will make default injection and validation pointing to the default revision, and originally it was pointing to the revisioned one.
This will install the Istio 1.22.0 "default" profile (with components: Istio core, Istiod, and Ingress gateways) into the cluster. Proceed? (y/N) y
2024-05-22T14:12:34.935176Z debug sync complete name=istiod analyzer attempt=1 time=897ns
✔ 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 "192.168.1.1:8082/pilot:1.22.0")
✘ 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: )
- Pruning removed resources Error: failed to install manifests: errors occurred during operation
我有一个 Kubernetes 集群:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
control-1 Ready control-plane,etcd,master 4d22h v1.28.7+rke2r1
control-2 Ready <none> 4d22h v1.28.7+rke2r1
control-3 Ready <none> 4d22h v1.28.7+rke2r1
该服务器没有互联网连接。 我在 192.168.1.1:8082 上运行了一个私有注册表,其中包含所需的 docker 映像。 在 control-1 上我安装了 docker。 我的/etc/docker/daemon.json:
{"insecure-registries":["192.168.1.1:8082"]}
我登录注册表:
sudo docker login 192.168.1.1:8082
我创建的凭据保存在 dockerconfig.json 下。
在 control-1 上,我可以使用以下命令成功拉取所需的图像:
sudo docker pull 192.168.1.1:8082/pilot:1.22.0
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.1:8082/pilot 1.22.0 99ceea62d078 13 days ago 200MB
我在一台有互联网连接的机器上下载了文件 istio-1.22.0-linux-.tar.gz 并将其放在 control-1 上。 然后我用以下方法提取它:
tar -xvf istio-1.22.0-linux-amd64.tar.gz
我将 istioctl 添加到路径中:
cd istio-1.22.0
export PATH=$PWD/bin:$PATH
我创建了一个秘密:
kubectl create namespace istio-system
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=/home/ubuntu/istio-1.22.0/dockerconfig.json \
--type=kubernetes.io/dockerconfigjson --namespace=istio-system
我编辑samples/operator/default-install.yaml:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
namespace: istio-system
name: istio-operator
spec:
profile: default
hub: 192.168.1.1:8082
values:
global:
imagePullSecrets:
- regcred
然后我尝试安装 istio:
istioctl install -f samples/operator/default-install.yaml
但是我陷入了上面提到的错误。
请将以下图像复制到 istio 使用的工作节点中
docker.io/istio/proxyv2:1.22.0
docker.io/istio/pilot:1.22.0
一旦图像在工作节点中可用。 请将“ImagePullPolicy”配置更新为“IfNotPresent”,该配置将传递给 istio 操作员。这是一个网格配置选项。 有关自定义安装的更多详细信息,请参阅其文档。 如果镜像已经可用,此安装配置选项不会尝试提取镜像。