kubernetes 主机中所有路径的入口路由

hsgswve4  于 2022-12-29  发布在  Kubernetes
关注(0)|答案(2)|浏览(103)

我有一个使用k3s的本地测试环境。
我正试图通过入口到达一个在k3s工人之一运行的本地Jenkins吊舱。
我已经将入口对象配置为在特定主机上为所有路径应答,但它似乎不起作用。
我总是得到404在traefik日志。
是否有一种方法可以检查请求是如何流动的?
配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: jenkins
  namespace: jenkins
  labels:
    app: jenkins
spec:
  rules:
    - host: jenkins.homelab.internal
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: jenkins
                port: 
                  number: 80
628mspwn

628mspwn1#

当ingressclass.kubernetes.io/is-default-class在IngressClass资源上将www.example.com注解设置为true时,即使未指定ingressClassName字段,也会为新入口分配此默认IngressClass。

annotations:
   ingressclass.kubernetes.io/is-default-class: "true"

一个入口上的多个入口对象使用以下注解:

annotations: 
    kubernetes.io/ingress.class: nginx

确保metadata.name是独一无二的。如果每个对象的metadata.name都相同,则新配置只会替换它。
按照Ingress path matching解决您的问题,这里有一个blog解释路径匹配

ru9i0ody

ru9i0ody2#

也许你的IngressClass没有设置为默认值,所以你的入口没有分配给它。
尝试在入口中设置它的具体值:

spec:
  ingressClassName: nginx
  rules:
    ...

或者通过将您的入口类设置为默认值:

kubectl patch ingressclass nginx -p '{"metadata": {"annotations":{"ingressclass.kubernetes.io/is-default-class":"true"}}}'

其中“nginx”是您的IngressClass的名称。

相关问题