首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

istio 问题排查: 使用 apollo 的 java 应用启动报 404

本文摘自 istio 学习笔记 问题描述 项目中使用了 apollo 插件,在非 istio 环境正常运行,但部署到 istio 后启动报类似如下错误: Sync config from upstream...所有可能的 PortIP:Port,请求 headless service 的 Pod 时,这里先匹配上。...然后走到 RDS 规则进行路由,路由时会匹配 hosts,hosts 列表中列举了所有可能的 service 地址 (没有 Pod IP),如果都匹配不到就会返回 404。...为了实现高可用,apollo 的 java 客户端默认是 meta server 中获取 config service 的 ip 地址 (服务发现),然后直接对该地址发起请求 (不使用 k8s service...),从而导致请求 config service 时没有将其 k8s service 地址作为 Host,最后 hosts 匹配不到返回 404

1.6K71

istio 常见异常分析

Service 端口命名约束 istio 支持多平台,不过 Istiok8s 的兼容性是最优的,不管是设计理念,核心团队还是社区, 都有一脉相承的意思。...但 istiok8s 的适配并非完全没有冲突, 一个典型问题就是 istio 需要 k8s service 按照协议进行端口命名(port naming)。...客户端收到的异常响应,诸如 403、404、503 或者连接中断等,可能是链路中任一 sidecar 执行流量管控的结果, 但也有可能是来自某个服务的合理逻辑响应。...)只开启了端口 a 和 b,因此最终 LB 端口 b 进来的流量才能被 istio gateway 管控。...Istio Gateway 和 k8s Service 没有直接的关联,二者都是通过 selector 去绑定 pod,实现间接关联 Istio CRD Gateway 只实现了将用户流控规则下发到网格边缘节点

3.6K62
您找到你想要的搜索结果了吗?
是的
没有找到

Dubbo 在 K8s 下的思考

市场上占据统治地位,如 etcd,Istio 等都采用 gRPC 作为通信工具;Service Mesh 开始概念上就火热,现在逐渐走向成熟,Istio + Envoy (其他 sidecar )逐渐开始走上舞台...Istio + Envoy ? Istio 的控制层会向 K8s 的 Api server 请求并监听 pod 信息,service 信息等信息。...这样 Istio 中就有了完整的 K8s 集群中的 Pod,service 等的完整信息。如果 K8s 集群中有信息变更,istio 中也可以得到通知并更新对应的信息。...Dubbo + Istio + Envoy Dubbo 可以直接使用指定 ip+端口 的方式调用同一个 pod 下 Envoy (也可能是同一个node的Envoy)。...当做了改造成应用级别的服务注册或者直接使用 K8s 自带的 Pod 发现机制的话,需要做一些改造,这部分改造,和前面提到的一样,放到其他文章里单独说明。

1.5K50

5分钟安装Kubernetes+带你轻松安装istio服务网格指南

好的,现在我们开始安装istio吧。由于istio需要使用代理,所以我已经提前准备好了相应版本的istio安装包。接下来,只需将安装包直接复制到虚拟机中即可开始安装。...然而,我知道当安装istio时,它会在k8s中启动一个pod。于是,我决定直接查看后台启动日志,这样或许能找到问题的所在。因此,现在我们可以开始学习一些关于k8s命令的知识了。...kubectl get pods -n为了查看istio-system命名空间下的pod状态,你可以使用以下命令:kubectl get pods -n istio-system。...启动日志中可以看出,它被安装在了kube-flannel命名空间中。现在,我们来查看一下它的Pod情况。...对于初学者来说,我建议基础版镜像开始慢慢构建istio,这样可以更好地学习k8s的命令。

28720

KubeEdge | 边缘计算基本功--云原生

get svc istio-ingressgateway -n istio-system # 访问网关 # 访问 / 提示 404 # 访问 /productpage 会被转发到 productpage...: 手动安装到自动化安装, 配置管理工具到镜像, 物理机到虚拟机到容器 声明式 API 举例: K8s 的 API 对象包括 Pod、Service、Deployment、Namespace、ConfigMap...服务, 用于解析服务名称, 通常使用 CoreDNS 作为 DNS 服务 pod: K8s 中的最小调度单元, 通常包含一个或多个容器, 通常使用 YAML 或 JSON 文件定义, 通常使用 kubectl...Envoy 作为 Sidecar istio: istio 是一个开源的服务网格框架, 用于管理微服务之间的通信, istio 通常使用 Sidecar 模式实现, istio 通常使用 Envoy 作为...Sidecar bookinfo 升级版: 与之前不同的是 不同服务之间的通信不再使用 K8s 的 Service, 而是使用 istio 的 Service, 通信方式不再是 HTTP, 而是使用

482100

在Kubernetes生产环境中运行Istio

数据平面使用边车代理容器(sidecar proxy container)实现,默认使用Envoy。为了确保Istio对应用完全透明,还实现了自动插入机制。最新的实现支持K8S 1.9和更新版本。...对于老K8S版本,可以使用初始化器(Initializer)。 边车容器通过GRPC协议连接到Pilot,该协议优化了对集群变化的推送实现机制。Envoy 1.6版本就开始使用GPRC了。...Istio-init容器是一个脚本,用于设置pod的iptables规则。有两种方式可配置将网络流量导入istio-agent容器:使用redirect iptables规则或TPROXY。...安装好以后,边车容器会被注入服务pod,Envoy会被启动起来,Pilot接受数据并开始处理请求。 这里关键的一点是,所有控制平面组件都是无状态的,因此很容器水平扩展。...在多集群部署中,需要考虑以下限制: CIDR Pod和服务CIDR必须是集群间唯一,而且不能重叠。 所有CIDR Pod都能在集群内被访问。 所有K8S API 服务器都能被互访。

1.5K20

istio在vm上的流量治理

先决条件 •虚拟机两台 第一台作为k8s 部署istio,第二台作为vm,系统为centos8,centos 7要升级glibc 麻烦的很,第二台通过静态路由访问 k8s内部的pod, 本环境: vm1...: 192.168.8.131vm1上k8s pod cird: 10.201.0.0/24vm2: 192.168.8.170vm2添加静态路由:route add -net 10.201.0.0 gw...它仅旨在与非k8s工作负载(例如虚拟机)一起使用,并且旨在模仿现有的用于Kubernetes工作负载的Sidecar注入和部署规范模型,以引导Istio代理。...#istio-token:用于CA获取证书的Kubernetes令牌。#mesh.yaml:提供其他Istio元数据,包括网络名称,信任域和其他值。#root-cert.pem:用于认证的根证书。...-p tcp -m tcp --dport 53 -j REDIRECT --to-ports 15053 ISTIO_META_DNS_CAPTURE正常只能影响k8s上管理的pod,但是在cluster.env

2.2K32

Istio 学习笔记:Istio CNI 插件

设计目标 当前实现将用户 pod 流量转发到 proxy 的默认方式是使用 privileged 权限的 istio-init 这个 init container 来做的(运行脚本写入 iptables...),Istio CNI 插件的主要设计目标是消除这个 privileged 权限的 init container,换成利用 k8s CNI 机制来实现相同功能的替代方案 原理 Istio CNI Plugin...不是 istio 提出类似 k8s CNI 的插件扩展机制,而是 k8s CNI 的一个具体实现 k8s CNI 插件是一条链,在创建和销毁pod的时候会调用链上所有插件来安装和卸载容器的网络,istio...CNI Plugin 即为 CNI 插件的一个实现,相当于在创建销毁pod这些hook点来针对istiopod做网络配置:写入iptables,让该 pod 所在的 network namespace...工作流程 复制 Istio CNI 插件二进制程序到CNI的bin目录(即kubelet启动参数--cni-bin-dir指定的路径,默认是/opt/cni/bin) 使用istio-cni-node

2.2K61

(译)HTTP Egress 流量的监控和访问策略管理

Istio 的主要功能就是在服务网格内部管理微服务之间的通信,除此之外,Istio 还能对 Ingress(外部进入网格) 和 Egress(网格发出到外部) 流量进行管理。...使用 Grafana 进行指标可视化:Istio Dashboard 在网格流量监控方面的作用。 基础访问控制:网格内服务的访问控制问题。 安全访问控制:如何使用黑名单和白名单配置访问策略。...预备使用 policics 命名空间中的 sleep pod 来发送请求,这里定义一个环境变量来保存 Pod 名称。... $SOURCE_POD 发送到 cnn.com 的请求: $ kubectl exec -it $SOURCE_POD -c sleep -- bash -c 'curl -sL -o /dev/null... $SOURCE_POD_IN_POLITICS 发送到 cnn.com 的请求: $ kubectl exec -it $SOURCE_POD_IN_POLITICS -n politics -c

1.6K20

从一到万的运维之路,说一说VMDockerKubernetesServiceMesh

注意从一步开始,我们已经可以使用普通的操作用户来操作k8s集群。而这两条命令,实际就是执行两个Pod,这两个Pod就赋予了容器网络功能。...k8s基本使用 先从执行一个容器开始,当然这个容器在k8s中是以Pod的形式执行的。...上面介绍的,是使用VMWare起步,到Docker,再延伸而来的习惯,是基于映像文件的使用方法。k8s的魅力远非止步于此。...k8s也支持json格式的配置文件,只是网上大多数存在的资源都已经使用了yaml,所以建议你也yaml开始,跟社区保持相同。...服务部分,单纯指令上跟前面k8s的示例没有区别,但是我们并没有定义服务类型比如NodePort。这是因为,我们使用的是Istio服务网格,虽然运行在k8s环境下,但并不需要k8s的网络代理功能。

2.5K60

istio 庖丁解牛(一) 组件概览

Mesh 领域的集大成者, 提供了流控, 安全, 遥测等模型, 其功能复杂, 模块众多, 有较高的学习和使用门槛, 本文会对istio 1.1 的各组件进行分析, 希望能帮助读者了解istio各组件的职责...、以及相互的协作关系. 1. istio 组件构成 以下是istio 1.1 官方架构图: 1.png 虽然Istio 支持多个平台, 但将其与 Kubernetes 结合使用,其优势会更大, Istio.../cmd/mixs citadel istio/citadel istio_ca istio/security/cmd/istio_ca 另外还有2个命令不在上图中使用: 命令 源码入口 作用 mixc...这在Mesh Expansion特性中会用到, 即k8s和vm打通. 2.2 istio/proxy https://github.com/istio/proxy 该项目本身不会产出镜像, 它可以编译出一个...Istio Pod 概述 3.1 数据面用户Pod 数据面用户Pod注入的内容包括: initContainer istio-init: 通过配置iptables来劫持Pod中的流量, 转发给envoy

2.1K50

Knative通过外部域名访问集群内服务

"1"问题就解决了,即**ISTIO_META_HTTP10: '"1"'** 404 Not Found 这个问题就涉及到VirtualService了,简称vs,在介绍vs之前我们先大致过一下knative...可以看到knative封装的太好了,极大的简化了用户操作,对于对集群没有高级需求的用户非常友好,同时也有利于我们快速入门,否则,如果要执行一堆命令的话,就真的可以入门到放弃了 但是我们毕竟是管理员,还是要对自己提高要求的...了解源码也是必须的,说到源码,只能感叹knative的源码要比k8s的源码封装的好太多了,其中一个原因也使得益于k8s提供的丰富的扩展机制:crd、operator、informer、webhook等。...for _, match := range http.Match { match.Authority = nil } } } 可以看到整体修改很少,修改完之后重新编译,制作镜像,修改线上Pod...knative中很多类型的属性并没有在上层暴露,导致无法直接使用ksvc进行管理,要么改源码,要么自己负责管理原本由ksvc统一管理的组件,虽然更加灵活,但是使用成本也更高,违背ksvc设计的初衷 通过此次问题排查

1.3K20

Istio 组件概览

Istio 作为 Service Mesh 领域的集大成者, 提供了流控, 安全, 遥测等模型, 其功能复杂, 模块众多, 有较高的学习和使用门槛, 本文会对istio 1.1 的各组件进行分析, 希望能帮助读者了解...istio各组件的职责、以及相互的协作关系. 1. istio 组件构成 以下是istio 1.1 官方架构图: image.png 虽然Istio 支持多个平台, 但将其与 Kubernetes 结合使用.../cmd/mixs citadel istio/citadel istio_ca istio/security/cmd/istio_ca 另外还有2个命令不在上图中使用: 命令 源码入口 作用 mixc...这在Mesh Expansion特性中会用到, 即k8s和vm打通. 2.2 istio/proxy https://github.com/istio/proxy 该项目本身不会产出镜像, 它可以编译出一个...Istio Pod 概述 3.1 数据面用户Pod 数据面用户Pod注入的内容包括: initContainer istio-init: 通过配置iptables来劫持Pod中的流量, 转发给envoy

1.6K21

控制pod内container执行顺序的几种姿势

介绍 在使用k8s的过程中在特定场景可能需要控制pod的执行顺序,接下来我们将学习各个开源组件的实现方式 istio中的实现 今天在测试istio新功能时注意到istio中添加了values.global.proxy.holdApplicationUntilProxyStarts...postStart: exec: command: - pilot-agent - wait 熟悉k8s...这里就来到了一个误区,大家可能都认为pod的初始化容器完成后,将并行启动pod的常规容器,事实上并不是。...自有的Sidecar container Kubernetes 1.18可以将容器标记为sidecar,以便它们在正常容器之前启动,而在所有其他容器终止后关闭。...目前istio并未使用该方式保证istio-proxy容器的启动顺序,可能是基于版本考虑,并且Sidecar container。

7.9K51

从一个例子入手Istio

Istio里面有很多有趣的内容,希望大家能一起来学习,感受Istio的魅力,当然Istio是和k8s是分不开的,所以也需要掌握了一定k8s知识能力才能进行学习,还没有掌握的同学不妨看看我的系列文章来进行学习...安装 Istio 本地需要准备一台机器上面安装有K8s,可以使用我在讲k8s的时候部署的机器:1.深入k8sk8s部署&在k8s中运行第一个程序。...安装好之后会安装一个新的namespace:istio-system 我们可以指定ns来获取它下面的pod: [root@localhost ~]# kubectl get pod -n istio-system...namespace default istio-injection=enabled 这里istio会利用k8s的webhook机制为每个创建的pod都自动注入sidecar,具体是如何做的,下一篇我们再讲...为了能让应用程序可以外部访问 k8s 集群,需要安装gateway: [root@localhost ~]# kubectl apply -f samples/bookinfo/networking/

65720

如何为服务网格选择入口网关?

Istio Sidecar Proxy 如何外部网络访问 Kubernetes的Pod IP和Cluster IP都只能在集群内部访问,而我们通常需要从外部网络上访问集群中的某些服务,Kubernetes...但是,Istio并没有为入口网关提供一个较为完善的解决方案。 K8s Ingress 在0.8版本以前,Istio缺省采用K8s Ingress来作为Service Mesh的流量入口。...K8s Ingress统一了应用的流量入口,但存在两个问题: K8s Ingress是独立在Istio体系之外的,需要单独采用Ingress rule进行配置,导致系统入口和内部存在两套互相独立的路由规则配置...K8s Ingress rule的功能较弱,不能在入口处实现和网格内部类似的路由规则,也不具备网格sidecar的其它能力,导致难以整体上为应用系统实现灰度发布、分布式跟踪等服务管控功能。...K8s Ingress或者Istio Gateway的规范之中。

1.3K31

K8S 1.18版本将内置支持SideCar容器。

一、前言 Kubernetes的目标不仅是使分布式应用程序的部署和运维变得简单可靠,还旨在能轻松地创建“云原生”应用程序,即易于创建在云环境中运行的分布式应用程序和服务,于是1.18版本开始K8S将原生支持生命周期类型为...由于Pod中的常规容器之间没有区别,因此无法控制哪个容器首先启动或最后终止,但是先正确运行Sidecar容器通常是应用程序容器正确运行的要求。 Pod启动 让我们看一个Istio服务网格示例。...三、解决方案 为了彻底解决上述痛点,1.18版本开始,K8S内置的Sidecar功能将确保边车在正常业务流程开始之前就启动并运行,即通过更改pod的启动生命周期,在init容器完成后启动sidecar...五、如何使用新功能?...Pod中,可以看出此功能将从根本上解决目前很多使用边车模式存在的问题。

1.9K30
领券