调试虚拟机
此页面介绍如何对部署到虚拟机的 Istio 进行故障排除。在阅读本文档之前,您应该按照虚拟机安装中的步骤操作。此外,虚拟机架构可以帮助您了解组件之间的交互方式。
对 Istio 虚拟机安装进行故障排除类似于对在 Kubernetes 内部运行的代理进行故障排除,但需要注意一些关键区别。
虽然这两个平台上提供了许多相同的信息,但访问这些信息的方式有所不同。
监控健康状况
Istio sidecar 通常作为 systemd
单元运行。要确保其正常运行,您可以检查其状态
$ systemctl status istio
此外,可以通过其健康端点以编程方式检查 sidecar 的健康状况
$ curl localhost:15021/healthz/ready -I
日志
Istio 代理的日志可以在几个地方找到。
要访问包含代理初始化详细信息的 systemd
日志
$ journalctl -f -u istio -n 1000
代理会将 stderr
和 stdout
分别重定向到 /var/log/istio/istio.err.log
和 /var/log/istio/istio.log
。要以类似于 kubectl
的格式查看这些日志
$ tail /var/log/istio/istio.err.log /var/log/istio/istio.log -Fq -n 100
可以通过更改 cluster.env
配置文件来修改日志级别。如果 Istio 已经在运行,请确保重新启动它
$ echo "ISTIO_AGENT_FLAGS=\"--log_output_level=dns:debug --proxyLogLevel=debug\"" >> /var/lib/istio/envoy/cluster.env
$ systemctl restart istio
Iptables
要确保已成功应用 iptables
规则
$ sudo iptables-save
...
-A ISTIO_OUTPUT -d 127.0.0.1/32 -j RETURN
-A ISTIO_OUTPUT -j ISTIO_REDIRECT
Istioctl
大多数 istioctl
命令都可以在虚拟机上正常运行。例如,istioctl proxy-status
可用于查看所有连接的代理
$ istioctl proxy-status
NAME CDS LDS EDS RDS ISTIOD VERSION
vm-1.default SYNCED SYNCED SYNCED SYNCED istiod-789ffff8-f2fkt 1.24.0
但是,istioctl proxy-config
依赖于 Kubernetes 中连接到代理的功能,这在虚拟机上将无法使用。相反,可以传递包含来自 Envoy 的配置转储的文件。例如
$ curl -s localhost:15000/config_dump | istioctl proxy-config clusters --file -
SERVICE FQDN PORT SUBSET DIRECTION TYPE
istiod.istio-system.svc.cluster.local 443 - outbound EDS
istiod.istio-system.svc.cluster.local 15010 - outbound EDS
istiod.istio-system.svc.cluster.local 15012 - outbound EDS
istiod.istio-system.svc.cluster.local 15014 - outbound EDS
自动注册
当虚拟机连接到 Istiod 时,将自动创建 WorkloadEntry
。这使虚拟机能够成为 Service
的一部分,类似于 Kubernetes 中的 Endpoint
。
要检查这些是否正确创建
$ kubectl get workloadentries
NAME AGE ADDRESS
vm-10.128.0.50 14m 10.128.0.50
证书
虚拟机处理证书的方式与 Kubernetes Pod 不同,后者使用 Kubernetes 提供的服务帐户令牌来认证和续订 mTLS 证书。相反,使用现有的 mTLS 凭据来对证书颁发机构进行认证并续订证书。
可以像在 Kubernetes 中一样查看这些证书的状态
$ curl -s localhost:15000/config_dump | ./istioctl proxy-config secret --file -
RESOURCE NAME TYPE STATUS VALID CERT SERIAL NUMBER NOT AFTER NOT BEFORE
default Cert Chain ACTIVE true 251932493344649542420616421203546836446 2021-01-29T18:07:21Z 2021-01-28T18:07:21Z
ROOTCA CA ACTIVE true 81663936513052336343895977765039160718 2031-01-26T17:54:44Z 2021-01-28T17:54:44Z
此外,这些证书会持久保存到磁盘,以确保停机或重启不会丢失状态。
$ ls /etc/certs
cert-chain.pem key.pem root-cert.pem