当前位置: 首页 > 知识库问答 >
问题:

配置Istio、Kubernetes和MetalLB以使用Istio LoadBalancer

隆选
2023-03-14
  • 金属(版本0.7.3)
  • Kubernetes(版本1.12.2)
  • ISTIO(版本1.0.3)

我会从什么起作用开始。

所有补充服务均已部署,大部分正在工作:

    null
kubectl get svc -n istio-system
NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                                                                   AGE
grafana                  ClusterIP      10.109.247.149   <none>          3000/TCP                                                                                                                  9d
istio-citadel            ClusterIP      10.110.129.92    <none>          8060/TCP,9093/TCP                                                                                                         28d
istio-egressgateway      ClusterIP      10.99.39.29      <none>          80/TCP,443/TCP                                                                                                            28d
istio-galley             ClusterIP      10.98.219.217    <none>          443/TCP,9093/TCP                                                                                                          28d
istio-ingressgateway     LoadBalancer   10.108.175.231   192.168.1.191   80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:30805/TCP,8060:32514/TCP,853:30601/TCP,15030:31159/TCP,15031:31838/TCP   28d
istio-pilot              ClusterIP      10.97.248.195    <none>          15010/TCP,15011/TCP,8080/TCP,9093/TCP                                                                                     28d
istio-policy             ClusterIP      10.98.133.209    <none>          9091/TCP,15004/TCP,9093/TCP                                                                                               28d
istio-sidecar-injector   ClusterIP      10.102.158.147   <none>          443/TCP                                                                                                                   28d
istio-telemetry          ClusterIP      10.103.141.244   <none>          9091/TCP,15004/TCP,9093/TCP,42422/TCP                                                                                     28d
jaeger-agent             ClusterIP      None             <none>          5775/UDP,6831/UDP,6832/UDP,5778/TCP                                                                                       27h
jaeger-collector         ClusterIP      10.104.66.65     <none>          14267/TCP,14268/TCP,9411/TCP                                                                                              27h
jaeger-query             LoadBalancer   10.97.70.76      192.168.1.193   80:30516/TCP                                                                                                              27h
prometheus               ClusterIP      10.105.176.245   <none>          9090/TCP                                                                                                                  28d
zipkin                   ClusterIP      None             <none>          9411/TCP                                                                                                                  27h
kubectl expose deployment enrich-dev --type=LoadBalancer --name=enrich-expose
NAME             TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)           AGE
enrich-expose    LoadBalancer   10.108.43.157   192.168.1.192   31380:30170/TCP   73s
enrich-service   ClusterIP      10.98.163.217   <none>          80/TCP            57m
kubernetes       ClusterIP      10.96.0.1       <none>          443/TCP           36d
apiVersion: v1
kind: Service
metadata:
  name: enrich-service
  labels:
    run: enrich-service
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
  selector:
    app: enrich

网关

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: enrich-dev-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - "*"

虚拟服务

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: enrich-virtualservice
spec:
  hosts:
  - "enrich-service.default"
  gateways:
  - mesh
  http:
  - match:
    - port: 80
    route:
    - destination:
        host: enrich-service.default
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: enrich-destination
spec:
  host: enrich-service.default
  trafficPolicy:
    loadBalancer:
      simple: LEAST_CONN
  subsets:
  - name: v1
    labels:
      app: enrich

我仔细检查了一下,这不是DNS的问题,因为我可以通过busybox或使用K8S仪表板进入入口网关的shell

nslookup enrich-service.default
curl -f http://enrich-service.default/
[2018-11-01T03:07:54.351Z] "GET /metadataHTTP/1.1" 404 - 0 0 1 - "192.168.1.90" "curl/7.58.0" "6c1796be-0791-4a07-ac0a-5fb07bc3818c" "enrich-service.default" "-" - - 192.168.224.168:80 192.168.1.90:43500
[2018-11-01T03:26:39.339Z] "GET /HTTP/1.1" 404 - 0 0 1 - "192.168.1.90" "curl/7.58.0" "ed956af4-77b0-46e6-bd26-c153e29837d7" "enrich-service.default" "-" - - 192.168.224.168:80 192.168.1.90:53960

共有1个答案

巫经义
2023-03-14

只是为了在我的例子中解决这个问题。配置错误是从Kubernetes集群初始化开始的。我曾申请:

kubeadm init --pod-network-cidr=n.n.n.n/n --apiserver-advertise-address 0.0.0.0

pod-network-cidr使用与部署Kubernetes安装的本地LAN相同的地址范围,即Ubuntu主机的桌面使用与Id分配给容器网络的相同的IP子网。

在大多数情况下,一切都运行良好,如上文所述,直到Istio代理试图将数据包从外部负载均衡器IP地址路由到碰巧位于同一子网上的内部IP地址。使用Kubernetes的Project Calico似乎能够处理它,因为这是有效的第3/4层策略,但Istio在L7中遇到了问题(尽管它在Calico下面)。

 类似资料:
  • 我们有一个Istio集群,我们正在尝试为Kubernetes配置水平pod自动Scale。我们希望使用请求计数作为HPA的自定义度量。我们如何利用伊斯蒂奥的普罗米修斯来达到同样的目的?

  • 我正在尝试用cert-manager、istio ingress和LetsEncrypt在kubernetes中配置SSL证书。我已经安装了istio和helm,cert-manager,创建了ClusterIssuer,然后我试图创建一个证书。acme挑战无法验证,我正在尝试使用http01进行验证,但无法解决如何使用istio ingress进行验证的问题。Istio部署有以下选项: 证书配置

  • 我正在为Istio gRPC开发POC,Istio版本是1.6,但是我看不到任何gRPC流量。 我怀疑我的Istio Gateway或VirtualService遗漏了什么,但我不知道这里出了什么问题?有人能帮我查看yaml文件并纠正我的yaml中缺失或错误的地方吗? 请给予指导,谢谢。

  • 在OpenShift上部署Istio 1.1.2之后,有一个istio-ingress网关路由及其关联的服务和pod。 我已成功使用该入口网关访问应用程序,并使用*作为主机配置网关和虚拟服务。 不过,我想配置一个域,例如insuranceinc。是的,访问应用程序。根据文档,我有一个Istio配置: 网关: 虚拟服务 如果我做这个卷发调用... ... 我可以在入口网关吊舱中看到404错误: 这是

  • MetalLB MetalLB is a load-balancer implementation for baremetal Kubernetes clusters, using standardrouting protocols. Check out MetalLB's website for moreinformation. Contributing We welcome contribut

  • 我开始在库伯内特斯上构建一个Postgresql哈集群,使用的是sesrew网格istio。在命名空间中启用istion注入之前,我尝试了不带istio的方法。它运行良好。启用istio注入后,statefulset中的第二个pod无法通过无头服务连接到集群中的第一个pod。 我删除了在掌舵安装下创建的网络策略。 为了自己测试它,我使用postgresql客户端创建了一个pod Istio代理日志