作者信息:https://home.cnblogs.com/u/huangjiabobk

在K8S中,ingress该如何使用?

在Kubernetes (K8s) 中,Ingress 是一种API对象,它提供了对外部请求进入集群内部服务的一种统一入口和路由机制。Ingress控制器是一个运行在集群中的守护进程,它监听Ingress对象的变化并配置相应的负载均衡器或代理服务,以便根据定义的规则转发HTTP(S)请求到后端的Service。

以下是使用Ingress的一般步骤:

1.创建Ingress资源
  1. 定义Ingress规则
    首先,你需要编写一个YAML文件来定义Ingress资源,其中包括路由规则、TLS配置(如果需要HTTPS)以及每个规则所指向的后端服务。例如:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-ingress
      namespace: default
    spec:
      rules:
      - host: www.example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: web-service
                port:
                  name: http
      tls:
      - hosts:
        - www.example.com
        secretName: example-tls-secret
    

    在上述例子中,任何发往www.example.com主机名且路径为根(/)的请求会被转发到名为web-service的服务的http端口。

  2. 创建Ingress资源
    使用kubectl apply -f your-ingress.yaml命令将这个Ingress规则应用到Kubernetes集群中。

2.部署Ingress控制器

在能够使用Ingress之前,必须有一个正在运行的Ingress控制器,如 ingress-nginxtraefik。这些控制器会监听集群中的Ingress资源,并依据规则进行配置。

  1. 选择并安装Ingress控制器
    你可以使用官方推荐的ingress-nginx项目或者其他的第三方控制器。通过Helm chart、manifest文件或其他方法部署。

    例如,部署ingress-nginx可能包括以下步骤:

    • 获取官方chart或yaml文件。
    • 配置必要的参数,如是否启用SSL、使用的端口等。
    • 应用部署,如果是使用Helm可能是helm install nginx-ingress ingress-nginx/ingress-nginx
  2. 确保Ingress控制器可公开访问
    如果是在云环境,比如GCP、AWS或Azure,可能会需要额外的配置来创建一个LoadBalancer类型的Service关联到Ingress控制器,这样就会在云平台上生成一个公网IP地址供外部访问。
    在非云环境中,可能需要配置NodePort或使用hostPort结合hostNetwork等方式暴露服务。

3.测试和验证
  • 验证Ingress资源状态
    可以通过kubectl describe ingress example-ingresskubectl get ingress来检查Ingress资源的状态和详细信息。

  • 测试路由规则
    一旦Ingress控制器成功部署并配置了路由规则,你应该可以从外部网络按照定义的规则访问到集群内的服务。

综上所述,这就是在Kubernetes中使用Ingress的基本过程。根据实际需求,您可能需要配置更复杂的Ingress规则,例如基于路径的路由、TLS加密等。更多关于Ingress的信息,请参考官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/

posted @ 2024-02-29 10:01  黄嘉波  阅读(101)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波