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模式。

相关推荐
烤麻辣烫14 分钟前
黑马程序员苍穹外卖(新手)DAY6
java·开发语言·学习·spring·intellij-idea
Xudde.2 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
AA陈超3 小时前
Git常用命令大全及使用指南
笔记·git·学习
麦麦在写代码3 小时前
前端学习5
前端·学习
降临-max4 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
大白的编程日记.5 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
运维-大白同学6 小时前
2025最全面开源devops运维平台功能介绍
linux·运维·kubernetes·开源·运维开发·devops
u***42077 小时前
Golang 构建学习
开发语言·学习·golang
车载测试工程师8 小时前
CAPL学习-IP API函数-2
网络·学习·tcp/ip·capl·canoe
YJlio9 小时前
进程和诊断工具学习笔记(8.29):ListDLLs——一眼看清进程里加载了哪些 DLL,谁在偷偷注入
android·笔记·学习