Kubernetes Ingress 是一种 Kubernetes 资源对象,用于将外部请求路由到集群内部的多个服务,Ingress 通常用于 HTTP 和 HTTPS 流量,但也可以支持其他类型的流量,本文将介绍如何简单入门 Kubernetes Ingress,包括其基本概念、使用方法以及相关问题与解答。
Kubernetes Ingress 基本概念
1、1 Service
Service 是 Kubernetes 中的一个抽象,它定义了一组 Pod 的逻辑集合和这些 Pod 的访问策略,通过 Service,我们可以访问集群内部的不同服务,而不需要关心这些服务的 IP 地址和端口号。
1、2 Pod
Pod 是 Kubernetes 中最小的部署单元,它包含了一个或多个容器,每个 Pod 都有一个唯一的 IP 地址和端口号,用于与其他 Pod 通信。
1、3 Endpoint
Endpoint 是 Service 的一个实例,它包含了一组 Pod 的 IP 地址和端口号,通过 Endpoint,我们可以访问 Service 暴露出来的不同端口。
1、4 Ingress Controller
Ingress Controller 是负责处理 Ingress 资源的对象,它根据 Ingress 资源的配置信息,将外部请求路由到相应的 Service,常见的 Ingress Controller 有 Nginx、Traefik、HAProxy 等。
使用 Ingress
2、1 创建 Ingress Resource
要使用 Ingress,首先需要创建一个 Ingress Resource,以下是一个简单的 Ingress Resource YAML 文件示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: host: example.com http: paths: path: /app1 pathType: Prefix backend: service: name: app1-service port: number: 80 path: /app2 pathType: Prefix backend: service: name: app2-service port: number: 80
这个示例中,我们定义了一个名为 my-ingress
的 Ingress Resource,它将 example.com
域名下的 /app1
和 /app2
路径分别路由到名为 app1-service
和 app2-service
的服务的 80 端口。
2、2 查看 Ingress Resource
创建了 Ingress Resource 后,可以使用以下命令查看其详细信息:
kubectl get ingress my-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}' --namespace=default
这个命令会输出 Ingress Resource 当前使用的负载均衡器的 IP 地址,通常情况下,Ingress Controller 负责管理负载均衡器,因此这个 IP 地址可能会发生变化,如果需要查看具体的 Ingress Controller,可以使用以下命令:
kubectl get ingresscontrollers --namespace=default --show-labels | grep "controller-name" | cut -d "=" -f2 | xargs kubectl describe pod --namespace=default | grep "IngressController" | grep "Running" | tr " " " " | sed 's/ //g' | tr ' ' ' ' | sort | uniq | head -n10 | tail -n5 | xargs echo "---" | xargs echo "Name:" | xargs echo "Description:" | xargs echo "Labels:" | xargs echo "Annotations:" | xargs echo "-----------------------------"
这个命令会输出默认命名空间下所有正在运行的 Ingress Controller(包括 Nginx、Traefik、HAProxy)的简要信息,可以根据需要选择合适的 Ingress Controller。
原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/115170.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复