kubernetes配置Ingress对象时服务找不到的解决办法

本文介绍如何在Kubernetes中为非默认命名空间的服务配置Ingress规则,通过示例展示如何指定特定命名空间及使用注解进行高级配置。

由于我们的服务可能处于非default命名空间上,所以在配置Ingress规则时需要指定命名空间

例如以一面的mynamespace:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:  
  namespace: mynamespace
  name: slot-ingress
  annotations: 
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - host: xxx.mydomain.com
    http:
      paths:
      - backend:         
          serviceName: nginx-php-service
          servicePort: 80
  

 

### Kubernetes Ingress 控制器与服务网格的区别及使用场景 #### 1. 定义与功能 Kubernetes Ingress 控制器是一种用于管理外部访问的组件,主要负责将流量从集群外部路由到内部的服务。它通常通过 HTTP/HTTPS 协议实现,并支持基于路径和主机名的路由规则[^2]。Ingress 控制器的核心目标是简化外部流量的管理,同提供负载均衡、SSL/TLS 终止等功能。 服务网格(Service Mesh)则是一种更复杂的架构模式,专注于微服务之间的通信。它通过在每个服务实例旁边部署一个代理(通常是 sidecar 模式),来透明地处理服务间通信的各个方面,例如流量管理、安全性、可观测性和弹性[^1]。常见的服务网格实现包括 Istio、Linkerd 和 Consul Connect。 #### 2. 工作范围 Ingress 控制器的工作范围限于集群外部流量的入口点。它的职责是从外部客户端接收请求,并根据预定义的规则将这些请求转发到适当的后端服务Ingress 控制器不涉及服务间的内部通信或复杂的服务治理功能。 相比之下,服务网格覆盖了整个服务通信的生命周期,不仅包括外部流量的入口管理,还包括服务间的内部流量控制。例如,Istio 的 Gateway API 可以用作外部流量的入口点,而其 VirtualService 和 DestinationRule 则用于定义服务间的流量路由和策略。 #### 3. 配置方式 Ingress 控制器的配置通常是通过 Kubernetes 的原生资源对象(如 Ingress 资源)完成的。这些资源提供了声明式的配置方式,允许用户定义简单的路由规则和 TLS 设置。 服务网格的配置则更加灵活和强大,通常需要使用专门的 CRD(Custom Resource Definitions)。例如,在 Istio 中,可以通过 Gateway、VirtualService 和 DestinationRule 等 CRD 来实现复杂的流量管理策略,如金丝雀发布、故障注入和超设置[^1]。 #### 4. 使用场景 - **Ingress 控制器**:适用于需要简单外部流量管理的场景。如果应用的需求仅限于将 HTTP/HTTPS 流量路由到内部服务,那么 Ingress 控制器是一个轻量级且高效的解决方案。 - **服务网格**:适用于需要全面管理服务间通信的场景。当系统中存在大量微服务,并且需要实现复杂的流量控制、安全性增强和分布式追踪服务网格是更好的选择。 #### 5. 示例代码 以下是一个简单的 Ingress 资源示例: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: web-service port: number: 80 ``` 以下是 Istio 的 Gateway 和 VirtualService 示例: ```yaml apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: example-gateway spec: selector: istio: ingressgateway servers: - hosts: - example.com port: name: http-example number: 80 protocol: HTTP --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: example-virtualservice spec: hosts: - example.com gateways: - example-gateway http: - match: - uri: prefix: / route: - destination: host: web-service.default.svc.cluster.local port: number: 80 ``` #### 6. 性能与复杂性 Ingress 控制器通常具有较低的性能开销和配置复杂性,适合中小型应用。然而,随着需求的增长,其功能可能显得不足。 服务网格虽然功能强大,但引入了额外的复杂性和性能开销。因此,只有在确实需要其高级特性,才应考虑采用服务网格。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值