我正在运行一个带有Windows和Linux虚拟机的Azure AKS群集。
我可以从Istio命名空间中的Pod中按名称卷曲群集服务,因此我知道Pod的TCP工作原理。我认为我需要以某种方式通知我的虚拟服务,不要通过特使代理路由,而只是将请求直接转发到k8s服务终结点——类似于它是网格外部的虚拟机。我确实有终止于网关的TLS——k8s服务本身就在端口80上的集群内部公开。
目前,Windows容器没有特使侧车,但从k8s的角度来看,这只是Istio运行的同一集群中的另一个服务。
http网关。亚马尔
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
annotations:
name: http-gateway
namespace: istio-system
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- "*.myapp.com"
port:
number: 80
name: http-80-gateway
protocol: HTTP
tls:
httpsRedirect: true # sends 301 redirect for http requests
- hosts:
- "*.myapp.com"
port:
number: 443
name: https-443-gateway
protocol: HTTPS
tls:
credentialName: cert-azure-dns
privateKey: sds
serverCertificate: sds
mode: SIMPLE
虚拟服务。亚马尔
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp-vsvc
namespace: myapp-ns
spec:
hosts:
- foo #external DNS name is foo.myapp.com; gateway host for HTTPS is '*.myapp.com'
gateways:
- istio-system/http-gateway
http:
- route:
- destination:
host: myapp-svc.myapp-ns.svc.cluster.local
port:
number: 80
尝试特使穿越我添加了一个ServiceEntry,如下所示:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: myapp-se
namespace: myapp-ns
spec:
hosts:
- myapp-svc.myapp-ns.svc.cluster.local
ports:
- number: 80
name: http
protocol: HTTP
resolution: DNS
location: MESH_EXTERNAL
服务器响应是一个404,其“server”头值为“istio”。
DNS正在正确解析到网关,并且极致证书有效-因此此错误通常表示我已将其发送到虚拟服务,但尚未路由到群集服务。在Kiali中,我的任何yaml定义都没有Istio验证错误:虚拟服务、服务条目或网关。
我的全球。境外交通政策。模式设置为“允许任何”。
我想知道为集群服务声明“外部网格”是否有问题?Istio知道k8s服务存在,所以它是否试图优先路由到特使侧车,而忽略我的服务条目注册?
对于特定的IP范围,有一个完全绕过特使的选项,如果我能在这个特定的集群服务上设置一个静态IP,这将是一个选项。我想绕过特使进入这个单集群服务。
我可以发誓我以前尝试过这个,但显然我需要提供的只是一个简单的虚拟服务,没有任何目的地规则或服务入口。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp-vsvc
namespace: myapp-ns
spec:
hosts:
- foo.myapp.com
gateways:
- istio-system/http-gateway
http:
- route:
- destination:
host: myapp-svc.myapp-ns.svc.cluster.local
port:
number: 80
您可以使用serviceentry
来执行以下操作:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: httpbin-ext
spec:
hosts:
- httpbin.org
ports:
- number: 80
name: http
protocol: HTTP
resolution: DNS
location: MESH_EXTERNAL
https://istio.io/docs/tasks/traffic-management/egress/egress-control/
这起作用了 这不是
我有一个用于测试本地docker、本地Kubernetes和Istio设置的演示应用程序。最初,我将演示服务公开为type=NodePort,它可以正常工作http://localhost: 部署后,导航到http://localhost/会出现HTTP 404错误。服务、VS、网关在集群上一切看起来都很好。因为我是新来的,我不确定我是否在Istio或库伯内特斯身上错过了一些基本的东西。
我正在测试gke入口以将流量路由到两个不同的服务。我的部署包括一个基本的Web容器,它部署了一个默认的蓝色网页和一个绿色网页。我能够得到响应本质上,“/”适用于蓝色或绿色部署。但是当我转到超文本传输协议:///绿色时,我得到了404响应。我已经用“/”作为绿色部署进行了测试,它显示了一个绿色网页。但是如果我转到超文本传输协议:///蓝色,它会导致404响应, 我已经通过将负载平衡器直接连接到容器上
据我所知,在Google Cloud Run上部署容器有两种方式: 云运行完全管理:它由GCP独立管理,无需我们创建集群 云运行for Anthos:这需要我们创建一个支持云运行的GKE集群 我想选择第二个选项,但希望将GKE集群保持为私有,这样就不允许任何外部通信。
是否可以使用serviceaccount令牌获得k8s群集访问权限? 我的脚本没有访问kubeconfig文件的权限,但是,它可以访问/var/run/secrets/kubernetes处的服务帐户令牌。io/serviceaccount/token。 以下是我尝试过的步骤,但不起作用。 kubectl配置设置凭据sa用户--令牌=$(cat/var/run/secrets/kubernetes
我正在Kubernetes集群中运行2个服务。 价格SVC 服务以“ClusterIP”类型部署,入口(netcalar)位于服务前面。 调度运行良好,我可以从库伯内特斯集群外部访问调度。 现在,尝试从pricesvc访问计划vc。我可以使用ClusterIP服务endpoint或入口。由于我计划在多个数据中心运行库伯内特斯集群,因此我将在DC的Active/Active中运行我的应用程序,因此我