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

相关推荐
__雨夜星辰__17 分钟前
Linux 学习笔记__Day2
linux·服务器·笔记·学习·centos 7
学问小小谢19 分钟前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
charlie1145141914 小时前
从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(协议层封装)
c语言·驱动开发·单片机·学习·教程·oled
Linux运维老纪5 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
马船长5 小时前
[BSidesCF 2020]Had a bad day1
学习
黄交大彭于晏5 小时前
三端回链增加截图功能
学习
linwq85 小时前
设计模式学习(二)
java·学习·设计模式
Fhd-学习笔记6 小时前
《大语言模型》综述学习笔记
笔记·学习·语言模型
简知圈7 小时前
【04-自己画P封装,并添加已有3D封装】
笔记·stm32·单片机·学习·pcb工艺
YxVoyager8 小时前
GAMES101学习笔记(五):Texture 纹理(纹理映射、重心坐标、纹理贴图)
笔记·学习·图形渲染