k8s学习——安装istio之dns卡壳

我准备使用istio来替代原来的traefic网关和consul服务注册发现的方案,但在安装istio过程中遇到了一些问题,把解决的过程记录下来,便于今后遇到类似问题做个参考。

istio安装的中文文档地址:Istio Prelim 1.23 / 文档

参照Istio Prelim 1.23 / 入门 官网的安装方法,首先下载istioctl,然后使用命令istioctl install以默认配置安装,正常部署会安装这两个pod

复制代码
NAME                                   READY   STATUS    RESTARTS   AGE
istio-ingressgateway-94974fc7f-cxjwz   1/1     Running   0          5d4h
istiod-54785969-6rfzh                  1/1     Running   0          5d4h

我下载的istioctl是1.22.0这个版本,在安装过程中遇到的第一个问题:镜像下拉不下来。

复制代码
可以通过
kubectl get events -n istio-system
kubectl describe pod istio-ingressgateway-94974fc7f-cxjwz -n istio-system 
kubectl describe pod istiod-54785969-6rfzh -n istio-system 
来查看问题原因。这里涉及下拉的镜像有两个:
pilot
proxyv2

在tar -xzvf istio-1.22.0-linux-amd64.tar.gz 解压后,cd到解压后的目录中查看manifest.yaml文件,可以看到其用的镜像仓库地址是docker.io/istio。这里有两种解决方案:

1、添加指定仓库的参数执行命令

bin/istioctl install --set hub=docker.m.daocloud.io/istio

2、到github下载相应版本的pilot和proxyv2打包文件通过docker本地安装,具体操作如下

复制代码
到https://gcsweb.istio.io/gcs/istio-release/releases/1.22.0/docker/网址下载
pilot.tar.gz和proxyv2.tar.gz

然后执行命令
sudo docker load -i ./pilot.tar.gz
sudo docker load -i ./proxyv2.tar.gz
sudo docker tag pilot:1.22.0 core.harbor.shell.com:443/istio/pilot:1.22.0
sudo docker tag proxyv2:1.22.0 core.harbor.shell.com:443/istio/proxyv2:1.22.0
sudo docker push core.harbor.shell.com:443/istio/pilot:1.22.0
sudo docker push core.harbor.shell.com:443/istio/proxyv2:1.22.0
将下拉不下来的两个镜像上传到自建的仓库中,然后在将下载仓库修改为本地仓库
bin/istioctl install --set hub=core.harbor.shell.com:443/istio

镜像下拉问题解决后,遇到的第二个问题是 istio-ingressgateway启动不起来。

报错类似这种

复制代码
warn	sds	failed to warm certificate: failed to generate workload certificate: create certificate: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing: dial tcp: lookup istiod.istio-system.svc: i/o timeout"

一般这种问题属于dns解析的事,根据官网的问题排除步骤可参考如下。

调试 DNS 问题 | Kubernetes

后来重启了 kube-system 下的两个coredns 的pod问题解决了

第三个问题istio-system命名空间下载svc中的istio-ingressgateway一直处于pending状态。

找了很多文档,后来在官网的Istio Prelim 1.23 / 入口网关中找到了问题的答案。

需要通过kubectl edit 将LoadBalancer模式改为NodePort模式。

相关推荐
尊治5 小时前
变频器学习入门教程
学习·esim电工仿真·电工仿真软件·电工仿真·电工接线学习·esim电工制图
tyqtyq225 小时前
旅行打包清单 App — HarmonyOS AI 应用开发技术博客
人工智能·学习·华为·生活·harmonyos
辞旧 lekkk6 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
张忠琳7 小时前
【kubernetes】Node Feature Discovery 0.20.0-devel 源码深度解析 — 第四卷:CLI入口、工具链与全局架构总结
云原生·容器·架构·kubernetes·nvidia
小弥儿8 小时前
GitHub今日热榜 | 2026-07-17:教育Agent与极低量化分庭抗礼
学习·开源·github
dtq04248 小时前
C语言-结构体详解
c语言·开发语言·学习
天选之子1239 小时前
DuckDB学习
jvm·学习
一只小菜鸡..10 小时前
Stanford CS144 学习笔记 (四):网络拥塞控制与 AIMD 算法
网络·笔记·学习
xuhaoyu_cpp_java11 小时前
SpringBoot学习(四)
java·经验分享·spring boot·笔记·学习
汪汪大队u12 小时前
【无标题】
运维·docker·kubernetes·prometheus